mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Grasshopper Buildroot Probleme


Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst die Software "patch" installieren:
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

MfG
Marius

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: Sebastian A. (freddyk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die Pakete kontrolliert, aber ich bekomme weiterhin einen 
Fehler. Hier mal eine ausführliche Ausgabe:

make[1]: Betrete Verzeichnis '/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig'
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
gcc -I./include -O2 -Wall  -g -o mkfs.jffs2 mkfs.jffs2.o /home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2
mkfs.jffs2.o: In function `crc32':
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
mkfs.jffs2.o:/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: more undefined references to `crc32_table' follow
mkfs.jffs2.o: In function `write_regular_file':
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:845: undefined reference to `jffs2_compress'
mkfs.jffs2.o: In function `crc32':
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
mkfs.jffs2.o:/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: more undefined references to `crc32_table' follow
mkfs.jffs2.o: In function `main':
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1621: undefined reference to `jffs2_compressors_init'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1762: undefined reference to `jffs2_compression_check_set'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1749: undefined reference to `jffs2_disable_compressor_name'
mkfs.jffs2.o: In function `crc32':
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/crc32.h:15: undefined reference to `crc32_table'
mkfs.jffs2.o: In function `main':
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1840: undefined reference to `jffs2_compression_check_get'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1844: undefined reference to `jffs2_compressors_exit'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1744: undefined reference to `jffs2_set_compression_mode_name'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1768: undefined reference to `jffs2_set_compressor_priority'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1759: undefined reference to `jffs2_list_compressors'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1754: undefined reference to `jffs2_enable_compressor_name'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1840: undefined reference to `jffs2_compression_check_errorcnt_get'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1841: undefined reference to `jffs2_compression_check_errorcnt_get'
/home/dirk/grasshopper/buildroot/toolchain_build_avr32/mtd_orig/mkfs.jffs2.c:1836: undefined reference to `jffs2_stats'
collect2: ld gab 1 als Ende-Status zurück
make[1]: *** [mkfs.jffs2] Fehler 1

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Lösung lag auf dem Atmel.no Server, dank Google-Cache funktioniert 
es jetzt :-)
Undefined reference to `crc32_table'

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:

mtd_orig/crc32.h:15: undefined reference to 'crc32_table'
mtd_orig/crc32.h:15: undefined reference to 'crc32_table'
mtd_orig/crc32.h:15: undefined reference to `crc32_table'
mtd_orig/crc32.h:15: undefined reference to `crc32_table'
mtd_orig/crc32.h:15: undefined reference to `crc32_table'
mkfs.jffs2.o: mtd_orig/crc32.h:15: more undefined references
              to `crc32_table' follow
mkfs.jffs2.o: In function `write_regular_file':

Solution is to delete the directory toolchain_build_avr32_nofpu/mtd_orig and type make to continue the build process.

If the user experiences the same problem again, contact the support line. 

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael B. (bubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael B. (bubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Michael B. (bubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute,

einmal muss ich noch :-) Du hast vollkommen recht Michael, die 
Startsequenz muss wie folgt aussehen:
set ipaddr 192.168.1.100
set serverip 192.168.1.101
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
nfs 11000000 192.168.1.101:/mnt/boot/uImage
bootm

Sonst funktioniert es nicht richtig...

Autor: Michael B. (bubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk S. (fusebit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Michael,

besser spät als nie, Du wolltest doch die Bootargs wissen:
ICnova> printenv


bootcmd=mtdparts default;chpart nor0,2;fsload /boot/uImage;bootm ${fileaddr}

bootdelay=3

baudrate=115200

ethact=macb0

ethaddr=00:1F:E5:00:00:FD

stdin=serial

stdout=serial

stderr=serial

bootargs=root=nfs nfsroot=192.168.1.101:/mnt ip=192.168.1.100:192.168.1.101::255.255.255.0::eth0:none

filesize=150226

fileaddr=11000000

ipaddr=192.168.1.100

serverip=192.168.1.101



Environment size: 365/65532 bytes


Grüße

Dirk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.