Embedded Linux im Sommersemester 2012
Hubert Högl, März 2012
URL: http://elk.informatik.hs-augsburg.de/hhweb/elinux/index.html
Inhalt
- 1 Projekte
- 2 Muster für screen Init-Datei
- 3 Muster für kermit Init-Datei
- 4 Safari Bücher (Yaghmour, Hallinan)
- 5 Dokumente über Gnublin
- 6 Gnublin Foren
- 7 set.sh
- 8 Projektideen
- 9 Kernel kompilieren
- 10 WiFi mit WEP
- 11 WiFi im Eduroam Netz der Hochschule
- 12 Wichtige Kernel Konfigurationsvariable
- 13 Problem beim Laden von Firmware
2 Muster für screen Init-Datei
http://elk.informatik.hs-augsburg.de/pub/eplpc3131/work_eplpc3131/etc/_screenrc
3 Muster für kermit Init-Datei
http://elk.informatik.hs-augsburg.de/pub/eplpc3131/work_eplpc3131/etc/_kermrc
7 set.sh
# ELDK5 environment settings for Gnublin LPC3131 # <Hubert.Hoegl@hs-augsburg.de> 2011-12-12 ELDK5X86=/opt/eldk-5.0/armv5te/sysroots/i686-oesdk-linux P1=$ELDK5X86/usr/bin/armv5te-linux-gnueabi/ P2=$ELDK5X86/bin/armv5te-linux-gnueabi/ export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi- export PATH=$P1:$P2:$PATH
9 Kernel kompilieren
Es gibt zwei Möglichkeiten:
9.1 Variante 1
Die ELDK 5.0 Toolchain muss installiert sein.
- Hostrechner vorbereiten: Oft fehlen die Pakete: git, libncurses5-dev. Auf Fehlermeldungen achten, ob weitere Pakete fehlen.
Kernelsourcen holen
git clone git://elk.informatik.hs-augsburg.de/srv/git/repositories/gnublin-linux-2.6.33.git
Verzeichnis wechseln:
cd gnublin-linux-2.6.33
Umschalten auf Branch "gnublin"
git checkout gnublin
Einstellungen "sourcen":
. set.sh
- make menuconfig
make zImage, make modules
Das zImage findet man im Verzeichnis arch/arm/boot/.
Module installieren
make modules_install INSTALL_MOD_PATH=<your-module-path>
9.2 Variante 2
(veraltet, bitte nicht verwenden)
Hinweis Ueblicherweise wird man danach die MicroSD Karte in den Kartenleser stecken und versuchen, das zImage und die Module auf die Karte zu schreiben. Mit dem mount Kommando findet man heraus, unter welchem Verzeichnis die Karte auf dem Hostrechner gemountet wurde. Ich finde es immer ganz praktisch, den gerade erstellten Kernel bestehend aus zImage, Modulen und der .config Datei auf der Karte in einem eigenen Verzeichnis aufzubewahren. Der Kernel ist beim Gnublin Board direkt im Root Verzeichnis zu finden. Die Module sind in /lib/modules/2.6.33/. Nach dem Beschreiben der MicroSD Karte ist es wichtig, dass man diese wieder mit umount aus dem Dateisystem aushaengt. Erst dadurch kann man sich darauf verlassen, dass alle Dateien auf die Karte geschrieben wurden. Ein anderes wichtiges Kommando in diesem Zusammenhang ist sync, damit werden alle eventuell sich noch im Hauptspeicher befindlichen Dateien auf die Festplatte oder die SD-Karte geschrieben.
10 WiFi mit WEP
"Patriot" USB WiFi Adapter mit r8712u Treiber (fest einkompiliert)
root@armv5te:~# ifconfig wlan0 up root@armv5te:~# iwconfig wlan0 mode managed essid "linksys" key 0...116EBB986.....1DF02829 root@armv5te:~# udhcpc -i wlan0
Essid und WEP key muessen angepasst werden. Der r8712u Treiber funktioniert auch beim Asus WL-167G V3 Adapter.
11 WiFi im Eduroam Netz der Hochschule
Interface starten
root@armv5te:~# ifconfig wlan0 up
Starten des wpa_supplicant im Hintergrund:
root@armv5te:~# cat start-wpa-supp-bg.sh sudo wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -B
Zum Testen ist es nuetzlich, wpa_supplicant im Vordergrund zu starten. Dazu ersetzt man die -B Option durch -d.
/etc/wpa_supplicant/wpa_supplicant.conf
# path to UNIX socket control interface ctrl_interface=/var/run/wpa_supplicant #eapol_version=1 ap_scan=1 network={ ssid="eduroam" key_mgmt=WPA-EAP eap=TTLS proto=WPA RSN identity="hhoegl" anonymous_identity="anonymous@hs-augsburg.de" password="......." # ca_cert="/etc/wpa_supplicant/deutsche-telekom-root-ca-2.crt" phase2="auth=PAP" }
Adressen mit DHCP beziehen:
# udhcpc -i wlan0
12 Wichtige Kernel Konfigurationsvariable
(für Kernel 2.6.33)
- CONFIG_UNIX=y
- Das ist die Voraussetzung, damit der syslog Daemon arbeiten kann.
- CONFIG_LOCALVERSION_AUTO=y
- Damit enthalten die Modulverzeichnisse unter /lib/modules/ noch die aktuelle Git Version des Kernels. Ich neige eher dazu, diese Option nicht einzuschalten.
- CONFIG_FIRMWARE_IN_KERNEL=y
**Normalerweise sollte diese Option nicht noetig sein. Sie wurde gelegentlich verwendet, da es ein Problem mit dem Hotplug Mechanismus gab, das verhinderte, das die Firmware in USB-zu-WLAN Adapter geladen wurde. Mit einem funktionierenden /sbin/hotplug sollte das kein Problem mehr sein.
- CONFIG_GPIO_SYSFS=y, CONFIG_SYSFS=y
- Damit kann man die GPIO Pins mit den Dateien unter /sys/class/gpio/ ansteuern.
CONFIG_DEBUG_GPIO
- CONFIG_HW_RANDOM
- Hardware Zufallszahlengenerator
13 Problem beim Laden von Firmware
(H. Hoegl, 2012-05-18)
Bisher gab es immer ein Problem beim Laden der Firmware in USB Geraete, z.B. dem ASUS WL-167G V3 Adapter. Die unschoene Loesung war bisher, die Firmware direkt in den Kernel einzukompilieren. Bei genauerer Betrachtung zeigte sich, das das Problem mit Hotplug zu tun hatte. Wenn man /sbin/hotplug mit folgendem Inhalt anlegt, dann funktioniert der Ladevorgang. Die Konfigurationsoption CONFIG_FIRMWARE_IN_KERNEL=y sollte deaktiviert werden.
#!/bin/sh HOTPLUG_FW_DIR=/lib/firmware echo 1 > /sys/$DEVPATH/loading cat $HOTPLUG_FW_DIR/$FIRMWARE > /sys/$DEVPATH/data echo 0 > /sys/$DEVPATH/loading
Beim Asus WL-167G V2 USB-zu-WiFi Adapter muss die Firmware hier sein: /lib/firmware/rt73.bin.