Skip to content
Development Kit
1

Raspberry Pi Devkit ​

  • Raspberry Pi 4B
  • 2GB RAM
  • USB - Ethernet Adapter
  • Raspberry Pi Sense Board
  • Power Supply 5V / 3A
  • micro SD-Karte
  • USB Cardreader
  • Ethernet Cable
  • USB Serial Adapter (FTDI UART)
05.03.2024
Development Kit
2

Umgang mit EMV Empfindlicher Hardware ​

... in nicht-EMV-gerechter Umgebung

  • Wegen statischer Ladung: Immer erst Ground des Boards berühren (Ethernet Connector, USB Connector), da Pins sonst beschädigt werden könnten.
05.03.2024
Development Kit
3

FTDI USB - Serial Adapter ​

  • Adpaterkabel besitzt 3 Pins
    • Ground (Schwarz)
    • RX (Gelb)
    • TX (Rot)
05.03.2024
Development Kit
4

Ground nie auf 5V verbinden!! ​

⚡ Kurzschlussgefahr - Auf dem Raspberry nie 5V auf FTDI GND verbinden (RPI Pins 2 und 4)

05.03.2024
Development Kit
5

Was ist bei SD-Karten zu beachten? ​

05.03.2024
Development Kit
6

SD-Karte ​

  • Das Raspberry PI verfügt über kein internes Flash (eMMC) für Kernel und Root File System.
  • ... es wird also defaultmässig von der SD-Karte gebootet.
05.03.2024
Development Kit
7

Partitionierung ​

BezeichnungFSGrösseInhalt
BootFAT32~100MBKernel, bootloader config, Device Tree Bindings, sichtbar auch unter MAC OS und Windows
RFSext4RestUser Space, Partition wird von Windows typischerweise nicht erkannt
05.03.2024
Development Kit
8

Block Devices unter Linux ​

  • Ganzes Device
    • Unter /dev/sda, /dev/sdb, /dev/mmcblk0
    • Direkter Zugriff auf RAW Storage
  • Paritionen mit Nummerierung
    • /dev/sda1, /dev/sda2, etc.
    • Werden ins FS "gemountet"
05.03.2024
Development Kit
9

Tools zur Partitionierung / Kopieren von Daten ​

Command
ddDirektes Schreiben von Blöcken mit if und of
fdiskPartitionierung der SD-Karte
cfdiskPartitionierung mit minimalem Console-GUI
df duDisk Utilization
lsblkAnzeigen aller Blockdevices inkl. Mounting point
mountBlockdevice in File System einbinden
05.03.2024
Development Kit
10

Disk Images ​

  • Ganzes Blockdevice Sektor für Sektor
  • inklusive Partition Table und Patitionen
  • oft mit Endung .iso, .img.
  • oft gezippt oder mit xz komprimiert.
05.03.2024
Development Kit
11

dd - convert and copy a file ​

bash
# File auf die SD-Karte schreiben (block /dev/sdX)

dd if=diskimage.img of=/dev/sdX

# Zuerst alle partitionen unmountend

sudo umount /dev/sdX*

# Nach dem Schreiben alle Buffer synchronisieren (flushen)

sync
05.03.2024
Development Kit
12

Immer sync nach dem schreiben ​

Writes werden vom OS bei dd aber auch bei anderen FS Operationen "gechached", so dass ein Programm nicht blockieren muss, bis alle Sektoren übertragen und geschrieben wurden.

  • d.h. im Hintergrund wird auch nach Programmende immer noch geschrieben.
  • entfernt man das Medium nun ohne unmount oder sync sind nicht alle Operationen beendet
  • ... das kann zu Schaden am FS führen und im schlimmsten Falls sogard das Blockdevice beschädigen.
05.03.2024
Development Kit
13

dd - sync ​

  • Progress anzeigen und nicht im Memory zwischenbuffern
bash
dd if=diskimage.img of=/dev/sdX oflag=direct,sync status=progress

# Mit Blocksize

dd if=diskimage.img of=/dev/sdX oflag=direct,sync status=progress bs=1M

## immer sync 👍
sync

# optimale Blocksize bestimmmen
sudo blockdev --getbsz /dev/sdX
05.03.2024
Development Kit
14

Was sind Vor- und Nachteile von einem General Purpose Linux OS auf Embedded? ​

05.03.2024
Development Kit
15

Konfiguration von Raspberry Pi OS ​

  • Raspberry Pi OS basiert auf Debian
  • Minimale Version / Desktop Version
    • wir werden das Raspberry "headless", also ohne Display verwenden
  • Basisinstallation umfass vollständige BASH und typischen GNU User Space.
  • Packagemanagement mit apt bietet updates von Packages und viele bereitstehende Softwarepakete.
05.03.2024
Development Kit
16

Raspberry Pi OS ist nicht minimal ​

  • Nicht genau für eine bestimmte Applikation zugeschnitten
  • ... daher in vielen Fällen "overhead"
    • Memory Footprint
    • Disk Footprint
    • Surface Area (Security)
    • Background Processes
05.03.2024
Development Kit
17

Welchen Nutzen bietet Raspberry Pi OS im Bezug auf App-Entwicklung? ​

05.03.2024
Development Kit
18

Development Runtimes / Frameworks ​

  • Python vorinstalliert
    • Umfangreiche Library für Peripherie
  • Open JDK
  • RUST mit Cargo
  • NodeJS
  • Apache / MySQL
05.03.2024
Development Kit
19

systemd als Startup / Service Management ​

  • Erlaubt das konfigurieren von System Services units
  • Realtiv komplex und z.T. ausgeklügelt
    • Dependencies
    • Error Conditions
    • Retries
  • Bringt einfaches Networking mit
    • DHCP
    • Host Resolution
    • Interface Config
  • Raspberry Pi OS Config
    • ssh File auf Boot Partition "enabled" den SSH Dienst
05.03.2024
Development Kit
20

Bootloader ​

  • Closed Source
    • vs. uBoot bei vielen anderen Boards
  • als Binary auf eMMC auf dem Board
  • wird über Files in der Boot Partition konfiguriert
    • cmdline.txt
    • config.txt
05.03.2024