Skip to content
On this page
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
5

Was ist bei SD-Karten zu beachten?

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

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
16.05.2023
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"
16.05.2023
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
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 oder sync 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
17

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

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