Gumstix-FAQ

Aus Labor für Echtzeitsysteme

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Version vom 08:23, 25. Mai 2007 (bearbeiten)
Quade (Diskussion | Beiträge)

← Zum vorherigen Versionsunterschied
Aktuelle Version (15:10, 2. Dez. 2010) (bearbeiten) (rückgängig)
Hans (Diskussion | Beiträge)
(Entwicklungsumgebung einspielen)
 
(Der Versionsvergleich bezieht 42 dazwischen liegende Versionen mit ein.)
Zeile 2: Zeile 2:
* USBNET funktioniert nicht! (Problem von Gumstix confirmed) * USBNET funktioniert nicht! (Problem von Gumstix confirmed)
-* Gibt es vorgefertigte Images für Kernel und Filesystem des Verdex-Boards? Wahrscheinlich nicht. 
-* Ist die evaluierte Entwicklungsumgebung wirklich diejenige, für das Verdex-Boards? 
* Wieso gibt es nach einem "make" mehrere Pfade für Kernel-Module? (/lib/modules/2.6.21-gum und /lib/modules/2.6.21-rt1-gum) * Wieso gibt es nach einem "make" mehrere Pfade für Kernel-Module? (/lib/modules/2.6.21-gum und /lib/modules/2.6.21-rt1-gum)
Zeile 27: Zeile 25:
=== Inbetriebnahme === === Inbetriebnahme ===
-==== Hardware ====+==== USB-Serial-Converter ====
-* console-vx eventuell mit zwei Kabeln (Plus/Minus) für die Stromversorgung ausrüsten. Das ist allerdings nicht unbedingt notwendig, weil sich das Board auch per USB mit Strom versorgen lässt.+ 
-* 3 Kabel an eine 9-polige SUB-D Buchse anlöten (Pin 2, 3 und 5). Die Kabel sollten einen solchen Querschnitt haben, dass sie sich in die vorhandene runde Buchse auf das Board console-vx stecken lassen (mittlere Buchse).+Mit Hilfe der USB-Serial-Converter kann der Gumstix auch über das breakout-vx angeschlossen werden.
-* Motherboard und Konsolenboard zusammenstecken.+Hierzu schlißt man den Stecker des USB-Serial-Converters an den FFUART-Anschluss des breakout-vx an.
 +Wichtig ist, dass das rote Kabel auf den Pin für VCC, und das braune Kabel auf den Pin für GND gesteckt wird. Dadurch sind die anderen Kabel automatisch an der richtigen Position.
==== Software ==== ==== Software ====
Zeile 89: Zeile 88:
* Um Kermit zu beenden geben Sie beim Kermit-Prompt ''exit'' ein. * Um Kermit zu beenden geben Sie beim Kermit-Prompt ''exit'' ein.
-==== Datentransfer über die seriellen Schnittstelle (Linux) ====+==== Hardware ====
 +[[Bild:20070518konsolenboard.jpg|thumb|Gumstix mit Konsolenboard]]
 + 
 +Geht einfacher über USB-Serial-Converter s. o. Wird der Vollständigkeit halber hier dennoch aufgeführt
 + 
 +* console-vx eventuell mit zwei Kabeln (Plus/Minus) für die Stromversorgung ausrüsten. Das ist allerdings nicht unbedingt notwendig, weil sich das Board auch per USB mit Strom versorgen lässt.
 +* 3 Kabel an eine 9-polige SUB-D Buchse anlöten (Pin 2, 3 und 5). Die Kabel sollten einen solchen Querschnitt haben, dass sie sich in die vorhandene runde Buchse auf das Board console-vx stecken lassen (mittlere Buchse).
 +* Motherboard und Konsolenboard zusammenstecken.
 + 
 +==== Datentransfer über die serielle Schnittstelle (Linux) ====
* Daten lassen sich über das ZModem-Protokoll zwischen Host und Target tranferieren. Dazu muss auf dem Hostsystem das Paket ''lrzsz'' installiert sein. <pre>apt-get install lrzsz</pre> * Daten lassen sich über das ZModem-Protokoll zwischen Host und Target tranferieren. Dazu muss auf dem Hostsystem das Paket ''lrzsz'' installiert sein. <pre>apt-get install lrzsz</pre>
* Um Daten vom Host auf den Target zu übertragen, verbinden Sie sich auf dem Target mit Hilfe von Kermit und starten dann (im richtigen Verzeichnis) rz. * Um Daten vom Host auf den Target zu übertragen, verbinden Sie sich auf dem Target mit Hilfe von Kermit und starten dann (im richtigen Verzeichnis) rz.
Zeile 145: Zeile 153:
<pre> <pre>
# /etc/init.d/S30bluetooth start # /etc/init.d/S30bluetooth start
 +</pre>
 +
 +[http://www.gentoo.org/doc/en/bluetooth-guide.xml Gentoo-Bluetooth-Guide]
 +
 +
 +===== Personal Area Network (PAN) via Bluetooth (WPAN) einrichten =====
 +
 +
 +Eine Alternative zu der seriellen Schnittstelle ist die Verbindung via Bluetooth mittels TCP/IP-Protokoll. Wahlweise ist der Gumstix oder ein Host als Server zu wählen. Der Server dient als Access Point (NAP).
 +<pre>
 + +---------+
 + | NAP |
 + +---------+
 + / | \
 + / | \
 + / | \
 + / | \
 + / | \
 + / | \
 + +------+ +------+ +------+
 + | PANU | | PANU | | PANU |
 + +------+ +------+ +------+
 +</pre>
 +
 +Als erstes ist auf allen beteiligten Systemen das Modul bnep zu landen:
 +<pre>
 +# modprobe bnep
 +</pre>
 +Der Pan-Daemon wird auf dem Server mit folgendem Kommando aktiviert:
 +<pre>
 +# pand --listen --role NAP --master --autozap
 +</pre>
 +und auf den Clients mit:
 +<pre>
 +# pand --role PANU --search --persist
 +</pre>
 +
 +Bei erfolgreicher Verbindung wird mittels ifconfig -a das Interface bnep0 angezeigt und wie ein normales Ethernet Interface konfiguriert.
 +<pre>
 +# ifconfig -a
 +bnep0 Link encap:Ethernet HWaddr 00:06:C6:C4:08:27
 + BROADCAST MULTICAST MTU:1500 Metric:1
 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 + collisions:0 txqueuelen:100
 + RX bytes:4 (4.0 b) TX bytes:0 (0.0 b)
 +
 +# ifconfig bnep0 192.168.1.1
 +</pre>
 +Ist bnep0 in der Auflistung nicht vorhanden, reicht es evtl. aus, auf dem Server mittels hcitool einen Scan durchzuführen:
 +<pre>
 +# hcitool scan
 +</pre>
 +
 +Nun ist eine Verbindung per SSH auf dem Gumstix möglich:
 +<pre>
 +# ssh 192.168.1.1
</pre> </pre>
Zeile 173: Zeile 238:
==== USB-WLAN ==== ==== USB-WLAN ====
-Nach den gegenwärtigen Recherchen wird am besten ein USB-Wlan-Adapter mit einem RALINK-Chipsatz unterstützt.+Der USB-WLAN-Adapter D-Link DWL-G122 verwendet einen RALINK-Chipsatz, für den es zwei Linux-Treiber gibt:
 +# Einen Herstellertreiber.
 +# Einen Community-Treiber, der auf dem Herstellertreiber basiert.
-TBD.+Die Auguren sagen, dass der Community-Treiber besser funktioniert.
 + 
 +Vorgehen zur Einrichtung
 + 
 +* Quellcode herunterladen.
 +* Makefile anpassen.
 +* Treiber generieren.
 +* Treiber <tt>rt73.ko</tt> auf den Gumstix kopieren.
 +* Firmware <tt>rt73.bin</tt> und <tt>rt73sta.dat</tt> unter <tt>/lib/firmware</tt> auf dem Gumstix ablegen.
 +* Auf dem Gumstix sind folgende Module zu laden:
 +** firmware_class
 +** ohci_hcd
 +** rt73
 +* Das Interface ist zu aktivieren.
 +* WLAN kann konfiguriert werden.
 + 
 +<pre>
 +# insmod rt73.ko
 +rtusb init ====>
 +idVendor = 0x7d1, idProduct = 0x3c03
 +usbcore: registered new driver rt73
 +# iwconfig
 +lo no wireless extensions.
 + 
 +sit0 no wireless extensions.
 + 
 +wlan0 RT73 WLAN
 + Link Quality:0 Signal level:0 Noise level:113
 + Rx invalid nwid:0 invalid crypt:0 invalid misc:0
 + 
 +# ifconfig wlan0 up
 +rt73 driver version - 1.0.3.6 CVS
 +***rt73***: Interface goes up for the first time, activating permanent MAC
 +***rt73***: Active MAC is: 00:1b:11:02:43:6a.
 +# iwlist scanning
 +lo Interface doesn't support scanning.
 + 
 +sit0 Interface doesn't support scanning.
 + 
 +wlan0 Scan completed :
 + Cell 01 - Address: 00:12:BF:2D:D0:4D
 + ESSID:"WLAN"
 + Mode:Managed
 + Channel:1
 + Encryption key:on
 + Bit Rates:130 Mb/s
 + Cell 02 - Address: 00:0F:66:D2:FB:0A
 + ESSID:"tuopeek"
 + Mode:Managed
 + Channel:3
 + Encryption key:on
 + Bit Rates:6 Mb/s
 + 
 +# iwconfig wlan0 essid tuopeek
 +# iwconfig wlan0 key 1212121212121212...
 +# ifconfig wlan0 192.168.69.100
 +# ping 192.168.69.1
 +PING 192.168.69.1 (192.168.69.1): 56 data bytes
 +84 bytes from 192.168.69.1: icmp_seq=0 ttl=255 time=19.0 ms
 +84 bytes from 192.168.69.1: icmp_seq=1 ttl=255 time=6.2 ms
 +84 bytes from 192.168.69.1: icmp_seq=2 ttl=255 time=7.2 ms
 +84 bytes from 192.168.69.1: icmp_seq=3 ttl=255 time=7.3 ms
 + 
 +--- 192.168.69.1 ping statistics ---
 +4 packets transmitted, 4 packets received, 0% packet loss
 +round-trip min/avg/max = 6.2/9.9/19.0 ms
 +</pre>
 + 
 +Hier noch das Makefile (rt73-cvs-2007061312):
 +<pre>
 +MODULE_NAME := rt73
 +IF_NAME := wlan*
 + 
 +FIRMWARES := rt73.bin
 +FIRM_DIR := /lib/firmware
 + 
 +OLD_IF_NAME := ra0
 +CONFIG_DIR := /etc/Wireless/RT73STA
 +CONFIG_FILE := rt73sta.dat
 + 
 +EXTRA_CFLAGS += -DAGGREGATION_SUPPORT -DWMM_SUPPORT
 + 
 +ifeq ($(DEBUG),y)
 + CFLAGS += -O -g # -O is need to expand inlines
 +else
 + CFLAGS += -O2
 +endif
 + 
 +ifneq ($(KERNELRELEASE),)
 + 
 +WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs
 + 
 +CFLAGS += $(WFLAGS)
 + 
 +obj-m := rt73.o
 + 
 +$(MODULE_NAME)-objs := rtmp_main.o mlme.o connect.o rtusb_bulk.o rtusb_io.o \
 + sync.o assoc.o auth.o auth_rsp.o rtusb_data.o \
 + rtmp_init.o sanity.o rtmp_wep.o rtmp_info.o \
 + rtmp_tkip.o wpa.o md5.o
 + 
 + 
 +else
 + 
 +PWD := $(shell pwd)
 + 
 +GUMSTIX_BUILDROOT = $(PWD)/../../gumstix-buildroot
 +BUILD_ARM = $(wildcard $(GUMSTIX_BUILDROOT)/build_arm*)
 +KERNELDIR ?= $(wildcard $(BUILD_ARM)/linux-*)
 +CROSS_COMPILE = $(BUILD_ARM)/staging_dir/bin/arm-linux-
 + 
 +kernel-module:
 + $(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
 + 
 +clean:
 + rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.symvers
 + 
 +#
 +#----------------------------------------------------------------------------
 +endif
 +</pre>
 + 
 +Auf dem Gumstix wird beim Booten folgendes Skript abgearbeitet:
 +<pre>
 +#!/bin/sh
 + 
 +echo "loading drivers..."
 +modprobe ohci_hcd
 +modprobe firmware_class
 +modprobe rt73
 + 
 +sleep 1
 + 
 +echo "activating interface..."
 +ifconfig wlan0 up
 +iwconfig wlan0 mode ad-hoc essid flobby
 +iwconfig wlan0 channel 5
 +ifconfig wlan0 192.168.97.11
 +ip route add default via 192.168.97.10
 +</pre>
 + 
 +Damit wird ein Ad-Hoc-Netzwerk aufgebaut, so dass ein Access-Point nicht benötigt wird. Damit das Skript beim Booten gestartet wird, wird ein symbolic link angelegt:
 + 
 + # ln -s /root/wlan /etc/init.d/S60wlan
 + 
 +Der Client (Notebook), der mit dem Flobby kommunizieren will, benötigt ebenfalls ein kleines Skript:
 + 
 +<pre>
 +#!/bin/bash
 + 
 +iwconfig eth1 mode ad-hoc essid flobby channel 5
 +ifconfig eth1 192.168.97.10
 +echo 1 >/proc/sys/net/ipv4/ip_forward
 +</pre>
 + 
 +Folgende IPs sind schon vergeben (192.168.97.*):
 +* 10-13: Gumstix
 +* 101: Quade
 +* 105: Hammer
 +* 106: Elmouakibi (Master)
 +* 107: Esser (Master)
 +* 108: Verhoeven (Master)
 +* 110: Krickl
 +* 213: Zenzes
 +* 200-202: Clemens
 +* 227: Tellers
 + 
 + 
 +Hier Links zur Einrichtung:
 + 
 +*[http://forum.ubuntuusers.de/viewtopic.php?p=752340#752340 Anleitung für Ubuntu]
 +*[http://forum.ubuntuusers.de/topic/91223/ Anleitung für Ubuntu (2. Version)]
 +*[http://de.gentoo-wiki.com/Rt2500 Anleitung für Gentoo]
 +*[http://rt2x00.serialmonkey.com/wiki/index.php?title=Main_Page Open-Source Treiber auf serialmonkey]
 +*[http://weblog.christoph-probst.com/article.php/20070402153533359 Erfahrungsbericht]
==== Emulator ==== ==== Emulator ====
Zeile 182: Zeile 423:
<pre> <pre>
-user@host> cd qemu./configure --target-list=arm-softmmu --host-cc=gcc-3.4 --cc=gcc-3.4\+user@host> cd qemu
 +user@host> ./configure --target-list=arm-softmmu --host-cc=gcc-3.4 --cc=gcc-3.4\
--disable-gcc-check --disable-gfx-check --disable-gcc-check --disable-gfx-check
 +...
 +user@host> make
... ...
user@host> ./arm-softmmu/qemu-system-arm -M gumstix -hda ../flash -nographic user@host> ./arm-softmmu/qemu-system-arm -M gumstix -hda ../flash -nographic
Zeile 192: Zeile 436:
=== Entwicklungsumgebung einspielen === === Entwicklungsumgebung einspielen ===
-Die Entwicklungsumgebung beruht auf ''buildroot''. Die notwendigen Quell- und Generierungsdateien befinden sich auf dem Subversion-Server von Gumstix. Für das Einspielen der Entwicklungsumgebung ist ein Internetzugang notwendig.+Die Entwicklungsumgebung beruht auf ''buildroot'= ALT'. Die notwendigen Quell- und Generierungsdateien befinden sich auf dem Subversion-Server von Gumstix. Für das Einspielen der Entwicklungsumgebung ist ein Internetzugang notwendig.
-Für die verschiedenen Gumstix-Boards gibt es auch <u>verschiedene</u> Entwicklungsumgebungen. Der im Wiki typischerweise angegebene Pfad scheint für das Basix- und das Connex-Board zu sein. Für das Verdex-Board werden mit dem folgenden Kommando die relevanten Dateien ausgecheckt:+Für die verschiedenen Gumstix-Boards gibt es auch <u>verschiedene</u> Entwicklungsumgebungen. Der im Wiki typischerweise angegebene Pfad scheint ist für das Basix- und das Connex-Board. Für das Verdex-Board werden mit dem folgenden Kommando die relevanten Dateien ausgecheckt (hierbei wird ein Benutername und Passwort verlangt: "root"):
<pre> <pre>
-svn co http://svn.gumstix.com/gumstix-buildroot/branches/users/craig/270 gumstix-buildroot+svn co http://svn.gumstix.com/gumstix-buildroot/trunk/ gumstix-buildroot
</pre> </pre>
Zeile 205: Zeile 449:
apt-get install autoconf # Liste muss ergänzt werden!!! apt-get install autoconf # Liste muss ergänzt werden!!!
</pre> </pre>
 +
 +Zusätzlich sind zwei [[media:Buildroot-patches-r1641.tar.bz2|Patches]] nötig, damit buildroot ordnungsgemäß übersetzt werden kann.
Um eine andere Version der Entwicklungsumgebung einzuspielen, wird beim ''co''-Kommando die Releasenummer mit angegeben: Um eine andere Version der Entwicklungsumgebung einzuspielen, wird beim ''co''-Kommando die Releasenummer mit angegeben:
<pre> <pre>
-svn co -r1321 http://svn.gumstix.com/gumstix-buildroot/branches/users/craig/270 gumstix-buildroot+quade@ezs-mobil:/tmp/gumstix/gumstix-buildroot$ svn co -r1352 http://svn.gumstix.com/gumstix-buildroot/trunk/ gumstix-buildroot
</pre> </pre>
-ACHTUNG: Wird das im Verzeichnis einer bestehenden Buildroot-Umgebung durchgeführt, überschreibt respektive tauscht Subversion die Dateien wieder aus! Außerdem: Anscheinend speichert die Release nicht den zugehörigen Kernel respektive die spezifischen Versionen für buildroot und Co. mit ab (das gilt es aber noch einmal genauer zu verifizieren).+<div style="color:red">ACHTUNG: Wird das im Verzeichnis einer bestehenden Buildroot-Umgebung durchgeführt, überschreibt respektive tauscht Subversion die Dateien wieder aus! Außerdem: Anscheinend speichert die Release nicht den zugehörigen Kernel respektive die spezifischen Versionen für buildroot und Co. mit ab (das gilt es aber noch einmal genauer zu verifizieren).</div>
==== Ein neues Root-Filesystem und einen neuen Kernel für den Gumstix generieren ==== ==== Ein neues Root-Filesystem und einen neuen Kernel für den Gumstix generieren ====
 +
 +<div style="color:red">Unter (K)Ubuntu muss vor dem Generieren ein Link geändert werden; ansonsten wird die Datei <tt>/etc/modprobe.conf</tt> "verstümmelt".</div>
 + quade@ezs-mobil:/bin$ ls -l sh
 + lrwxrwxrwx 1 root root 4 2007-04-20 14:05 sh -> dash
 + quade@ezs-mobil:/bin$ sudo su -
 + Password:
 + root@ezs-mobil:~# cd /bin
 + root@ezs-mobil:/bin# rm sh
 + root@ezs-mobil:/bin# ln -s /bin/bash sh
 + root@ezs-mobil:/bin# ls -l sh
 + lrwxrwxrwx 1 root root 9 2007-05-25 18:46 sh -> /bin/bash
 + root@ezs-mobil:/bin#
Sind die Datein heruntergeladen, wird per Sind die Datein heruntergeladen, wird per
Zeile 223: Zeile 481:
... ...
</pre> </pre>
-der Generierungsprozess angestossen. Dabei werden die aktuellen Pakete (z.B. der Linux-Kernel) von den entsprechenden Servern (z.B. http://www.kernel.org)+der Generierungsprozess angestossen. Dabei werden die aktuellen Pakete (z.B. der Linux-Kernel) von den entsprechenden Servern (z.B. http://www.kernel.org) heruntergeladen.
 + 
 +[7.9.2007, J.Q.: Der Orginalkernel hat anscheinend nicht die ausreichende Unterstützung für USB mitgebracht. Dazu ist in der Kernelkonfig <tt>PCI</tt> und danach <tt>USB/OHCI-HCD</tt> einzuschalten.]
-Nach der Generierung finden sich im aktuellen Verzeichnis drei Dateien:+Nach der Generierung finden sich im aktuellen Verzeichnis zwei oder drei relevante Dateien:
{|border=1 {|border=1
| '''uImage''' | '''uImage'''
- | Kernel+ | Kernel (nur r1321)
|- |-
| '''rootfs.arm_nofpu.jffs2''' | '''rootfs.arm_nofpu.jffs2'''
Zeile 266: Zeile 526:
</pre> </pre>
 +=== Bootvorgang ===
 +Auf der SD-Karte liegt die Datei "post_init.sh" in der alle eigenen Befehle eingetragen werden, die nach dem Boot-Vorgang ausgeführt werden sollen.
=== Programme für den Gumstix erzeugen === === Programme für den Gumstix erzeugen ===
Zeile 300: Zeile 562:
Beispielcode (Quellcode plus Makefile) findet sich unter http://docwiki.gumstix.org/Kernel_hello_world Beispielcode (Quellcode plus Makefile) findet sich unter http://docwiki.gumstix.org/Kernel_hello_world
 +
 +=== Gumstix flashen ===
 +
 +In neueren Versionen der Buildroot-Software wird der Kernel getrennt vom Root-Filesystem erzeugt, gehalten und letztlich auch geflasht. Auf unserem ersten Gumstix befindet sich noch u-boot-Version 1.1.4, die den Kernel auf einem jffs2-Filesystem unter dem Namen '''/boot/uImage''' erwartet. Die neuen Gumstix haben sind mit u-boot-Version 1.2.0 versehen. Allerdings kommt diese Version nicht mit dem Ethernet-Interface klar und muss auf eine neuere Revision aktualisiert werden. Mit dieser neueren Revision findet sich die [http://www.gumstix.net/Software/view/Getting-started/Quick-start/111.html Anleitung zum Flashen] auf dem Gumstix-Wiki. Zur Zeit ist bei einem aktuellen U-Boot die Variante per SD-Karte zu flashen die schnellste.
 +
 +Außerdem findet sich [http://www.klc.net.nz/linux/?page_id=10 hier] eine Anleitung, wie man Kernel und Rootfilesystem auf die Micro-SD-Karte auslagern kann.
 +
 +In der Version r1321, muss der generierte Kernel daher an die vorgesehene Stelle kopiert und dann ein neues Root-Filesystem generiert werden. Das kann dann in gewohnter Weise geflasht werden. Bei r1352 befindet sich der Kernel bereits im richtigen Verzeichnis.
 +
 +<div style="color:red">Außerdem gibt es in einigen Versionen ein Problem mit der Datei '''/etc/modprobe.conf'''. Diese enthält fehlerhafte Einträge ("-e") und muss vor dem Generieren des Root-Filesystems noch korrigiert werden. Falls diese fehlerhaften Einträge auftreten, zeigt <tt>/bin/sh</tt> nicht auf <tt>/bin/bash</tt>.</div>
 +
 +Hier der Vorgang:
 +
 + root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# cp uImage build_arm_nofpu/root/boot/
 + root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# vi build_arm_nofpu/root/etc/modprobe.conf
 + ...
 + root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# rm rootfs.arm_nofpu.jffs2
 + root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# make
 + ...
 +
 + (/home/quade/) C-Kermit> send
 + GUM>loadb a2000000
 + (/home/quade/) C-Kermit> send rootfs.arm_nofpu.jffs2
 + (/home/quade/) C-Kermit> connect
 + GUM>pro on 1:0-1 &amp;&amp; jera all &amp;&amp; cp.b a2000000 40000 ${filesize}
 + ...
 + GUM>boot
 +
 +dabei kann es zu einem Problem kommen, welches folgendermaßen gelöst wird:
 +
 + GUM> loadb a2000000
 + ## Ready for binary (kermit) download to 0xA2000000 at 115200 bps...<br>
 + (Back at stefan-laptop)
 + ----------------------------------------------------
 + (/home/stefan/gumstix/save/flobby/image/) C-Kermit>send rootfs.arm_nofpu.jffs2
 + (/home/stefan/gumstix/save/flobby/image/) C-Kermit>c
 + Connecting to /dev/ttyUSB0, speed 115200
 + Escape character: Ctrl-\ (ASCII 28, FS): enabled
 + Type the escape character followed by C to get back,
 + or followed by ? to see other options.
 + ----------------------------------------------------
 + ## Total Size = 0x0032d754 = 3331924 Bytes
 + ## Start Addr = 0xA2000000
 + GUM> pro on 1:0-1 && jera all && cp.b a2000000 40000 ${filesize}
 + Protect Flash Sectors 0-1 in Bank # 1
 + .. done
 + Erase Flash Bank # 1 - Warning: 2 protected sectors will not be erased!
 + .................................................................................................. done
 + Zero length ???
 + GUM> cp.b a2000000 40000 32d754
 + Copy to Flash... done
 + GUM>
 +
 +
 +==== Älteren Kernel und Wlan-Treiber einpflegen ====
 +
 +* Hierzu muss im Verzeichnis /boot das originale uImage mit dem des älteren Kernels ausgetauscht werden ( Vorgehensweise über Kermit siehe [[Gumstix-FAQ#Datentransfer_.C3.BCber_die_serielle_Schnittstelle_.28Linux.29|hier]] )
 +* der Kernel selbst wird ins Verzeichnis /lib/modules kopiert ( das Modul für den Wlan-Stick ( rt73.ko ) ist im Verzeichnis '2.6.18gum/kernel/drivers/usb/net' enthalten )
 +* ins Verzeichnis /lib kommt der Ordner 'firmware', der die Dateien 'rt73.bin' und 'rt73sta.dat' enthält
 +* die Datei 'S55wlan' wird in /etc/init.d kopiert, wobei hier der ganze init.d-Ordner gesichert ist und ausgetauscht werden kann
 +* als letztes findet das Script 'wlan' im root-Ordner seinen Platz ( x-Rechte nicht vergessen ).
 +
 +
 +[[Kategorie:Flobby]]

Aktuelle Version

Inhaltsverzeichnis

[bearbeiten] Offene Fragestellungen

  • USBNET funktioniert nicht! (Problem von Gumstix confirmed)
  • Wieso gibt es nach einem "make" mehrere Pfade für Kernel-Module? (/lib/modules/2.6.21-gum und /lib/modules/2.6.21-rt1-gum)

[bearbeiten] Allgemeines

Das gelieferte Verdex-Board ist mit der folgenden Revision geliefert worden:

# cat /etc/gumstix-release
DISTRIB_ID='gumstix'
DISTRIB_DESCRIPTION=''
DISTRIB_RELEASE='1321'
DISTRIB_CODENAME=''
BUILD_DATE='Thu Mar 1 17:11:07 PST 2007'
BUILD_HOSTNAME='azazel.hughes-family.org'
#                 

Das Bluetooth-Modul scheint vom Typ

Infineon PBA 31308/IES4

zu sein.

[bearbeiten] Inbetriebnahme

[bearbeiten] USB-Serial-Converter

Mit Hilfe der USB-Serial-Converter kann der Gumstix auch über das breakout-vx angeschlossen werden. Hierzu schlißt man den Stecker des USB-Serial-Converters an den FFUART-Anschluss des breakout-vx an. Wichtig ist, dass das rote Kabel auf den Pin für VCC, und das braune Kabel auf den Pin für GND gesteckt wird. Dadurch sind die anderen Kabel automatisch an der richtigen Position.

[bearbeiten] Software

  • Am einfachsten ist es, eine Datei .kermrc mit folgendem Inhalt anlegen:
set line /dev/ttyUSB0
set speed 115200
set reliable
fast
set carrier-watch off
set flow-control none
set prefixing all
set file type bin
set rec pack 4096
set send pack 4096
set window 5
set transfer protocol zmodem {rz} {rz} {sz -w 10000 %s} {sz -w 10000 - a %s} {rz} {rz}

Die letzte Zeile ist notwendig (und steht nicht im Gumstix-Wiki), damit sich per ZModem auch bei Einsatz eines USB-Seriell-Konverters Dateien transferieren lassen. Eventuell müssen Sie /dev/ttyUSB0 gegen /dev/ttyUSB1 austauschen.

Sollen Daten per Bootloader u-boot übertragen werden, muss die letzte Zeile set transfer... weggelassen werden. Stattdessen sollte das Kommando robust verwendet werden.

  • Starten Sie auf dem Host System C-Kermit.
    kermit
  • Verbinden Sie sich mit dem Target (Gumstix) durch Eingabe von connect. Danach sollten die Ausgaben des Gumstix auf dem Host erscheinen.
quade@ezs-mobil:~$ kermit
C-Kermit 8.0.211, 10 Apr 2004, for Linux
 Copyright (C) 1985, 2004,
  Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/home/quade/) C-Kermit>connect
Connecting to /dev/ttyUSB0, speed 115200
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------



Welcome to the Gumstix Linux Distribution!

gumstix login: root
Password: gumstix
Welcome to Gumstix!
By default, this gumstix is configured for CF support.
Unfortunately, this means MMC support has been
disabled out of the box.  To turn on MMC and turn off CF,
edit the file /etc/modules and comment out or delete the pcmcia (CF)
line, and uncomment the MMC lines.  You then also need to comment out
or remove the line "auto mwlan0" in /etc/network/interfaces if it
exists, since it will otherwise cause the pcmcia driver to be loaded.
#
  • Loggen Sie sich auf dem Gumstix mit dem Loginnamen root und dem Passwort gumstix ein.
  • Um wieder zum Kermit-Prompt zu kommen, geben Sie <CTRL>\c (Control-Backslash C) ein.
  • Um Kermit zu beenden geben Sie beim Kermit-Prompt exit ein.

[bearbeiten] Hardware

Gumstix mit Konsolenboard
Gumstix mit Konsolenboard

Geht einfacher über USB-Serial-Converter s. o. Wird der Vollständigkeit halber hier dennoch aufgeführt

  • console-vx eventuell mit zwei Kabeln (Plus/Minus) für die Stromversorgung ausrüsten. Das ist allerdings nicht unbedingt notwendig, weil sich das Board auch per USB mit Strom versorgen lässt.
  • 3 Kabel an eine 9-polige SUB-D Buchse anlöten (Pin 2, 3 und 5). Die Kabel sollten einen solchen Querschnitt haben, dass sie sich in die vorhandene runde Buchse auf das Board console-vx stecken lassen (mittlere Buchse).
  • Motherboard und Konsolenboard zusammenstecken.

[bearbeiten] Datentransfer über die serielle Schnittstelle (Linux)

  • Daten lassen sich über das ZModem-Protokoll zwischen Host und Target tranferieren. Dazu muss auf dem Hostsystem das Paket lrzsz installiert sein.
    apt-get install lrzsz
  • Um Daten vom Host auf den Target zu übertragen, verbinden Sie sich auf dem Target mit Hilfe von Kermit und starten dann (im richtigen Verzeichnis) rz.
  • Kehren Sie per Controll-Sequenz (Control-Backslash C) auf den Kermit-Prompt zurück und verschicken Sie die Datei mit Hilfe des Kommandos send.
# cd /tmp/
# rz
�z waiting to receive.**▒B0100000023be50
(Back at ezs-mobil)
----------------------------------------------------
(/home/quade/) C-Kermit>send /tmp/hello
Sende: hello
Bytes gesendet:   5068   BPS:9087

Übertragung abgeschlossen
(/home/quade/) C-Kermit>connect
Connecting to /dev/ttyUSB0, speed 115200
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
#
  • Um Daten vom Target auf den Host zu übertragen, müssen Sie auf dem Target nur das Kommando sz <Dateiname> eingeben.
#
# sz messages
**▒B0▒▒▒
----------------------------------------------------
Empfange: messages
Bytes empfangen:  11914/  11914   BPS:11321

Übertragung abgeschlossen
----------------------------------------------------
�00000000000
#

[bearbeiten] Datentransfer über die serielle Schnittstelle (u-boot)

...

[bearbeiten] Bluetooth

Bluetooth funktioniert ohne Hardware-Manipulation nicht zusammen mit dem Board console-vx. In Zusammenhang mit dem breakout-vx gibt es keine Probleme.

Der eigentliche Bluetooth-Controller ist per seriellem Interface angebunden und wird damit über den in der CPU eingebauten BTUART bedient. Dieser UART wird über die GPIOs 42 (Receive), 43 (Transmit), 44 (CTS) und 45 (RTS) gesteuert. Der UART respektive der Controller benötigt einen Takt von 32kHz. Die GPIOs müssen für den Bluetooth-Betrieb konfiguriert sein (42: in AF1, 43: out AF2, 44: in AF1, 45: out AF2).

Das Suchen des über den seriell angeschlossenen BT-Controllers wird durch das Programm hci_attach realisiert. Dieses bekommt die zuständige serielle Schnittstelle und den Controllertyp mitgeteilt:
# hciattach /dev/ttyS1 gumstix

Vermutlich ist der Controllertyp gumstix; hciattach -l gibt eine Liste der unterstützten Controllertypen aus.

Bluetooth ist im Auslieferzustand bereits aktiviert. Ansonsten ist Bluetooth über init zu aktivieren:

# /etc/init.d/S30bluetooth start

Gentoo-Bluetooth-Guide


[bearbeiten] Personal Area Network (PAN) via Bluetooth (WPAN) einrichten

Eine Alternative zu der seriellen Schnittstelle ist die Verbindung via Bluetooth mittels TCP/IP-Protokoll. Wahlweise ist der Gumstix oder ein Host als Server zu wählen. Der Server dient als Access Point (NAP).

                        +---------+
                        |   NAP   |
                        +---------+
                       /     |     \
                      /      |      \
                     /       |       \
                    /        |        \
                   /         |         \
                  /          |          \
              +------+    +------+    +------+
              | PANU |    | PANU |    | PANU |
              +------+    +------+    +------+

Als erstes ist auf allen beteiligten Systemen das Modul bnep zu landen:

# modprobe bnep

Der Pan-Daemon wird auf dem Server mit folgendem Kommando aktiviert:

# pand --listen --role NAP --master --autozap

und auf den Clients mit:

# pand --role PANU --search --persist

Bei erfolgreicher Verbindung wird mittels ifconfig -a das Interface bnep0 angezeigt und wie ein normales Ethernet Interface konfiguriert.

# ifconfig -a
bnep0   Link encap:Ethernet  HWaddr 00:06:C6:C4:08:27  
        BROADCAST MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:100 
        RX bytes:4 (4.0 b)  TX bytes:0 (0.0 b)

# ifconfig bnep0 192.168.1.1

Ist bnep0 in der Auflistung nicht vorhanden, reicht es evtl. aus, auf dem Server mittels hcitool einen Scan durchzuführen:

# hcitool scan

Nun ist eine Verbindung per SSH auf dem Gumstix möglich:

# ssh 192.168.1.1

[bearbeiten] USB-Net

USBNET SCHEINT ZUR ZEIT VOM VERDEX-BOARD NICHT UNTERSTÜTZT ZU WERDEN!!!

So würde es aber aller Voraussicht nach gehen:

  • Per usbnet lassen sich mit tcp/ip Daten über USB austauschen. Dazu muss das Target eine USB-Client Schnittstelle (wie auf dem Board console-vx) verfügen. Auf dem Client kann die Schnittstelle per serieller Konsole direkt konfiguriert werden. Der notwendige usbnet-Treiber ist im mitgelieferten Kernel fest eincompiliert.
# ifconfig usb0 192.168.1.1
  • Auf dem Hostsystem müssen die Treiber usbnet und cdc-subnet geladen sein:
root@ezs-mobil# modprobe usbnet
root@ezs-mobil# modprobe cdc-subnet
  • Danach sollte die Konfiguration der usb-Schnittstelle möglich sein:
root@ezs-mobil# ifconfig usb0 192.168.1.2
  • Jetzt sollte die Verbindung zwischen den beiden Rechner stehen...

[bearbeiten] USB-WLAN

Der USB-WLAN-Adapter D-Link DWL-G122 verwendet einen RALINK-Chipsatz, für den es zwei Linux-Treiber gibt:

  1. Einen Herstellertreiber.
  2. Einen Community-Treiber, der auf dem Herstellertreiber basiert.

Die Auguren sagen, dass der Community-Treiber besser funktioniert.

Vorgehen zur Einrichtung

  • Quellcode herunterladen.
  • Makefile anpassen.
  • Treiber generieren.
  • Treiber rt73.ko auf den Gumstix kopieren.
  • Firmware rt73.bin und rt73sta.dat unter /lib/firmware auf dem Gumstix ablegen.
  • Auf dem Gumstix sind folgende Module zu laden:
    • firmware_class
    • ohci_hcd
    • rt73
  • Das Interface ist zu aktivieren.
  • WLAN kann konfiguriert werden.
# insmod rt73.ko
rtusb init ====>
idVendor = 0x7d1, idProduct = 0x3c03
usbcore: registered new driver rt73
# iwconfig
lo        no wireless extensions.

sit0      no wireless extensions.

wlan0     RT73 WLAN
          Link Quality:0  Signal level:0  Noise level:113
          Rx invalid nwid:0  invalid crypt:0  invalid misc:0

# ifconfig wlan0 up
rt73 driver version - 1.0.3.6 CVS
***rt73***: Interface goes up for the first time, activating permanent MAC
***rt73***: Active MAC is: 00:1b:11:02:43:6a.
# iwlist scanning
lo        Interface doesn't support scanning.

sit0      Interface doesn't support scanning.

wlan0     Scan completed :
          Cell 01 - Address: 00:12:BF:2D:D0:4D
                    ESSID:"WLAN"
                    Mode:Managed
                    Channel:1
                    Encryption key:on
                    Bit Rates:130 Mb/s
          Cell 02 - Address: 00:0F:66:D2:FB:0A
                    ESSID:"tuopeek"
                    Mode:Managed
                    Channel:3
                    Encryption key:on
                    Bit Rates:6 Mb/s

# iwconfig wlan0 essid tuopeek
# iwconfig wlan0 key 1212121212121212...
# ifconfig wlan0 192.168.69.100
# ping 192.168.69.1
PING 192.168.69.1 (192.168.69.1): 56 data bytes
84 bytes from 192.168.69.1: icmp_seq=0 ttl=255 time=19.0 ms
84 bytes from 192.168.69.1: icmp_seq=1 ttl=255 time=6.2 ms
84 bytes from 192.168.69.1: icmp_seq=2 ttl=255 time=7.2 ms
84 bytes from 192.168.69.1: icmp_seq=3 ttl=255 time=7.3 ms

--- 192.168.69.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 6.2/9.9/19.0 ms

Hier noch das Makefile (rt73-cvs-2007061312):

MODULE_NAME := rt73
IF_NAME :=     wlan*

FIRMWARES :=   rt73.bin
FIRM_DIR :=    /lib/firmware

OLD_IF_NAME := ra0
CONFIG_DIR :=  /etc/Wireless/RT73STA
CONFIG_FILE := rt73sta.dat

EXTRA_CFLAGS += -DAGGREGATION_SUPPORT -DWMM_SUPPORT

ifeq ($(DEBUG),y)
        CFLAGS += -O -g         # -O is need to expand inlines
else
        CFLAGS += -O2
endif

ifneq ($(KERNELRELEASE),)

WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs

CFLAGS += $(WFLAGS)

obj-m := rt73.o

$(MODULE_NAME)-objs :=  rtmp_main.o mlme.o connect.o rtusb_bulk.o rtusb_io.o \
                        sync.o assoc.o auth.o auth_rsp.o rtusb_data.o \
                        rtmp_init.o  sanity.o rtmp_wep.o rtmp_info.o \
                        rtmp_tkip.o wpa.o md5.o


else

PWD                := $(shell pwd)

GUMSTIX_BUILDROOT   = $(PWD)/../../gumstix-buildroot
BUILD_ARM           = $(wildcard $(GUMSTIX_BUILDROOT)/build_arm*)
KERNELDIR          ?= $(wildcard $(BUILD_ARM)/linux-*)
CROSS_COMPILE       = $(BUILD_ARM)/staging_dir/bin/arm-linux-

kernel-module:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules

clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.symvers

#
#----------------------------------------------------------------------------
endif

Auf dem Gumstix wird beim Booten folgendes Skript abgearbeitet:

#!/bin/sh

echo "loading drivers..."
modprobe ohci_hcd
modprobe firmware_class
modprobe rt73

sleep 1

echo "activating interface..."
ifconfig wlan0 up
iwconfig wlan0 mode ad-hoc essid flobby
iwconfig wlan0 channel 5
ifconfig wlan0 192.168.97.11
ip route add default via 192.168.97.10

Damit wird ein Ad-Hoc-Netzwerk aufgebaut, so dass ein Access-Point nicht benötigt wird. Damit das Skript beim Booten gestartet wird, wird ein symbolic link angelegt:

# ln -s /root/wlan /etc/init.d/S60wlan

Der Client (Notebook), der mit dem Flobby kommunizieren will, benötigt ebenfalls ein kleines Skript:

#!/bin/bash

iwconfig eth1 mode ad-hoc essid flobby channel 5
ifconfig eth1 192.168.97.10
echo 1 >/proc/sys/net/ipv4/ip_forward

Folgende IPs sind schon vergeben (192.168.97.*):

  • 10-13: Gumstix
  • 101: Quade
  • 105: Hammer
  • 106: Elmouakibi (Master)
  • 107: Esser (Master)
  • 108: Verhoeven (Master)
  • 110: Krickl
  • 213: Zenzes
  • 200-202: Clemens
  • 227: Tellers


Hier Links zur Einrichtung:

[bearbeiten] Emulator

Für den Gumstix gibt es hier Informationen zur Emulation http://www.bitmux.org/qemu.html.

user@host> cd qemu
user@host> ./configure --target-list=arm-softmmu --host-cc=gcc-3.4 --cc=gcc-3.4\
       --disable-gcc-check --disable-gfx-check 
...
user@host> make
...
user@host>  ./arm-softmmu/qemu-system-arm -M gumstix -hda ../flash -nographic

flash ist das mitgelieferte Gumstix-Image. Ein eigenes Image konnte noch nicht zur Mitarbeit überredet werden.

[bearbeiten] Entwicklungsumgebung einspielen

Die Entwicklungsumgebung beruht auf buildroot'= ALT'. Die notwendigen Quell- und Generierungsdateien befinden sich auf dem Subversion-Server von Gumstix. Für das Einspielen der Entwicklungsumgebung ist ein Internetzugang notwendig.

Für die verschiedenen Gumstix-Boards gibt es auch verschiedene Entwicklungsumgebungen. Der im Wiki typischerweise angegebene Pfad scheint ist für das Basix- und das Connex-Board. Für das Verdex-Board werden mit dem folgenden Kommando die relevanten Dateien ausgecheckt (hierbei wird ein Benutername und Passwort verlangt: "root"):

svn co http://svn.gumstix.com/gumstix-buildroot/trunk/ gumstix-buildroot

Damit liegt die aktuelle Version im Unterordner gumstix-buildroot vor. Zur Generierung müssen eine Reihe von Paketen auf dem Hostsystem vorhanden sein.

apt-get install autoconf # Liste muss ergänzt werden!!!

Zusätzlich sind zwei Patches nötig, damit buildroot ordnungsgemäß übersetzt werden kann.

Um eine andere Version der Entwicklungsumgebung einzuspielen, wird beim co-Kommando die Releasenummer mit angegeben:

quade@ezs-mobil:/tmp/gumstix/gumstix-buildroot$ svn co -r1352 http://svn.gumstix.com/gumstix-buildroot/trunk/ gumstix-buildroot
ACHTUNG: Wird das im Verzeichnis einer bestehenden Buildroot-Umgebung durchgeführt, überschreibt respektive tauscht Subversion die Dateien wieder aus! Außerdem: Anscheinend speichert die Release nicht den zugehörigen Kernel respektive die spezifischen Versionen für buildroot und Co. mit ab (das gilt es aber noch einmal genauer zu verifizieren).

[bearbeiten] Ein neues Root-Filesystem und einen neuen Kernel für den Gumstix generieren

Unter (K)Ubuntu muss vor dem Generieren ein Link geändert werden; ansonsten wird die Datei /etc/modprobe.conf "verstümmelt".
quade@ezs-mobil:/bin$ ls -l sh
lrwxrwxrwx 1 root root 4 2007-04-20 14:05 sh -> dash
quade@ezs-mobil:/bin$ sudo su -
Password:
root@ezs-mobil:~# cd /bin
root@ezs-mobil:/bin# rm sh
root@ezs-mobil:/bin# ln -s /bin/bash sh
root@ezs-mobil:/bin# ls -l sh
lrwxrwxrwx 1 root root 9 2007-05-25 18:46 sh -> /bin/bash
root@ezs-mobil:/bin#                                  

Sind die Datein heruntergeladen, wird per

quade@ezs-mobil:~/gumstix/gumstix-buildroot$ make defconfig
...
quade@ezs-mobil:~/gumstix/gumstix-buildroot$ make
...

der Generierungsprozess angestossen. Dabei werden die aktuellen Pakete (z.B. der Linux-Kernel) von den entsprechenden Servern (z.B. http://www.kernel.org) heruntergeladen.

[7.9.2007, J.Q.: Der Orginalkernel hat anscheinend nicht die ausreichende Unterstützung für USB mitgebracht. Dazu ist in der Kernelkonfig PCI und danach USB/OHCI-HCD einzuschalten.]

Nach der Generierung finden sich im aktuellen Verzeichnis zwei oder drei relevante Dateien:

uImage Kernel (nur r1321)
rootfs.arm_nofpu.jffs2 Root-Filesystem
u-boot.bin Bootloader (muss typischerweise nicht neu geflasht werden)

[bearbeiten] Generierten Kernel testen

Zunächst wird der generierte Kernel umbenannt:

quade@ezs-mobil> cp gumstix-buildroot/build_arm_nofpu/root/boot/uImage /tmp/kernel2.6.18gum

Danach wird der Kernel z.B. per Kermit auf den Gumstix (Target) geladen:

gumstix# cd /boot
gumstix# rz
...
<per ctrl-\c auf Kermit zurückschalten>
c-kermit> send /tmp/kernel2.6.18gum
...

Nach dem Laden wird der Gumstix neu gebootet, dabei direkt in den Bootloader gehen (also Bootvorgang unterbrechen), den neuen Kernel aus dem Filesystem in den Speicher laden und den Bootvorgang fortsetzen:

...
GUM> fsload a2000000 /boot/kernel2.6.18gum
GUM> bootm a2000000
...

[bearbeiten] Bootvorgang

Auf der SD-Karte liegt die Datei "post_init.sh" in der alle eigenen Befehle eingetragen werden, die nach dem Boot-Vorgang ausgeführt werden sollen.

[bearbeiten] Programme für den Gumstix erzeugen

Makefile:

CC=../gumstix-buildroot/build_arm_nofpu/staging_dir/bin/arm-linux-gcc

all: hello

clean:
        rm -f hello *.o

Quelltext (hello.c):

#include <stdio.h>

int main( int argc, char **argv )
{
        printf("hello world\n");
        return 0;
}

Der Quelltext hello.c befindet sich in einem (eigenen) Verzeichnis unterhalb des Buildroot-Verzeichnisses. Durch Aufruf von make wird das Programm hello generiert, das dann auf den Gumstix geladen und dort getestet werden kann.

Bezüglich besonderer Bibliotheksfunktionen kann es natürlich noch Schwierigkeiten geben...

[bearbeiten] Treiber für den Gumstix generieren

Beispielcode (Quellcode plus Makefile) findet sich unter http://docwiki.gumstix.org/Kernel_hello_world

[bearbeiten] Gumstix flashen

In neueren Versionen der Buildroot-Software wird der Kernel getrennt vom Root-Filesystem erzeugt, gehalten und letztlich auch geflasht. Auf unserem ersten Gumstix befindet sich noch u-boot-Version 1.1.4, die den Kernel auf einem jffs2-Filesystem unter dem Namen /boot/uImage erwartet. Die neuen Gumstix haben sind mit u-boot-Version 1.2.0 versehen. Allerdings kommt diese Version nicht mit dem Ethernet-Interface klar und muss auf eine neuere Revision aktualisiert werden. Mit dieser neueren Revision findet sich die Anleitung zum Flashen auf dem Gumstix-Wiki. Zur Zeit ist bei einem aktuellen U-Boot die Variante per SD-Karte zu flashen die schnellste.

Außerdem findet sich hier eine Anleitung, wie man Kernel und Rootfilesystem auf die Micro-SD-Karte auslagern kann.

In der Version r1321, muss der generierte Kernel daher an die vorgesehene Stelle kopiert und dann ein neues Root-Filesystem generiert werden. Das kann dann in gewohnter Weise geflasht werden. Bei r1352 befindet sich der Kernel bereits im richtigen Verzeichnis.

Außerdem gibt es in einigen Versionen ein Problem mit der Datei /etc/modprobe.conf. Diese enthält fehlerhafte Einträge ("-e") und muss vor dem Generieren des Root-Filesystems noch korrigiert werden. Falls diese fehlerhaften Einträge auftreten, zeigt /bin/sh nicht auf /bin/bash.

Hier der Vorgang:

root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# cp uImage build_arm_nofpu/root/boot/
root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# vi build_arm_nofpu/root/etc/modprobe.conf
...
root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# rm  rootfs.arm_nofpu.jffs2
root@ezs-mobil:/home/quade/gumstix/gumstix-buildroot# make
...
(/home/quade/) C-Kermit> send 
GUM>loadb a2000000
(/home/quade/) C-Kermit> send rootfs.arm_nofpu.jffs2
(/home/quade/) C-Kermit> connect
GUM>pro on 1:0-1 && jera all && cp.b a2000000 40000 ${filesize}
...
GUM>boot

dabei kann es zu einem Problem kommen, welches folgendermaßen gelöst wird:

GUM> loadb a2000000
## Ready for binary (kermit) download to 0xA2000000 at 115200 bps...
(Back at stefan-laptop) ---------------------------------------------------- (/home/stefan/gumstix/save/flobby/image/) C-Kermit>send rootfs.arm_nofpu.jffs2 (/home/stefan/gumstix/save/flobby/image/) C-Kermit>c Connecting to /dev/ttyUSB0, speed 115200 Escape character: Ctrl-\ (ASCII 28, FS): enabled Type the escape character followed by C to get back, or followed by ? to see other options. ---------------------------------------------------- ## Total Size = 0x0032d754 = 3331924 Bytes ## Start Addr = 0xA2000000 GUM> pro on 1:0-1 && jera all && cp.b a2000000 40000 ${filesize} Protect Flash Sectors 0-1 in Bank # 1 .. done Erase Flash Bank # 1 - Warning: 2 protected sectors will not be erased! .................................................................................................. done Zero length ??? GUM> cp.b a2000000 40000 32d754 Copy to Flash... done GUM>


[bearbeiten] Älteren Kernel und Wlan-Treiber einpflegen

  • Hierzu muss im Verzeichnis /boot das originale uImage mit dem des älteren Kernels ausgetauscht werden ( Vorgehensweise über Kermit siehe hier )
  • der Kernel selbst wird ins Verzeichnis /lib/modules kopiert ( das Modul für den Wlan-Stick ( rt73.ko ) ist im Verzeichnis '2.6.18gum/kernel/drivers/usb/net' enthalten )
  • ins Verzeichnis /lib kommt der Ordner 'firmware', der die Dateien 'rt73.bin' und 'rt73sta.dat' enthält
  • die Datei 'S55wlan' wird in /etc/init.d kopiert, wobei hier der ganze init.d-Ordner gesichert ist und ausgetauscht werden kann
  • als letztes findet das Script 'wlan' im root-Ordner seinen Platz ( x-Rechte nicht vergessen ).
Persönliche Werkzeuge