Forum: Mikrocontroller und Digitale Elektronik grasshopper Atmel buildroot 2.3.0 kompilieren avr32.ext2 make error 1


von Markus K. (klemmi)


Lesenswert?

Hallo,
ich versuche gerade, wie hier
Beitrag "AVR32 grasshopper patch für ATMEL buildroot 2.3.0"
beschrieben den buildroot zu kopilieren. Leider schlägt es fehl.

Leider weiß ich nicht, wo ich ansetzen muss zu suchen, da hier keine 
Fehlerbeschreibung ausgegeben wird, die mir hilft.

ein erneutes make brachte folgende Ausgabe:
1
$ make
2
3
Checking build system dependencies:
4
BUILDROOT_DL_DIR clean:        Ok
5
CC clean:          Ok
6
CXX clean:          Ok
7
CPP clean:          Ok
8
CFLAGS clean:          Ok
9
INCLUDES clean:          Ok
10
CXXFLAGS clean:          Ok
11
which installed:        Ok
12
sed works:          Ok (/bin/sed)
13
GNU make version '3.81':      Ok
14
C compiler '/usr/bin/gcc'
15
C compiler version '4.4.0':      Ok
16
C++ compiler '/usr/bin/g++'
17
C++ compiler version '4.4.0':      Ok
18
patch installed:        Ok
19
awk installed:          Ok
20
bison installed:        Ok
21
flex installed:          Ok
22
gettext installed:        Ok
23
makeinfo installed:        Ok
24
curses installed:        Ok
25
zlib installed:          Ok
26
lzo2 installed:          Ok
27
Build system dependencies:      Ok
28
29
rm -rf /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/buildroot-config
30
mkdir -p /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper
31
cp -dpRf package/config/buildroot-config /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/buildroot-config
32
rm -rf /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root/usr/include /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root/usr/lib/pkgconfig
33
find /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root/usr/lib -name '*.a' -delete
34
find /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root/lib -name '*.a' -delete
35
find /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root/usr/lib -name '*.la' -delete
36
find /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root/lib -name '*.la' -delete
37
test -x /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/build_avr32/staging_dir/sbin/avr32-linux-uclibc-ldconfig && /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/build_avr32/staging_dir/sbin/avr32-linux-uclibc-ldconfig -r /home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/project_build_avr32/grasshopper/root 2>/dev/null
38
make: *** [/home/klemmi/grasshopper/buildroot-avr32-v2.3.0_patched_grasshopper/binaries/grasshopper/rootfs.avr32.ext2] Fehler 1

Kann mir jemand sagen, wo ich nach einer Lösung suchen sollte?
(ich nutze Arch-Linux, schließe deshalb einen Konflikt durch 
unterschiedliche Pfade nicht aus.)

Bereits vorgenommene Änderungen:
ich musste bereits in der
./buildroot-avr32-v2.3.0_patched_grasshopper/toolchain_build_avr32/uClib 
c-0.9.30/extra/scripts/unifdef.c
die Methode getline(void) in die Methode parseline(void) umbenennen, da 
ein Konflikt mit der lib vorlag.

Weiterhin musste ich per ln den /bin/install auf /usr/bin/install legen.

Es wäre lieb, wenn jemand eine Idee hat!
Danke
Markus

von Gast (Gast)


Lesenswert?

wenn du schon Probleme mit Arch-Linux erkannt hast, warum wechselst du 
nicht auf Ubuntu 8.04 (nicht die neueren Versionen nehmen, damit soll es 
auch Probleme geben) ? Das wird von Atmel so vorgeschlagen und hat bei 
mir immer gut funktioniert. Ok, ein paar Pakete müssen mit apt get 
nachgeladen werden, aber das sagt dir dann buildroot.

von Markus K. (klemmi)


Lesenswert?

Danke, ich werds versuchen bzw. bin schon dabei, aber das kann doch 
nicht die Lösung sein?!

von Gast (Gast)


Lesenswert?

Atmel hat ihren buildroot auf die Belange von Ubuntu zugeschnitten. 
Sicher werden andere Pakete auch gehen, dann würde ich aber auf das 
upstream-buildroot ausweichen. Das kannst du auch für den GH nehmen. 
Musst im Kernel eben nur die Besonderheiten vom GH einstellen.

von Markus K. (klemmi)


Lesenswert?

ich habe mir jetzt in einer VM Ubuntu aufgesetzt und werde es einfach 
einmal damit versuchen!

von Markus K. (klemmi)


Lesenswert?

ok, danke, das hat mit ubuntu soweit funktioniert.

Ich habe den Grasshopper mittels NFS gestartet und wollte nun das neue 
Image in den Flash schreiben. Leider wurde ich mit folgenden Problem 
konfrontiert:

root@grasshopper:/tmp# dd if=rootfs.avr32.jffs2-root of=/dev/mtdblock2 
bs=65535
dd: writing '/dev/mtdblock2': Operation not permitted
1+0 records in
0+0 records out

Ich weiß jedoch auch nicht, ob mein Vorgehen richtig ist.

von Gast (Gast)


Lesenswert?

bist du nach dieser Anleitung vorgegangen:
http://www.mikrocontroller.net/articles/AVR32_Grasshopper

von Markus K. (klemmi)


Lesenswert?

im Grunde: ja

Wenn cih die Alternative versuche nfs direkt aus uboot aufzurufen, 
passiert genau das:

Beitrag "Grasshopper AVR32: Kernel über NFS laden"

von Gast (Gast)


Lesenswert?

mmh, da ich immer von SD-Karte boote, hab ich jetzt nicht die Erfahrung 
mit NFS.
Bei IC-Nova gibt es noch eine Anleitung: 
http://www.ic-board.de/data/manual/301000002E_HowTo_ICnova_ADB1000.pdf
Ansonsten bei avrfreaks nachfragen.

von Gast (Gast)


Lesenswert?


von Markus K. (klemmi)


Lesenswert?

In dem verlinkten Thread wird eine Wiki-Seite angegeben, die folgende 
Angaben enthält:
Sind diese Werte richtig?
Ich dachte, das U-Boot-Environment käme direkt nach der 
U-Boot-Pratition?

0x000000 - 0x01FFFF    U-Boot partition. You'll need a JTAGICEmkII if 
you corrupt this
0x020000 - 0x7EFFFF   Linux root partition. (This is what we'll update 
with this guide)
0x7F0000 - 0x7FFFFF   U-Boot environment area. Handled by U-Boot.

ich habe im U-Boot einmal, bevor ich das nfs-System gestartet habe, 
"protect off all" eingegeben, es blieb jedoch ohne Ergebnis.
Entweder per
1
ICnova> nfs 11000000 192.168.2.102:/nfs/uImage
2
[...]
3
Filename '/nfs/uImage'.
4
Load address: 0x10000000
5
Loading: #################################################################
6
         #################################################################
7
         #################################################################
8
         #################################################################
9
         #*** ERROR: Cannot umount

oder eben
1
ICnova> setenv bootargs root=nfs nfsroot=192.168.2.102:/nfs ip=192.168.2.5:192.168.2.102::255.255.255.0::eth0:none
2
ICnova> boot
3
[...]
4
root@grasshopper:/tmp# wget http://192.168.2.6/rootfs.avr32.ext2
5
Connecting to 192.168.2.6 (192.168.2.6:80)
6
rootfs.avr32.ext2    100% |*******************************| 15676k 00:00:00 ETA
7
root@grasshopper:/tmp# dd if=rootfs.avr32.ext2 of=/dev/mtdblock2 bs=65535
8
dd: writing '/dev/mtdblock2': Operation not permitted
9
1+0 records in
10
0+0 records out

Ich habe erstmal keine sinnvolle Idee, was ich unternehmen soll.
Danke trotzdem für die bisherige Hilfe ersteinmal!

EDIT: kurze Ergänzung zur Info:
1
root@grasshopper:/tmp# ls -la /dev/mtd*
2
brw-rw----    1 root     disk      31,   0 Dec 31 23:00 /dev/mtdblock0
3
brw-rw----    1 root     disk      31,   1 Dec 31 23:00 /dev/mtdblock1
4
brw-rw----    1 root     disk      31,   2 Dec 31 23:00 /dev/mtdblock2

von Gast (Gast)


Lesenswert?

> "protect off all"
Damit wäre ich vorsichtig. Wenn du dir uboot überschreibst brauchst du 
einen JTAG-Brenner.Obwohl ich mir nicht sicher bin ob die Option "all" 
funktioniert, ich kenne nur "adr1" bis "adr2"
Die Werte von der avrfreaks-Wiki beziehen sich auf das NGW100.
Hier hat sich schnitzeltony über NFS ausgelassen:
Beitrag "NFS mit grasshopper / AVR32"
Evtl. auch bei dir ein Rechteproblem? Unter wen hast den build gebaut? 
Unter root?

von Werner B. (werner-b)


Lesenswert?

>Ich dachte, das U-Boot-Environment käme direkt nach der
>U-Boot-Pratition?

Beim Grashopper - Ja.
Beim NGW100 - Nein, da ist das Environment am Ende des Flash.

von Markus K. (klemmi)


Lesenswert?

Ich habe immer versucht, alles als User zu kompilieren.
Die Dateien, die im nfs liegen, waren dann allerdings immer als root 
erstellt.

Ich versuche jetzt einmal, das ganze als root zu kompilieren. Wieso ist 
das eigentlich notwendig bzw. ist es das überhaupt?

kann mir jemand bitte die korrekten Einstellungen für den protect-Befehl 
im uboot aufschreiben, ehe ich hier noch etwas falsch mache? Wäre echt 
nett!

Danke schonmal!

von Gast (Gast)


Lesenswert?


von Markus K. (klemmi)


Lesenswert?

Die Verwendung war mir schon klar, die Doku kannte ich auch, mir geht es 
nur um die richtige Adresse - wann der Schutz aufhören sollte, damit ich 
das Linux-Dateisystem einspielen kann, aber am uboot nichts kaputt 
machen kann.

von Gast (Gast)


Lesenswert?

Ich zitiere mal aus dem AVR32-Grasshopper-Artikel:

"Die 8 MiB Flash-Speicher auf dem Board sind in drei Bereiche 
aufgeteilt: In den untersten 128 kiB befindet sich der Bootloader 
U-Boot. Der Bereich von 128 - 192 kiB ist für die Umgebungsvariablen 
(environment) des Bootloaders reserviert. Das JFFS2-Dateisystem mit der 
Linuxumgebung (root file system) belegt den Rest."

von Markus K. (klemmi)


Lesenswert?

Ja, danke, aber das ist ja dann noch lange nicht die Adresse des 
Speichers.
Meine Rechnung wäre
192*1024=196608 Byte
macht Hexadezimal 0x030000
Stimmt das?

Übrigens: altes Problem mit der per root kompilierten Umgebung.

von Gast (Gast)


Lesenswert?

also durch uboot belegt: 0x000000 - 0x02FFFF

von Gast (Gast)


Lesenswert?

Welche Version hat dein uboot?

von Markus K. (klemmi)


Lesenswert?

U-Boot 1.3.2-g02c22ce0-dirty (May 14 2008 - 13:13:06)

kann ich vielleicht direkt aus uboot flashen?

von Gast (Gast)


Lesenswert?

Das ist auch nicht die neueste Version von uboot. Ich meine, die letzte 
Version ist 1.3.4 .
Buildroot erstellt dir aber auch immer eine uboot.bin als aktuellste 
Version.
Es wäre gut, die erst mal zu flashen. Aber Vorsicht, wenn dabei etwas 
schief geht brauchst du einen JTAG. Die Anleitung dazu findest du in dem 
Artikel von diesem Forum.
Du kannst natürlich auch das JFFS2-Dateisystem mit uboot flashen. Auch 
die Anleitung dazu steht in dem Artikel.

von Markus K. (klemmi)


Lesenswert?

hm, naja, uboot flashen - da traue ich mich nicht so richtig heran.

ich habe jetzt versucht per nfs das image in dn RAM zu laden
- per nfs wie vorher schon beschrieben -  ERROR: Cannot umount
- per loadb:
1
SEND-class command failed.
2
 Packets sent: 2
3
 Retransmissions: 11
4
 Timeouts: 0
5
 Damaged packets: 0
6
 Fatal Kermit Protocol Error: Too many retries
Ich gebe es bald auf - und das alles nur, auf der Suche nach einer 
Lösung, ein magic paket versenden zu können!

von Gast (Gast)


Lesenswert?

geht das denn nicht mit dem build, der auf dem Gh drauf ist?

von Markus K. (klemmi)


Lesenswert?

Ich wkenne keine Variante, wie ich das hinbekommen soll

von Gast (Gast)


Lesenswert?

sorry, verstehe ich jetzt nicht.Der GH wird doch schon fertig mit einem 
bootfähigen Linux- build geliefert. Wolltest du jetzt noch zusätzliche 
Pakete in deinen build einkompilieren?

von Markus K. (klemmi)


Lesenswert?

Ja, genau, ich hatte versucht php einzukompilieren, weil das z.b. diese 
Funktion erfüllt.

Mir würde es schon reichen, wenn etherwake oder ähnliches auf dem 
grasshopper läuft.

von Udo S. (udo)


Lesenswert?

Hallo,

> Markus Klemm (klemmi) wrote:
> Datum: 03.09.2009 00:53
> ICnova> setenv bootargs root=nfs nfsroot=192.168.2.102:/nfs
> ip=192.168.2.5:192.168.2.102::255.255.255.0::eth0:none
> ICnova> boot
> [...]
> root@grasshopper:......

Zu diesem Zeitpunkt hast du doch dein neues Filesystem über NFS 
gebootet.
Also das klappt doch!
Du könntest jetzt deine Anwendungen starten.

Aber wenn du dein neues Fs ins flash brennen willst, müsste die 
Befehlsfolge so aussehen:
1
 ICnova> setenv bootargs root=nfs nfsroot=192.168.2.102:/nfs ip=192.168.2.5:192.168.2.102::255.255.255.0::eth0:none 
2
 ICnova> protect off all      // <------ das fehlte hier an dieser Stelle
3
 ICnova> boot
4
.....
5
 root@grasshopper:/tmp# wget http://192.168.2.6/rootfs.avr32.ext2
6
.....
7
 root@grasshopper:/tmp# dd if=rootfs.avr32.ext2 of=/dev/mtdblock2 bs=65535

Nach dem nächsten Reset ist protect wieder ON.

Mit dem brennen des neuen Fs ins flash würde ich aber warten, bis alles 
so funktioniert, wie du dir das vorstellst.

Gruß
Udo

von Markus K. (klemmi)


Lesenswert?

Danke, udo.
Genau so weit war ich schon.
Und dann habe ich versucht das ins Flash zu schreiben, mit folgenden, 
oben genannten, Ergebnis:
1
root@grasshopper:/tmp# dd if=rootfs.avr32.ext2 of=/dev/mtdblock2 bs=65535
2
dd: writing '/dev/mtdblock2': Operation not permitted
3
1+0 records in
4
0+0 records out

von Udo S. (udo)


Lesenswert?

> dd: writing '/dev/mtdblock2': Operation not permitted

Der Bereich war nicht freigegeben.
Schau dir die Befehlsfolge in meinem Post oben an.

Gruß
Udo

von Markus K. (klemmi)


Angehängte Dateien:

Lesenswert?

Ich habs extra noch einmal probiert und die Ausgabe in den Anhang 
gestellt.

von Udo S. (udo)


Lesenswert?

ups, noch was vergessen.
So sollte es aussehen:
1
 root@grasshopper:/tmp# mount / -o remount,ro
2
 root@grasshopper:/tmp# dd if=rootfs.avr32.ext2 of=/dev/mtdblock2 bs=64k

Gruß
Udo

von Markus K. (klemmi)


Lesenswert?

hm, das verstehe ich gerade nicht.
Wieso soll ich das root-fs als reedonly remounten?
Das liegt doch eh im nfs-Share oder ahbe ich jetzt einen Querdenker?

von Udo S. (udo)


Lesenswert?

ne, sorry, du hast recht. Jetzt komm ich schon selbst durcheinander.
Irgendwas stimmt mit der Freigabe nicht. Evtl gibt uboot trotz "protect 
off all" nicht alles frei. Ich würde uboot mal updaten.

Gruß
Udo

von Markus K. (klemmi)


Lesenswert?

nach den ganzen Problemen, die ich beim falshen des normalen Linux schon 
habe, habe ich irgendwie Skrupel davor, an uboot heranzugehen - ist das 
wirklich die einzige Möglickeit?

von Udo S. (udo)


Lesenswert?

mir fällt sonst nichts mehr ein, sorry.
Evtl. noch "bs=65535" ändern in "bs=64k".

Gruß
Udo

von Markus K. (klemmi)


Lesenswert?

Nein, sorry, auch das hat keinen Effekt.

Gibt es eine Möglichkeit Etherwake per Cross Compiler zu kompilieren und 
auf den grasshopper zu kopieren?

avr-libc, avr-gcc?

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.