Moin Leute, ich bin Linux und Grasshopper Anfänger und habe ein kleines Problem. Nachdem ich jetzt ein funktionierendes Ubuntu 8.04 habe und die erforderlichen Pakete installiert habe kann ich make ausführen. Dabei verwende ich Buildroot 2.3.0 mit dem Patch aus dem zugehörigen Thread. Allerdings bricht make wie folgt ab: Checking build system dependencies: BUILDROOT_DL_DIR clean: Ok CC clean: Ok CXX clean: Ok CPP clean: Ok CFLAGS clean: Ok INCLUDES clean: Ok CXXFLAGS clean: Ok which installed: Ok sed works: Ok (/bin/sed) GNU make version '3.81': Ok C compiler '/usr/bin/gcc' C compiler version '4.2.4': Ok C++ compiler '/usr/bin/g++' C++ compiler version '4.2.4': Ok patch installed: FALSE You must install 'patch' on your build machine Welchen patch muss ich denn hier installieren?? Vielen Dank Dirk
Du musst die Software "patch" installieren:
1 | sudo apt-get install patch |
Wenn du schon dabei bist, solltest du auch direkt alle anderen wichtigen Pakete prüfen, die fürs Buildroot installiert sein müssen (siehe Dokumentation). MfG Marius
Autsch - Das war ja sehr einfach ;-) Jetzt klappt es, patch und gettest waren nicht auf der "HowTo-Liste". Leider kann ich momentan die MPFR Libary nicht runterladen. Kann jemand die mpfr-2.3.0.tar.bz2 hier reinstellen? Und reicht es wenn ich die Datei vor dem nächstem make in das buildroot/dl Verzeichnis stecke? Vielen Dank Dirk
Jo, sollte reichen, wenn du die einfach ins dl-Verzeichnis packst. Hier nen funktionierender DL-Link: https://gforge.inria.fr/frs/download.php/2678/mpfr-2.3.0.tar.bz2 MfG Marius
Vielen Dank, das hat geholfen. Jetzt ist er nach über einer Stunde gerödel ausgestiegen, weil ihm die termcap-Libary fehlt :-( configure: error: no termcap library found make[2]: *** [configure-gdb] Fehler 1 Wenn ich es richtig recherchiert habe sollte es zu beheben sein indem ich emacs installiere - mal sehen Nö! Ich habe zwar die termcap-1.3.1.tar.gz, aber wohin muss ich die entpacken? Das wird wohl noch ein langer Weg bis ich das alles überblicke...
Wichtig ist, daß du nicht nur irgendwelche Bibliotheken installiert hast, sondern auch die dazugehörigen "development" - Pakete. Diese enthalten die Header-Dateien zu der Bibliothek und meistens auch eine statische Ausgabe der Bibliothek. Insbesondere die Header-Dateien brauchst du, um auf deinem System eigene Programme kompilieren zu können, die diese Bibliotheken nutzen. Die dev-Pakete sind meistens nicht von Haus aus installiert, da fertig kompilierte Programme diese nicht brauchen. Meistens enden die Pakete mit -dev oder -devel.
Ok, wer lesen kann ist im Vorteil. Wenn man die Datei entpackt kann man auch das Readme und die Installationsanleitung für die Bibliothek lesen und schon funktioniert es mit der Installation ;-) Jetzt rödelt make wieder weiter ------- das dauert ja ewig!
Ich dokumentiere meinen Weg mal weiter, vielleicht hilft es ja irgendwann mal jemanden: Jetzt fehlte noch dies: http://zlib.net/ compr_lzo.c:29:23: Fehler: lzo/lzo1x.h: No such file or directory compr_lzo.c: In Funktion »jffs2_lzo_cmpr«: compr_lzo.c:54: Warnung: Implizite Deklaration der Funktion »lzo1x_999_compress« compr_lzo.c:56: Fehler: »LZO_E_OK« nicht deklariert (erste Benutzung in dieser Funktion) compr_lzo.c:56: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt compr_lzo.c:56: Fehler: für jede Funktion in der er auftritt.) compr_lzo.c: In Funktion »jffs2_lzo_decompress«: compr_lzo.c:74: Warnung: Implizite Deklaration der Funktion »lzo1x_decompress_safe« compr_lzo.c:76: Fehler: »LZO_E_OK« nicht deklariert (erste Benutzung in dieser Funktion) compr_lzo.c: In Funktion »jffs2_lzo_init«: compr_lzo.c:95: Fehler: »LZO1X_999_MEM_COMPRESS« nicht deklariert (erste Benutzung in dieser Funktion) Gibt es eigentlich irgendwo eine vollständige Liste der nötigen Pakete? Die Angaben im HowTo sind ja nicht wirklich vollständig. Bis dann Dirk
Es fehlte nicht die zlib, sondern: http://www.oberhumer.com/opensource/lzo/download/ Allerdings gibt es jetzt wieder einen anderen Fehler: collect2: ld gab 1 als Ende-Status zurück make[1]: *** [mkfs.jffs2] Fehler 1 Damit kann ich bisher nichts anfangen, mal sehen wer schneller ist Ihr oder ich ;-)
Hallo, nach der Kubuntu-Installation (8.04) habe ich noch die folgenden Pakete nachinstalliert um alles korrekt übersetzen zu können: build-essential flex bison gettext libtool texinfo autoconf autoconf2.13 automake libncurses-dev zlib1g-dev libacl1-dev liblzo2-dev Ich hoffe es hilft weiter. Sebastian
Ich habe die Pakete kontrolliert, aber ich bekomme weiterhin einen Fehler. Hier mal eine ausführliche Ausgabe:
1 | make[1]: Betrete Verzeichnis '/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig' |
2 | gcc -o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2 /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/compr_rtime.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/compr_zlib.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/compr_lzo.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/compr.o -lz -llzo2 |
3 | gcc -I./include -O2 -Wall -g -o mkfs.jffs2 mkfs.jffs2.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2 |
4 | mkfs.jffs2.o: In function `crc32': |
5 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
6 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
7 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
8 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
9 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
10 | mkfs.jffs2.o:/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: more undefined references to `crc32_table' follow |
11 | mkfs.jffs2.o: In function `write_regular_file': |
12 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:845: undefined reference to `jffs2_compress' |
13 | mkfs.jffs2.o: In function `crc32': |
14 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
15 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
16 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
17 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
18 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
19 | mkfs.jffs2.o:/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: more undefined references to `crc32_table' follow |
20 | mkfs.jffs2.o: In function `main': |
21 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1621: undefined reference to `jffs2_compressors_init' |
22 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1762: undefined reference to `jffs2_compression_check_set' |
23 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1749: undefined reference to `jffs2_disable_compressor_name' |
24 | mkfs.jffs2.o: In function `crc32': |
25 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
26 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
27 | mkfs.jffs2.o: In function `main': |
28 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1840: undefined reference to `jffs2_compression_check_get' |
29 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1844: undefined reference to `jffs2_compressors_exit' |
30 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1744: undefined reference to `jffs2_set_compression_mode_name' |
31 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1768: undefined reference to `jffs2_set_compressor_priority' |
32 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1759: undefined reference to `jffs2_list_compressors' |
33 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1754: undefined reference to `jffs2_enable_compressor_name' |
34 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1840: undefined reference to `jffs2_compression_check_errorcnt_get' |
35 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1841: undefined reference to `jffs2_compression_check_errorcnt_get' |
36 | /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1836: undefined reference to `jffs2_stats' |
37 | collect2: ld gab 1 als Ende-Status zurück |
38 | make[1]: *** [mkfs.jffs2] Fehler 1 |
Die Liste der Pakete, die du für einen erfolgreichen Durchlauf vom buildroot brauchst, sollten in der Dokumentation vom buildroot drin stehen. Bei www.atmel.no/buildroot gibts die Liste auf jeden Fall, aber derzeit siehts irgendwie danach aus, als wäre der Server down. Wenn du alles installiert hast und es dennoch nicht klappt, lösch einfach mal das Buildroot-Verzeichnis (dl-Unterverzeichnis vorher sichern erspart erneuetes Downloaden). Bei mir hats unter Kubuntu 8.04 auf jedenfall einwandfrei gelaufen. MfG Marius
Ja der norwegische Atmel Server ist seit einiger Zeit offline und auch die AVRfreaks-Seite funktioniert nicht mehr. Wenn ich es richtig sehe entsteht das Betriebssystem im Ordner project_build_avr32/grasshopper/? Das werde ich mal löschen, wenn ich das ganze buildroot-Verzeichniss lösche kann ich ja auch kein make mehr ausführen.
Die Lösung lag auf dem Atmel.no Server, dank Google-Cache funktioniert es jetzt :-)
1 | Undefined reference to `crc32_table' |
2 | |
3 | The user experiences, when compiling mkfs.jffs2, that it fails with errors about undefined reference to crc32_table. The error message is something similar to: |
4 | |
5 | mtd_orig/crc32.h:15: undefined reference to 'crc32_table' |
6 | mtd_orig/crc32.h:15: undefined reference to 'crc32_table' |
7 | mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
8 | mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
9 | mtd_orig/crc32.h:15: undefined reference to `crc32_table' |
10 | mkfs.jffs2.o: mtd_orig/crc32.h:15: more undefined references |
11 | to `crc32_table' follow |
12 | mkfs.jffs2.o: In function `write_regular_file': |
13 | |
14 | Solution is to delete the directory toolchain_build_avr32_nofpu/mtd_orig and type make to continue the build process. |
15 | |
16 | If the user experiences the same problem again, contact the support line. |
So weiter geht's: NFS läuft und ich kann mir Dateien ins RAM kopieren, nur welche? Im buildroot-Verzeichnis habe ich: rootfs.avr32.jffs2-root rootfs.avr32.ext2 Ich tippe ja auf die Erste, aber da es ja nur einen Versuch gibt das System neu zu flashen (ohne JTAG) sollte nun ja nichts schief gehen. Wenn ich die Datei in /tmp habe dann mache ich mich zum Superuser und gebe noch: mount -o remount,ro / dd if=/tmp/DATEINAME of=/dev/mtdblock2 bs=65535 ein und dann sollte ich ein neues System haben, oder??? Vielen Dank Dirk
Hallo Was du vorhast ist "relativ" gefährlich. Wenn du dich vertippst überschreibst du ev den Bootloader. Sehr ungünstig. Schau dir lieber im Wiki an wie man über NFS bootet. Du mountest dann dein "ext2" Datei in das NFS Verzeichniss und gibts im U-Boot die richtigen Befehle ein. (Auswendig weiß ich die jetzt nicht, findest du aber im Wiki nfs 0x11000000 severip:/nfs/boot/uImage) Dann startet dein Kernel aus dem Ram und es kann nichts passieren. Was du vorhast kannst du aber auch bequemer und sicherer direkt aus U-Boot heraus machen. Die "jffs2" Datei (ist das Joliet FLASH File System) in dein Flash schreiben (die korekkten Addressen findest du auch im Wiki) und damit starten. Ev müssen die bootcmds im U-Boot geändert werden. PS: ext2 ist ein Dateisystem genauso wie jffs2 eines ist. Unterscheidet sich im Aufbau und in der Verwendung. Auch hier google. Sorry für die recht spärliche Antwort, aber ich hoffe es zeigt dir erstmal den Weg. Michael
Vielen Dank Michael, das hilft mir weiter. Ich werde mir das U-Boot mal näher anschauen. Wenn ich über NFS boote, dann habe ich aber mein Betriebssystem nicht im Flash und müsste dann ja das gleiche machen wie beim booten aus dem Flash. Wirklich sicherer ist dann ja nur wenn ich mit dem Unterseeboot mein Flash beschreibe. Werde ich morgen mal testen. Welche Wiki meinst Du eigentlich? Ich habe keine zum Grasshopper oder zum NFS gefunden? Stehe ich mal wieder auf dem Schlauch wie beim Patch? Bis morgen Dirk
Hier, http://www.mikrocontroller.net/articles/AVR32_Grasshopper :) leider ned grad mehr Zeit aber AVR-Freaks und das hier sind eigentlich sehr hilfreich NGW100 und Grasshopper sind von der "Methode" ident, musst nur mit den Adressen aufpassen.
So, hier noch eine Abschlussbemerkung: Das booten über NFS mit U-Boot wie im Artikel beschrieben klappt einwandfrei. Allerdings finde ich das es komplizierter beschrieben ist als es wirklich ist. Meine Kurzfassung: mount -o loop rootfs.avr32.ext2 /mnt auf dem Server durchführen /mnt für NFS freigeben Auf dem Grashüpfer den Bootvorgang abbrechen und folgendes machen: set ipaddr xxx.xxx.xxx.xxx set serverip xxx.xxx.xxx.yyy nfs 11000000 xxx.xxx.xxx.yyy:/mnt/boot/uImage bootm und schon läuft es :-) Vielen Dank an alle, jetzt folgen Tastatur und Display...
Genau ist richtig so: mit root=nfs nfsroot=10.10.10.1:/nfs/root holst du dir halt noch dein komplettest Filesystem via NFS, so wie du es beschreibst bootest du nur den Kernel, neue Prorgramme die du mit buildroot einbaust erscheinen so nicht, sondern müssen trotzdem ins Flash geschrieben werden. Mountest du das RootFS aber direkt über NFS hast du Zugriff auf alle Datein vom PC und vom Grasshopper aus, ganz praktisch um mal eine Datei hin und her zu kopieren. Michael
Moin Leute, einmal muss ich noch :-) Du hast vollkommen recht Michael, die Startsequenz muss wie folgt aussehen:
1 | set ipaddr 192.168.1.100 |
2 | set serverip 192.168.1.101 |
3 | setenv bootargs root=nfs nfsroot=192.168.1.101:/mnt ip=192.168.1.100:192.168.1.101::255.255.255.0::eth0:none |
4 | nfs 11000000 192.168.1.101:/mnt/boot/uImage |
5 | bootm |
Sonst funktioniert es nicht richtig...
Genau, Du kannst dir übrigens die bootargs speichern mit saveenv(?) dann bootet er automatisch hoch bzw mit dem befehl "bootm", das andere kannst dir ja aufschreiben, für spätereinmal (und hier posten weil ich meine versehntlich überschrieben hab ohne aufzuschreiben :D) Schöne Grüße Michael
Moin Michael, besser spät als nie, Du wolltest doch die Bootargs wissen:
1 | ICnova> printenv |
2 | |
3 | |
4 | bootcmd=mtdparts default;chpart nor0,2;fsload /boot/uImage;bootm ${fileaddr} |
5 | |
6 | bootdelay=3 |
7 | |
8 | baudrate=115200 |
9 | |
10 | ethact=macb0 |
11 | |
12 | ethaddr=00:1F:E5:00:00:FD |
13 | |
14 | stdin=serial |
15 | |
16 | stdout=serial |
17 | |
18 | stderr=serial |
19 | |
20 | bootargs=root=nfs nfsroot=192.168.1.101:/mnt ip=192.168.1.100:192.168.1.101::255.255.255.0::eth0:none |
21 | |
22 | filesize=150226 |
23 | |
24 | fileaddr=11000000 |
25 | |
26 | ipaddr=192.168.1.100 |
27 | |
28 | serverip=192.168.1.101 |
29 | |
30 | |
31 | |
32 | Environment size: 365/65532 bytes |
Grüße Dirk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.