6988
Kommentar:
|
6977
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 26: | Zeile 26: |
Arbeiten mit dem BBB | Das BBB kennenlernen |
Zeile 28: | Zeile 28: |
Ich setze voraus, dass bereits ein lauffähiges Linux auf dem BBB im eMMC Speicher gespeichert ist. Es ist keine MicroSD-Karte nötig. |
|
Zeile 34: | Zeile 36: |
a. Terminalprogramm mit serieller Schnittstelle verbinden b. Einloggen c. Bootmeldungen betrachten (dmesg) d. Useraccount einrichten (nicht als Root arbeiten) e. Systemzeit setzen mit ``date`` und ``ntpdate`` f. Netzwerkverbindung herstellen |
1. Terminalprogramm mit serieller Schnittstelle verbinden #. Einloggen #. Bootmeldungen betrachten (dmesg) #. Welches Linux haben Sie? (Typ, Version) #. Useraccount mit ``adduser`` einrichten (nicht als Root arbeiten) #. Systemzeit setzen mit ``date`` und ``ntpdate`` #. Netzwerkverbindung herstellen |
Zeile 41: | Zeile 44: |
- mit USB Kabel - mit Kabel über eth Schnittstelle - mit WiFi, z.B. über einen USB WiFi Adapter g. Dateien mit ``scp`` zwischen Host und Target übertragen h. Vom Target aus über den Hostrechner eine Netzwerkverbindung in das Internet herstellen (ip, iw, ifconfig, iwconfig, wpa_supplicant) i. System auf der Kommandozeile u.a. mit ``procfs`` erforschen (ls, ps, tree, |
- mit USB Kabel - mit Kabel über eth Schnittstelle - mit WiFi, z.B. über einen USB WiFi Adapter #. Gehen Sie mit ``ssh`` und ``http`` auf das Board. #. Dateien mit ``scp`` zwischen Host und Target übertragen #. Vom Target aus über den Hostrechner eine Netzwerkverbindung in das Internet herstellen (ip, iw, ifconfig, iwconfig, wpa_supplicant) #. System auf der Kommandozeile u.a. mit ``procfs`` erforschen (ls, ps, tree, |
Zeile 51: | Zeile 58: |
#. BBB über USB mit dem Hostrechner verbinden. Es steckt keine SD Karte drin, so das über den eMMC Speicher gebootet wird. |
#. "Erforschen" Sie das Linux auf dem BBB über die ssh oder Konsolenverbindung: |
Zeile 54: | Zeile 60: |
Über die USB Verbindung eine Netzwerkverbindung mit dem BBB herstellen: | - Welches Linux wird verwendet? - Welche Prozesse (Dienste) laufen? - Welche Pakete sind installiert? - Wie viel Platz belegt das Root Filesystem? |
Zeile 56: | Zeile 65: |
- Gehen Sie mit ssh auf das BBB. - Gehen Sie ueber HTTP auf das BBB. |
|
Zeile 59: | Zeile 66: |
Flash Speicher -------------- |
|
Zeile 71: | Zeile 80: |
Konsole ------- |
|
Zeile 86: | Zeile 98: |
#. Wie konfiguriert man die Netzwerkschnittstelle des BBB? | Hostrechner ----------- 1. Mounten Sie das Homeverzeichnis des BBB mit ``sshfs`` auf dem Hostrechner. #. Installieren Sie auf dem Hostrechner eine Cross-Toolchain und kompilieren Sie ein kleines Demoprogramm. Übertragen Sie es mit ``scp`` auf das BBB und führen Sie es aus. Die einzelnen Programme des Cross-GCC haben den Präfix ``arm-linux-gnueabihf-``. Falls Sie einen C Compiler auf dem BBB haben, kompilieren Sie das Programm auch nativ und testen Sie es. |
Zeile 89: | Zeile 112: |
#. Wie konfiguriert man auf dem Hostrechner und dem BBB eine Durchleitung der Netzwerk-Datenpakete vom BBB über den Hostrechner in das Internet? |
U-Boot ------ |
Zeile 92: | Zeile 115: |
#. Mounten Sie das Homeverzeichnis des BBB mit ``sshfs`` auf dem Hostrechner. #. Stoppen Sie den Bootvorgang in der Konsole, so dass Sie auf dem U-Boot |
1. Stoppen Sie den Bootvorgang in der Konsole, so dass Sie auf dem U-Boot |
Zeile 105: | Zeile 124: |
#. "Erforschen" Sie das Linux auf dem BBB über die ssh oder Konsolenverbindung: | Schnittstellen -------------- |
Zeile 107: | Zeile 127: |
- Welches Linux wird verwendet? - Welche Prozesse (Dienste) laufen? - Welche Pakete sind installiert? - Wie viel Platz belegt das Root Filesystem? #. Installieren Sie auf dem Hostrechner eine Cross-Toolchain und kompilieren Sie ein kleines Demoprogramm. Übertragen Sie es mit ``scp`` auf das BBB und führen Sie es aus. Die einzelnen Programme des Cross-GCC haben den Praefix ``arm-linux-gnueabihf-``. Falls Sie einen C Compiler auf dem BBB haben, kompilieren Sie das Programm auch nativ und testen Sie es. #. Machen Sie ein einfaches Programm zum Ansteuern der seriellen |
1. Machen Sie ein einfaches Programm zum Ansteuern der seriellen |
Zeile 144: | Zeile 149: |
#. Im gitlab Repository | Zeitliches Verhalten programmieren ("Echtzeit") ----------------------------------------------- 1. Im gitlab Repository |
Pflichtversuche mit dem Beagle Bone Black (BBB)
H. Högl, 2016, 2017, 2018
Link zur Veranstaltung: http://hhoegl.informatik.hs-augsburg.de/hhwiki/EmbeddedLinux
Vorkenntnisse
- Üben Sie das Arbeiten auf der Kommandozeile. Der typische Zugang zu einem Embedded Linux Rechner ist fast immer mit ssh auf der Kommandozeile -- ohne grafische Oberfläche. Sie können das sehr gut auf dem PC/Notebook simulieren, wenn Sie eine Linux Distribution ohne grafische Oberfläche installieren.
- Bereiten Sie den Hostrechner zur Arbeit mit dem BBB vor (Terminalemulator z.B. picocom oder kermit, NFS, Crosscompiler, Netzwerkeinrichtung, ...)
Das BBB kennenlernen
Ich setze voraus, dass bereits ein lauffähiges Linux auf dem BBB im eMMC Speicher gespeichert ist. Es ist keine MicroSD-Karte nötig.
- Lernen Sie den schematischen Aufbau des Boards kennen mit den wesentlichen Bausteinen, die darauf sind (Blockschaltbild).
Üben Sie häufig wiederkehrende Aufgaben
- Terminalprogramm mit serieller Schnittstelle verbinden
- Einloggen
- Bootmeldungen betrachten (dmesg)
- Welches Linux haben Sie? (Typ, Version)
- Useraccount mit adduser einrichten (nicht als Root arbeiten)
- Systemzeit setzen mit date und ntpdate
Netzwerkverbindung herstellen
- mit USB Kabel
- mit Kabel über eth Schnittstelle
- mit WiFi, z.B. über einen USB WiFi Adapter
- Gehen Sie mit ssh und http auf das Board.
- Dateien mit scp zwischen Host und Target übertragen
- Vom Target aus über den Hostrechner eine Netzwerkverbindung in das Internet herstellen (ip, iw, ifconfig, iwconfig, wpa_supplicant)
- System auf der Kommandozeile u.a. mit procfs erforschen (ls, ps, tree, cat, less, vi, uname, mount, df, du, fdisk, ...)
"Erforschen" Sie das Linux auf dem BBB über die ssh oder Konsolenverbindung:
- Welches Linux wird verwendet?
- Welche Prozesse (Dienste) laufen?
- Welche Pakete sind installiert?
- Wie viel Platz belegt das Root Filesystem?
Flash Speicher
- Wie kann man den eMMC Speicher komplett neu mit einem Linux beschreiben?
- Wie behandelt man eine rohe SD Karte mit fdisk und mkfs.vfat bzw. mkfs.ext4, so dass man darauf ein bootfähiges Linux installieren kann?
- Wie bootet man von der SD Karte?
Konsole
UART-zu-USB Adapter anschliessen, so dass man die Konsole auf dem Hostrechner sehen kann. Das Terminalprogramm picocom starten mit
picocom -b 115200 /dev/ttyUSB0
(aufpassen: Manche Linux Distributionen verwenden nur 9600 Baud)
- Welchen Vorteil hat diese Konsole im Vergleich mit der ssh Verbindung über USB bzw. Netzwerkkabel?
Hostrechner
- Mounten Sie das Homeverzeichnis des BBB mit sshfs auf dem Hostrechner.
Installieren Sie auf dem Hostrechner eine Cross-Toolchain und kompilieren Sie ein kleines Demoprogramm. Übertragen Sie es mit scp auf das BBB und führen Sie es aus. Die einzelnen Programme des Cross-GCC haben den Präfix arm-linux-gnueabihf-.
Falls Sie einen C Compiler auf dem BBB haben, kompilieren Sie das Programm auch nativ und testen Sie es.
U-Boot
Stoppen Sie den Bootvorgang in der Konsole, so dass Sie auf dem U-Boot Prompt landen.
- Wie sieht man alle Umgebungsvariablen an?
- Booten über den eMMC Speicher.
- Booten über die SD Karte.
- Booten über das Netzwerk mit tftp oder nfs.
Schnittstellen
Machen Sie ein einfaches Programm zum Ansteuern der seriellen Schnittstelle in C/C++ und Python. Sie sollten die Schnittstelle öffnen, ein paar Zeichen schreiben und danach lesen, am Ende wieder schliessen. Man sollte den Code mit einer simplen Verbindung zwischen dem TX- (senden) und RX-Signal testen können.
Hilfreich sind folgende Texte:
Einfache I/O Demo mit Taster und LED:
GPIO ueber sysfs einlesen (polling/interrupt) und ausgeben
Tastendruck wird als Event ueber sysfs erkannt und schaltet LED ein und aus
Ein Demo-Geraetetreiber faengt den Tastendruck als Interrupt ab und schaltet die LED ein- und aus.
Lit.: http://derekmolloy.ie/writing-a-linux-kernel-module-part-1-introduction
- Machen Sie sich mit den Bussen I2C und SPI vertraut.
Zeitliches Verhalten programmieren ("Echtzeit")
Im gitlab Repository
https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/elinux.git
finden Sie ein paar Beispiele die demonstrieren, wie man zeitliches Verhalten in Linux programmiert. Vollziehen Sie die Beispiele in den Verzeichnissen timing und bbb-rt-test/rt-demos nach.
Build-Umgebungen
Bauen Sie ein Root-Filesystem mit Kernel und U-Boot aus den folgenden Distributionen:
- Buildroot
- Yoctoproject
Installieren Sie es auf einer MicroSD-Karte und testen Sie es auf dem BBB. Es soll auch der Bootloader U-Boot und die Cross-Toolchain dabei entstehen.
Aufgaben mit dem Kernel in der Bau-Umgebung
- Konfigurieren
- Vorhandene Treiber aktivieren/deaktivieren
- Eigenen (Dummy) Treiber einbauen
- Updaten auf eine andere Kernel Version
Aufgaben mit dem Root Filesystem in der Bau-Umgebung
- Pakete aktivieren/deaktivieren
- Eigene Pakete einbauen