Embedded Linux im Sommer 2014
H. Hoegl, <Hubert.Hoegl@hs-augsburg.de>, 2014
URL: http://elk.informatik.hs-augsburg.de/hhweb/elinux/
Tafelbilder: https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Tafel/14/
Moodle: https://moodle.hs-augsburg.de/course/view.php?id=2417
Contents
1 Hausaufgaben
Die Loesungen der Hausaufgaben geben Sie bitte in Moodle ab:
https://moodle.hs-augsburg.de/course/view.php?id=2417
1.1 28. Maerz 2014
Einführung (komplett)
1.2 4. April 2014
Nochmal die Inhalte der Vorlesung vom 4. April durchdenken.
Abschnitt ueber Hostrechner lesen:
http://elk.informatik.hs-augsburg.de/elinux-doc/host.html
Aufgaben zum Hostrechner sind am Ende des Abschnitts.
Gerüst für ein Kommandozeilenprogramm entwickeln (siehe Kommandozeile).
Das Kapitel 2 des Buches http://www.advancedlinuxprogramming.com/alp-folder/ heisst Writing Good GNU/Linux Software. Darin finden Sie unter anderem, wie man Kommandozeilen-Parameter mit getopt richtig programmiert.
Wie jede Woche: Kenntnis der Kommandozeile verbessern
Abgabe des 2. Aufgabenblattes verlängert auf 30. April.
1.3 25. April 2014
Lesen Sie in der Gliederung den Abschnitt ueber den Entwicklungsrechner
http://elk.informatik.hs-augsburg.de/elinux-doc/host.html
und beantworten Sie die Fragen am Ende des Abschnitts.
Lesen Sie im Buch von Karim Yaghmour das Kapitel 2 ("Basic Concepts")
Holen Sie sich die Programmbeispiele:
ssh://git@r-n-d.informatik.hs-augsburg.de:2222/hubert.hoegl/elinux.git
Da auf Gnublin das git Programm installiert ist, koennen Sie die Beispiele gleich auf Gnublin holen.
Kommunikation mit serieller Schnittstelle (UART)
- zu Fuss in C
- mit Gnublin API (C++)
- mit Python
Gnublin Erweiterungsmodule
Siehe TempGit/elinux/gnublin/Module.rst
Interfacing DOG Display und Bedientasten
Interfacing einer S0 Schnittstelle eines Strommessgeraetes Eltako-WSZ12DE-32A (2000 Impulse je kWh)
https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Labor/gnublin_stromzaehler.pdf
1.4 2. Mai 2014
Lesen Sie den Abschnitt ueber den UART in der Gliederung
http://elk.informatik.hs-augsburg.de/elinux-doc/io.html#uart-rs-232
Fragen zur UART Schnittstelle:
- Wie greift man in C auf den UART zu?
- Wie greift man in Python auf den UART zu?
- Unterstuetzt das Gnublin-API den UART?
Fragen zur SPI Schnittstelle:
- Wo im Kernel steht, wie man auf die SPI Schnittstelle zugreift?
Beschreiben Sie die verschiedenen Schichten der Gnublin-API Software.
Setzen Sie die Zeit auf Ihrem Embedded Linux Rechner mit dem NTP Protokoll:
sudo ntpdate de.pool.ntp.org
Vergessen Sie nicht, vorher die Zeitzone zu setzen mit sudo tzselect oder sudo dpkg-reconfigure tzdata.
1.5 9. Mai 2014
Zum I2C Bus empfehle ich die Kapitel 8 und 9 im Embedded Linux Praxisbus zu lesen (Zugang elinux/student):
https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Buecher/Praxisbuch/
- Machen Sie eine Aufstellung der Erweiterungsmodule für Gnublin nach dem Typ der Schnittstelle (GPIO, UART, SPI, I2C).
Ueberlegen Sie sich die Ansteuerung eines I2C EEPROM AT24C16 mit dem Gnublin API.
Das Datenblatt des Bausteines ist hier:
http://www.atmel.com/Images/Atmel-8719-SEEPROM-AT24C16C-Datasheet.pdf
Der I2C Bus wird auch "Two-Wire Interface" (TWI) genannt. Neben I2C wird auch noch ein Dreidraht-Interface (3WI) und SPI in der folgenden Applikationsschrift diskutiert:
1.6 16. Mai 2014
Root Filesysteme
- Linux from scratch (LFS)
- Buildroot
- Debian/ARM
- Gnublin Distribution
- ELBE
- Yoctoproject
- ELDK
Fragen dazu:
http://elk.informatik.hs-augsburg.de/elinux-doc/distrib.html#aufgaben-zu-distributionen-und-root-filesystemen
1.7 23. Mai 2014
Fragen zum Linux Kernel sind am Ende des Abschnitts in der Gliederung:
1.8 6. Juni 2014
Fragen zum Bootloader:
http://elk.informatik.hs-augsburg.de/elinux-doc/booten.html
XXX to do: Fragen zu Hallinan, Kap. 7
1.9 13. Juni 2014
Fragen zum Kapitel "Echtzeit"
http://elk.informatik.hs-augsburg.de/elinux-doc/echtzeit.html
2 Vorlesungen/Praktika
Im Praktikum bearbeiten Sie folgende Pflichtversuche neben Ihrem Projekt:
http://elk.informatik.hs-augsburg.de/elinux-doc/praktikum.html#pflichtaufgaben
2.3 11. April 2014
Letzter Aufruf: In Moodle eintragen (siehe oben)
Erfahrungsaustausch: Toolchain installieren (ELDK)
ELDK5X86=/opt/eldk-5.5/armv5te/sysroots/i686-eldk-linux P1=$ELDK5X86/usr/bin/armv5te-linux-gnueabi/ export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi- export PATH=$P1:$PATH
Die SD Karte
/bin/dd, /sbin/fdisk, /sbin/cfdisk, /sbin/mkfs.ext3
Disk /dev/sdb: 1 GB, 1003484160 bytes 255 heads, 63 sectors/track, 122 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb2 1 2 8032 df BootIt /dev/sdb1 3 122 979870 83 Linux
Gnublin Installer http://wiki.gnublin.org/index.php/Gnublin_Installer
Gnublin Wiki, alle Seiten
General Purpose I/O (GPIO)
Informationen im Wiki
- http://wiki.gnublin.org/index.php/GPIO (gnublin-gpio, sysfs)
- http://wiki.gnublin.org/index.php/API_GPIO (Gnublin API)
- http://wiki.gnublin.org/index.php/Berechtigungen_GPIO
- http://wiki.gnublin.org/index.php/GPIO#Interrupt_eines_GPIO_Pins_aktivieren (Interrupts in C und Python)
Kernel Doku linux-2.6.33-lpc313x/Documentation/gpio.txt
Dazu zunaechst den Kernel-Quelltext holen:
git clone https://github.com/embeddedprojects/gnublin-lpc3131-2.6.33.git
Gnublin Live CD http://gnublin.embedded-projects.net/live-cd/
Tafelbild https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Tafel/14/
2.5 2. Mai 2014
- Serielle Schnittstelle
- SPI Schnittstelle
- Gnublin API
- Tafelbild https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Tafel/14/
- Lesen
2.6 9. Mai 2014
Wiederholung
Erinnerung:
Pflichtaufgaben mit Gnublin (bzw. Ihrem verwendeten Board)
Bausteine/Module mit SPI Schnittstelle
I2C
Gnublin Erweiterungsmodule: http://elk.informatik.hs-augsburg.de/hhweb/elinux/Gnublin/Module.html
1-Wire
Logikanalysator mit Linux GUI: http://www.saleae.com
2.7 16. Mai 2014
Das Root Filesystem
- Yaghmour, Kap. 8 (Root FS Setup)
- Hallinan, Kap. 6 (FHS, Minimal FS)
- Hallinan ELP, Kap. 11 "Busybox"
2.8 23. Mai 2014
Der Linux Kernel
- Git Repo: elinux-src/gnublin/kernel/
- Greg Kroah-Hartman, Linux Kernel in a Nutshell http://www.kroah.com/lkn
- Quade/Kunst, Kern-Technik (Serie im Linux Magazin)
- Das Embedded Linux Praxisbus, Springer Verlag, Kap 11: Geraetetreiber und Kernelmodule
- The Linux Kernel Primer, O'Reilly Verlag, Kap. 1 "Overview"
- Robert Love, Linux Kernel Development, O'Reilly Verlag
- Yaghmour BELS, Kap. 5 "Kernel Considerations"
- Hallinan ELP, Kap. 4 "The Linux Kernel: A Different Perspective"
- Hallinan ELP, Kap. 5 "Kernel Initialization"
- Hallinan ELP, Kap. 14 "Kernel Debugging Techniques"
- cdrom-elinux/Lesen/Tim_Jones/tim-jones-anatomy-kernel.pdf
- Boguslaw Sylla, Patrick Schorn, Linux Kernel Module. Arbeit aus dem WS2008/2009, 32 Seiten, cdrom-elinux/Lesen/linuxkernel.pdf
- Roberto Arcomano, Kernel Analysis Howto http://www.tldp.org/HOWTO/KernelAnalysis-HOWTO.html
Treiber/Module
- https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Buecher/TreiberBuch/
- Linux Device Drivers, 3. Auflage: http://lwn.net/Kernel/LDD3, http://www.makelinux.net/ldd3
- Peter Jay Salzman, etal., Linux Kernel Module Programming Guide (2.6), LKMPG http://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
2.9 6. Juni 2014
Bootloader
Yaghmour, Kap. 9 (Setting up the bootloader)
Hallinan, Kap. 7
https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/boot/
Debuggen
- Yaghmour, Kap. 11 (Debugging Tools)
- https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/debug/
2.10 13. Juni 2014
- Echtzeit
- Yaghmour, Kap. 12 (Introduction to Real-Time Linux)
- Yaghmour, Kap. 13 (Xenomai)
- Yaghmour, Kap. 14 (RT-Patch)
- https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/rt/
2.11 27. Juni 2014
- Letzter Termin
3 Tipps
Beachten: Immer auch das Gnublin Wiki durchsuchen.
3.1 udev Regel fuer Terminalprogramm
In Datei /etc/udev/rules.d/81-gnublin-serial.rules: SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="gnublin-console", MODE="0666" sudo /etc/init.d/udev restart oder sudo service udev restart Nach erneutem Anstecken des USB Konsolenkabel sieht man das Geraet ``/dev/gnublin-console``.
3.2 kermit
Man page: man kermit
Installation mit
apt-get install ckermit apt-get install lrzsz # auf Host und Gnublin
Konfigurationsdatei ~/.kermrc:
set line /dev/gnublin-console # set line /dev/ttyUSB0 set speed 115200 set carrier-watch off set handshake none set flow-control none robust set file type bin set file name lit set rec pack 1000 set window 5 set parity none set prefixing all set reliable off set clearchannel off set streaming off set protocol xmodem-crc download {} {sz %s} {} {rz %s} {} set terminal type xterm
Prompt
(/home/hhoegl/) C-Kermit> C-Kermit> c # Connect ... Kermit im Terminal Modus ... C-\ c # Vom Terminal- in Kommando-Modus send [/binary] <filename> # Datei senden C-Kermit> q # Quit
Wenn man Dateien von Gnublin zum PC uebertragen will, dann muss man auf Gnublin "sz <datei>" eingeben. Kermit auf dem PC erkennt das und speichert die Datei ab! SZ hat erstaunlich viele Optionen, siehe "sz --help".
3.3 picocom
Installation
apt-get install picocom apt-get install lrzsz # auf Host und Gnublin
Kommandos
sudo picocom -b 115200 /dev/ttyUSB0 sudo picocom -b 115200 --send-cmd "sz -vv" --receive-cmd "rz -vv" /dev/ttyUSB0 Beenden mit C-a C-x Dateien senden mit C-a C-s Alles weitere: man picocom
Eventuell problematisch: GNU Readline C-a (Cursor an linken Rand) ist identisch mit Picocom Meta-Zeichen.
3.4 Verbindung zum Netz
Das ist in diesem Text beschrieben:
http://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/gnublin/appnotes/pseudo-netz.html
3.5 Kompilieren
Auf Gnublin nativ kompilieren. Ist zwar langsam, geht aber für kleine Programme.
Auf Host kompilieren ("Cross-Kompilierung")
Anleitung für ELDK: http://wiki.gnublin.org/index.php/C/C%2B%2B_Entwicklungsumgebung_installieren
Tipp: Nimm aktuelle Version 5.5:
ftp://ftp.denx.de/pub/eldk/5.5/targets/armv5te/eldk-eglibc-i686-arm-toolchain-qte-5.5.sh
3.6 Kommandozeilen-Programme
Ian Shields, Learn Linux, 101: The Linux command line, 2009, 2015 (24 pages)
Vasudav Ram, Developing a Linux command-line utility, 2002
https://bitbucket.org/vasudevram/selpg
https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/prog/selpg/
http://www.advancedlinuxprogramming.com/alp-folder/
Kapitel 2: Writing good GNU/Linux Software
3.7 User hinzufügen und löschen
Mit adduser paul wird ein neuer User angelegt. Danach existiert ein neues Home-Verzeichnis /home/paul. Mit deluser paul kann man den User wieder löschen.