Forum: Mikrocontroller und Digitale Elektronik Grasshopper und OpenWrt


von Christian Z. (christianz)


Lesenswert?

Hallo,

ich habe gerade mal wieder meinen Grasshopper (AVR32-Board) rausgekramt.

Ich sehe, dass mittlerweile ein Port von OpenWrt für AVR32 existiert. 
(Das ATNGW100 wird explizit als unterstützte Hardware aufgeführt.) Hat 
schon einmal jemand versucht, OpenWrt auf dem Grasshopper einzusetzen? 
Interessant an OpenWrt ist u.a., dass es eine Vielzahl an fertigen 
Anwendungen in Form von Packages gibt.

Christian

von Christian Z. (christianz)


Lesenswert?

Hmm, hat das noch keiner probiert? Muss ich das wirklich am WE einfach 
mal selber testen?

von Axel Thobaben (Gast)


Lesenswert?

Hallo Christian,
Bist Du schon weiter gekommen? Ich habe grade versucht meine 
Std.-Buildroot Umgebung mit OWFS und FUSE zu erweitern und habe mir 
dabei das Patch zerschossen.
Beim Googlen bin ich dann auf OpenWrt gestossen und frage mich nun, ob 
es einen Grasshopper mit OpenWrt gibt...

Gruss,
Axel

von Christian Z. (christianz)


Lesenswert?

Axel, nein, leider habe ich OpenWrt auch nicht auf den Grasshopper 
bekommen. (Ich habe allerdings auch nicht viel Zeit darauf verwendet.)

von Christian Z. (christianz)


Lesenswert?

Dieses Wochenende habe ich mich mal wieder mit dem Thema OpenWrt auf dem 
AVR32 Grasshopper beschäftigt und -- deshalb hole ich den alten Thread 
nochmal nach oben -- eine lauffähige Version davon erzeugt.

Ihr findet ein JFFS2-Image eines schlanken OpenWrt-Systems für den 
Grasshopper jetzt unter 
http://www.chzsoft.de/grasshopper/openwrt-avr32-jffs2-64k-uimage.img 
(knapp 2 MiB)

Es handelt sich dabei um einen OpenWrt basierend auf dem heute aktuellen 
Stand (SVN Revision 19786) mit folgenden Änderungen:
- Es kommt ein Linux-Kernel 2.6.30.9 zum Einsatz, der für den 
Grasshopper gepatcht wurde. Vorteil dieser Kernelversion: Es stehen auf 
der OpenWrt-Seite fertige Pakete der einzelnen Kernelmodule bereit, die 
bequem mit dem Paketmanager (s. unten) eingespielt werden können.
- Das Netzwerkinterface wurde konfiguriert, sich per DHCP eine IP zu 
besorgen.
- Der Kernel ist als "/boot/uImage" in das JFFS2-Image integriert, so 
dass das obige Image direkt als Ersatz für das Standardimage dienen 
kann. Der Bootloader U-Boot muss dazu nicht modifiziert werden.

Ein paar Hinweise zum Einstieg:
- Im Wiki http://www.mikrocontroller.net/articles/AVR32_Grasshopper ist 
beschrieben, wie man ein neues Rootdateisystem flasht.
- Damit der SSH-Zugang aktiv wird, muss entweder über die serielle 
Konsole (d.h. über die USB-Schnittstelle) oder über Telnet ein 
Root-Passwort gesetzt werden.
- Der Paketmanager heißt opkg. Mit "opkg update" lädt man eine Liste der 
verfügbaren Pakete, mit "opkg list" zeigt man diese an und mit "opkg 
install paketname" installiert man ein Paket.
- An Software installiert sind u.a. bereits ein cgi-bin-fähiger 
HTTP-Server (liefert Dateien aus "/www" aus) und die Skriptsprache lua.

Abschließend ein Hinweis: Ich übernehme keine Haftung für Schäden, 
Probleme etc., die aus der Verwendung des Images resultieren. Über 
Feedback freue ich mich trotzdem.

Christian

von Dilldepp (Gast)


Lesenswert?

Hallo christianz,

tolle Arbeit! Ich war schon eine Weile auf der Suche nach OpenWRT auf 
dem Grasshopper. Nach einigen Wochen frustrierendem "Gefrickel" an 
ICNova und ATMEL Toolchains endlich mal ein Kernel und ein JFF2 Image, 
das funktioniert.

DANKE !

Einen kleinen Wermutstropfen hat das Ganze leider doch. Ich habe an 
meinem Hopper eine SDCard angeschlossen, die unter UBOOT und anderen 
Kernels gut funktioniert.

Ich kann die für die SDcard benötigten Module via OPKG INSTALL 
nachinstallieren. Leider werden nur zwei (mmc-block, mmc-core) der drei 
benötigten Module geladen. Das Modul "atmel-mci" beendet sich immer mit 
der Meldung:

insmod: can't insert 'atmel-mci': No such device

Hast Du irgendeine Idee, was ich da noch machen kann?

Gruß dilldepp

von Christian Z. (christianz)


Lesenswert?

Es kann sein, dass zur Verwendung von SD-Cards irgendwas in den Kernel 
fest eincompiliert werden muss, das in meinem Image nicht drin ist. Du 
musst dann den Kernel neu compilieren.

Unter 
http://www.chzsoft.de/grasshopper/openwrt-r19787-grasshopper.patch.gz 
habe ich einen Patch gegen SVN-Rev. 19787 von OpenWRT abgelegt. Damit 
kannst Du Dein eigenes OpenWRT-Image für den Grasshopper erzeugen. 
Folgende Schritte sind nötig:

Auschecken mit SVN in den Ordner openwrt:
svn co -r 19787 svn://svn.openwrt.org/openwrt/trunk/ openwrt

Vorher entpackten Patch (s.o.) anwenden:
patch -p1 -d openwrt < openwrt-r19787-grasshopper.patch

OpenWRT konfigurieren und Image erstellen:
cd openwrt
make menuconfig
make

Meine Konfigurationsdatei liegt als Starthilfe unter 
http://www.chzsoft.de/grasshopper/openwrt-r19787-grasshopper.config.gz 
bereit. Einfach entpacken und als ".config" in den openwrt-Ordner 
kopieren.

von Dilldepp (Gast)


Lesenswert?

Hallo christianz,

danke für die ausführliche Anleitung.

Das Auschecken, Patchen und der MAKE Vorgang liefen einwandfrei durch.

Im nächsten Durchlauf aktiverte ich den MMC Support in allen denkbaren 
Varianten (ATMEL-MCI, SPI-MMC, GPIO-MMC usw.).

Es blieb immer beim selben Ergebnis: Das Modul kann nicht geladen 
werden, weil das Device nicht existiert.

Im Moment bin ich mir nicht so sicher, welches device gemeint ist 
(Physikalisch oder in /dev).

Was mich wundert ist, dass es beim NGW100 ohne zu Murren funktioniert. 
Im Prizip hat der Grasshopper doch nur eine etwas andere 
Speicheraufteilung ?

Ich bleibe dran.

Bis dann. Gruß Dilldepp.

von Christian Z. (christianz)


Lesenswert?

Hmm, aus irgendeinem Grund werden die entsprechenden Zeilen für MMC in 
arch/avr32/boards/grasshopper/setup.c nicht mitcompiliert, selbst wenn 
CONFIG_MMC_ATMELMCI gesetzt ist. Ich gehe dem nach, wenn ich mal mehr 
Zeit habe. Evtl. hilft es Dir bis dahin, ein

#define CONFIG_MMC_ATMELMCI y

an den Anfang der oben genannten Datei zu setzen und den Kernel nochmal 
zu compilieren.

von Christian Z. (christianz)


Lesenswert?

Außerdem fehlt in arch/avr32/boards/grasshopper/setup.c noch ein

#include <linux/atmel-mci.h>

damit die Datei mit CONFIG_MMC_ATMELMCI compiliert. Dann lässt sich das 
Kernel-Modul atmel-mci.ko auch laden. Hoffe, das hilft. Wenn ich mehr 
Zeit habe, fixe ich das ganze noch einmal richtig.

von Christian Z. (christianz)


Lesenswert?

Das JFFS2-Image unter 
http://www.chzsoft.de/grasshopper/openwrt-avr32-jffs2-64k-uimage.img 
wurde aktualisiert:

- basierend auf OpenWRT SVN-Rev. 20651,
- mit Linux-Kernel 2.6.32.10, für den es z.Zt. fertige Pakete gibt,
- diesmal vorbereitet für die Installation von kmod-mmc-atmelmci (testen 
kann ich es mangels SD-Card nicht).

Patch: 
http://www.chzsoft.de/grasshopper/openwrt-r20651-grasshopper.patch.gz
Config: 
http://www.chzsoft.de/grasshopper/openwrt-r20651-grasshopper.config.gz

von Dilldepp (Gast)


Lesenswert?

Hallo Christianz,

es klappt. :-))

Die SD-Card wird erkannt, das Mosul kann fehlerfrei eingebunden werden.
Beim Einbinden des KMOD-FS-VFAT bekomme ich allerdings eine Menge 
Fehler, das Einsprungpunkte nicht gefunden werden können. Scheinbar lade 
ich ein Modul für eine anderen Kernelversion.

Ich schaue mir das in den nächsten Tagen noch einmal an und poste die 
genaue Fehlermeldung.

Mir fehlt ein wenig die Zeit detaillierter zu antworten.

Auf jeden Fall noch einmal vielen Dank. Tolle Arbeit !

Bis dann.

von Dilldepp (Gast)


Lesenswert?

So, hier die versprochenen Fehlermeldungen. Egal, welche Paketquelle 
(Deine Webseite oder Openwrt) ich angebe.

In beiden Fällen die selbe Fehlermeldungen und damit ist kein mount 
möglich....

Downloading 
http://www.chzsoft.de/grasshopper/openwrt/kmod-nls-base_2.6.32.10-1_avr32.ipk.
Configuring kmod-fs-vfat.
fat: Unknown symbol load_nls
fat: Unknown symbol utf16s_to_utf8s
fat: Unknown symbol unload_nls
vfat: Unknown symbol fat_dir_empty
vfat: Unknown symbol fat_time_unix2fat
vfat: Unknown symbol fat_get_dotdot_entry
vfat: Unknown symbol fat_free_clusters
vfat: Unknown symbol fat_setattr
vfat: Unknown symbol fat_scan
vfat: Unknown symbol fat_search_long
vfat: Unknown symbol fat_getattr
vfat: Unknown symbol fat_fs_error
vfat: Unknown symbol fat_attach
vfat: Unknown symbol fat_build_inode
vfat: Unknown symbol fat_fill_super
vfat: Unknown symbol fat_alloc_new_dir
vfat: Unknown symbol fat_remove_entries
vfat: Unknown symbol fat_add_entries
vfat: Unknown symbol fat_sync_inode
vfat: Unknown symbol utf8s_to_utf16s
vfat: Unknown symbol fat_detach
Configuring kmod-nls-base.
root@OpenWrt:/etc#


Witzigerweise funktioniert KMOD-FS-EXT3 ohne Probleme. Habe z.Zt leider 
nur SC-Cards mit VFAT zur Hand :-(

von Christian Z. (christianz)


Lesenswert?

Auch hier gilt: Es kann sein, dass, Routinen, die von keinem zu 
compilierenden Modul benötigt werden, nicht in den Kernel eincompiliert 
werden, um diesen klein zu halten

Hier dürfte helfen, OpenWRT inkl. Kernel wie ich es oben beschrieben 
habe (aber diesmal ausgehend von SVN-Revision 20651) zu bauen und dabei 
"kmod-fs-vfat" als Package zu aktivieren.

von Dilldepp (Gast)


Lesenswert?

Die selben Fehlermeldungen kommen beim Einbinden des Moduls 
KMOD-FS-MSDOS.

Ich konnte aber erfolgreich das Modul KMOD-FS-NTFS einbinden. Scheinbar 
kann es aber nur lesen und nicht schreiben.

Wie auch immer, nachdem ich die SD-CArd mit NTFS formatiert hatte, 
konnte ich die Karte mounten und die Dateien von der SD-Card ins /tmp 
Verzeichnis kopieren. Ein binärer Vergleich zeigte, dass der 
Kopiervorgang fehlerfrei war.

Soweit, so gut.

Hat Du noch eine Idee, was mit den beiden FAT-Modulen los ist?

von Dilldepp (Gast)


Lesenswert?

das Programmpaket nfts-3g kann auch schreibend auf ein NTFS FS 
zugreifen.

Und was das Beste ist: es scheint auch zu funktionieren. Wahnsinn !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.