Appearance
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)
18.05.2024
Development Kit
2
Umgang mit ESD empfindlicher Hardware
... in nicht-ESD-gerechter Umgebung
- Wegen statischer Ladung: Immer erst Ground des Boards berühren (Ethernet Connector, USB Connector), da Pins sonst beschädigt werden könnten.
18.05.2024
Development Kit
3
FTDI USB - Serial Adapter
- Adpaterkabel besitzt 3 Pins
- Ground (Schwarz)
- RX (Gelb)
- TX (Rot)
18.05.2024
Development Kit
4
Ground nie auf 5V verbinden!!
⚡ Kurzschlussgefahr - Auf dem Raspberry nie 5V auf FTDI GND verbinden (RPI Pins 2 und 4)
18.05.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.
18.05.2024
Development Kit
7
Partitionierung
Bezeichnung | FS | Grösse | Inhalt |
---|---|---|---|
Boot | FAT32 | ~100MB | Kernel, bootloader config, Device Tree Bindings, sichtbar auch unter MAC OS und Windows |
RFS | ext4 | Rest | User Space, Partition wird von Windows typischerweise nicht erkannt |
18.05.2024
Development Kit
8
Block Devices unter Linux
- Ganzes Device
- Unter
/dev/sda
,/dev/sdb
,/dev/mmcblk0
- Direkter Zugriff auf RAW Storage
- Unter
- Paritionen mit Nummerierung
/dev/sda1
,/dev/sda2
, etc.- Werden ins FS "gemountet"
18.05.2024
Development Kit
9
Tools zur Partitionierung / Kopieren von Daten
Command | |
---|---|
dd | Direktes Schreiben von Blöcken mit if und of |
fdisk | Partitionierung der SD-Karte |
cfdisk | Partitionierung mit minimalem Console-GUI |
df du | Disk Utilization |
lsblk | Anzeigen aller Blockdevices inkl. Mounting point |
mount | Blockdevice in File System einbinden |
18.05.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.
18.05.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 unmounten
sudo umount /dev/sdX*
# Nach dem Schreiben alle Buffer synchronisieren (flushen)
sync
18.05.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
odersync
sind nicht alle Operationen beendet - ... das kann zu Schaden am FS führen und im schlimmsten Falls sogard das Blockdevice beschädigen.
18.05.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
18.05.2024
Development Kit
14
Was sind Vor- und Nachteile von einem General Purpose Linux OS auf Embedded?
18.05.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.
18.05.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
18.05.2024
Development Kit
18
Development Runtimes / Frameworks
- Python vorinstalliert
- Umfangreiche Library für Peripherie
- Open JDK
- RUST mit Cargo
- NodeJS
- Apache / MySQL
18.05.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
18.05.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
18.05.2024