Embedded Linux im Sommer 2014
H. Hoegl, <Hubert.Hoegl@hs-augsburg.de>, 2014
URL: http://elk.informatik.hs-augsburg.de/hhweb/elinux/
Moodle Kurs: https://moodle.hs-augsburg.de/course/view.php?id=2417
1 Hausaufgaben
1.1 28. Maerz 2014
Einführung (komplett)
http://elk.informatik.hs-augsburg.de/hhweb/elinux/Aufgaben/allgemein.html#intro
1.2 4. April 2014
Nochmal die Inhalte der Vorlesung vom 4. April durchdenken.
Abschnitt ueber Hostrechner lesen:
http://elk.informatik.hs-augsburg.de/hhweb/elinux/Gliederung/main.html#der-entwicklungsrechner
Aufgaben zum Hostrechner
http://elk.informatik.hs-augsburg.de/hhweb/elinux/Aufgaben/allgemein.html#der-entwicklungsrechner
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
http://elk.informatik.hs-augsburg.de/hhweb/elinux/Aufgaben/allgemein.html#der-entwicklungsrechner (siehe in der Gliederung den Abschnitt zum Entwicklungsrechner)
Im Buch von Karim Yaghmour das Kapitel 2 ("Basic Concepts") lesen
Programmbeispiele:
git clone git://hhoegl.informatik.fh-augsburg.de/elinux-src
Source Browser:
http://hhoegl.informatik.fh-augsburg.de:8000/elinux-src
Kommunikation mit serieller Schnittstelle (UART)
- zu Fuss in C
- mit Gnublin API (C++)
- mit Python
Gnublin Erweiterungsmodule
http://elk.informatik.hs-augsburg.de/hhweb/elinux/Gnublin/Module.html
- Interfacing DOG Display und Bedientasten
- Interfacing einer S0 Schnittstelle eines Strommessgeraetes Eltako-WSZ12DE-32A (2000 Impulse je kWh)
1.4 2. Mai 2014
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.
2 Vorlesung/Praktikum
Hinweise:
- April 2014 entfällt (Karfreitag)
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/
3 Projektvorschläge
Hier sind erst mal ein paar Ideen:
- 1-Wire Erweiterung zum Schalten und Überwachen von Temperaturen
- Barcode Scanner an Gnublin
- Fernsteuern und Überwachen mit Mobilfunk-Modem
- Alarmanlage mit Fenster-/Türkontakt, Näherungssensor
4 Die tatsächlichen Projekte
- Alarmanlage (Peter, Keilbach)
- Hundefütterungsanlage (Bonhoeffer)
- Morselicht (Schmid, Keller, Weisshaar)
- Schnittstelle zu einem Wechselrichter über Bluetooth und Infrarot (Abwandner, Beham)
- Überwachung von Fräsmaschinen (Rädler, erst in SS15)
- Wohnwagen (Görlich)
- Stromzähler bei PV-Anlage (Laton, Boemmel)
- WLAN Router und mehr (Scheja)
- 1-Wire (von Hollen, Hrstka, Grieco)
- Anwesenheitssensor (Mogk, Sebald)
- Fahrradschloss (Kazemi, Liashenko, Maximov)
- Frequenzmessung (Vockinger)
5 Tipps
Beachten: Immer auch das Gnublin Wiki durchsuchen.
5.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``.
5.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".
5.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.
5.4 Verbindung zum Netz
Das ist in diesem Text beschrieben:
http://elk.informatik.hs-augsburg.de/pub/rtlabor/Gnublin/appnotes/pseudo-netz.html
5.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
5.6 Kommandozeilen-Programme
Vasudav Ram, Developing a Linux command-line utility, 2002
http://www.advancedlinuxprogramming.com/alp-folder/
Kapitel 2: Writing good GNU/Linux Software
5.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.