#format rst #language de ============================= Embedded Linux im Sommer 2014 ============================= H\. Hoegl, , 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:: .. sectnum:: Hausaufgaben ============ Die Loesungen der Hausaufgaben geben Sie bitte in Moodle ab: https://moodle.hs-augsburg.de/course/view.php?id=2417 28. Maerz 2014 -------------- .. _hausi1: * Einführung (komplett) http://elk.informatik.hs-augsburg.de/elinux-doc 4. April 2014 -------------- .. _hausi2: * 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. 25. April 2014 -------------- .. _hausi3: * 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") http://proquest.tech.safaribooksonline.de/book/operating-systems-and-server-administration/embedded-linux/9780596529680 * 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 .. _hausi4: 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. .. _hausi5: 9. Mai 2014 ----------- 1. 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: http://www.atmel.com/Images/doc8546.pdf .. _hausi6: 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 .. _hausi7: 23. Mai 2014 ------------ Fragen zum Linux Kernel sind am Ende des Abschnitts in der Gliederung: http://elk.informatik.hs-augsburg.de/elinux-doc/kernel.html 6. Juni 2014 ------------ Fragen zum Bootloader: http://elk.informatik.hs-augsburg.de/elinux-doc/booten.html XXX to do: Fragen zu Hallinan, Kap. 7 13. Juni 2014 ------------- Fragen zum Kapitel "Echtzeit" http://elk.informatik.hs-augsburg.de/elinux-doc/echtzeit.html Vorlesungen/Praktika ==================== Im Praktikum bearbeiten Sie folgende Pflichtversuche neben Ihrem Projekt: http://elk.informatik.hs-augsburg.de/elinux-doc/praktikum.html#pflichtaufgaben 28. Maerz 2014 -------------- 4. April 2014 ------------- * Tafelbild https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Tafel/14/ 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 - http://wiki.gnublin.org/index.php/SD-Karte_wechseln * 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/ 25. April 2014 -------------- * Tafelbild https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Tafel/14/ 2. Mai 2014 ----------- * Serielle Schnittstelle * SPI Schnittstelle * Gnublin API - http://wiki.gnublin.org/index.php/Programmieren_mit_API - http://gnublin.org/gnublin-api/doc/html_de/index.html * Tafelbild https://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/Tafel/14/ * Lesen - http://wiki.gnublin.org/index.php/RS-232 - http://wiki.gnublin.org/index.php/SPI 9. Mai 2014 ----------- * Wiederholung * Erinnerung: `Pflichtaufgaben mit Gnublin `_ (bzw. Ihrem verwendeten Board) * Bausteine/Module mit SPI Schnittstelle - `DOG Display `_ - `MAX7219 `_ - `PCA9555 `_ * I2C - http://wiki.gnublin.org/index.php/I2C * Gnublin Erweiterungsmodule: http://elk.informatik.hs-augsburg.de/hhweb/elinux/Gnublin/Module.html * 1-Wire - http://wiki.gnublin.org/index.php/1-Wire * Logikanalysator mit Linux GUI: http://www.saleae.com 16. Mai 2014 ------------ Das Root Filesystem * Yaghmour, Kap. 8 (Root FS Setup) * Hallinan, Kap. 6 (FHS, Minimal FS) * Hallinan ELP, Kap. 11 "Busybox" 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 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/ 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/ 27. Juni 2014 ------------- * Letzter Termin Tipps ====== *Beachten:* Immer auch das `Gnublin Wiki `_ durchsuchen. 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``. 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] # Datei senden C-Kermit> q # Quit Wenn man Dateien von Gnublin zum PC uebertragen will, dann muss man auf Gnublin "sz " eingeben. Kermit auf dem PC erkennt das und speichert die Datei ab! SZ hat erstaunlich viele Optionen, siehe "sz --help". 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. Verbindung zum Netz ------------------- Das ist in diesem Text beschrieben: http://elk.informatik.hs-augsburg.de/pub/rtlabor/elinux/gnublin/appnotes/pseudo-netz.html 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 .. _Kommandozeile: Kommandozeilen-Programme ------------------------ * Ian Shields, Learn Linux, 101: The Linux command line, 2009, 2015 (24 pages) http://www.ibm.com/developerworks/library/l-lpic1-v3-103-1 * 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 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. .. vim: et sw=2 ts=2 filetype=rst .. Local Variables: mode:rst indent-tabs-mode: nil tab-width: 2 End: