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)
16.05.2023
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.
16.05.2023
Development Kit
3
FTDI USB - Serial Adapter #
- Adpaterkabel besitzt 3 Pins
- Ground (Schwarz)
- RX (Gelb)
- TX (Rot)
16.05.2023
Development Kit
4
Ground nie auf 5V verbinden!! #
⚡ Kurzschlussgefahr - Auf dem Raspberry nie 5V auf FTDI GND verbinden (RPI Pins 2 und 4)
16.05.2023
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.
16.05.2023
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 |
16.05.2023
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"
16.05.2023
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 |
16.05.2023
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.
16.05.2023
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
16.05.2023
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.
16.05.2023
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
16.05.2023
Development Kit
14
Was sind Vor- und Nachteile von einem General Purpose Linux OS auf Embedded? #
16.05.2023
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.
16.05.2023
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
16.05.2023
Development Kit
18
Development Runtimes / Frameworks #
- Python vorinstalliert
- Umfangreiche Library für Peripherie
- Open JDK
- RUST mit Cargo
- NodeJS
- Apache / MySQL
16.05.2023
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
16.05.2023
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
16.05.2023