Forum: Mikrocontroller und Digitale Elektronik Linux-Kernel für AVR32


von Markus K. (klemmi)


Lesenswert?

Hi Leute,

Was ich gerade versuche ist ein System für meinen Grasshopper selbst zu 
bauen.
Hardware:
http://www.embedded-projects.net/index.php?page_id=237";

Ich habe mir einen crosscompiler gebaut und damit dann einen Kernel 
kompiliert. Der stirbt allerdings recht schnell.

Ich erhalte diese Ausgabe:
http://pastie.org/private/one6wjlcuognt6dxzzwioq";

Das Problem ist, dass ich zu dumm bin, die Kernel-Meldungen zu 
interpretieren. MMU - ist klar, aber wüsste jetzt nicht, an welcher 
Schraube ich stellen müsste.
Auch verstehe ich den Entry Point nicht. Mein RAM liegt bei 10 00 00 00 
und ist 64mB groß. Sprich 0x 4 00 00 00, müsste also bei 14 00 00 00 
zuende sein. Das heißt ein Entry Point bei 90 00 00 00 existiert ja gar 
nicht. Aber der Kernel setzt das automatisch in die Kconfig rein und 
mkimage übernimmt das dann und auch im ursprünglichen (oben verlinkten) 
System war der EP 90 00 00 00.

Wär echt cool, wenn mir jemand zumindest eine Schubs in die richtige 
Richtung geben kann, weil ich drehe mich gerade im Kreis.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Das heißt ein Entry Point bei 90 00 00 00 existiert ja gar nicht.

Je nach Toolchain kennzeichnen die oberen Bits solcher Adressen 
bestimmte Speicherabschnitte z.B. Flash, SRAM etc. Diese Bits darfst du 
bei der Bestimmung der Adresse nicht verwenden.

von Markus K. (klemmi)


Lesenswert?

Das heißt, das bezieht sich nicht auf die phyiskalische Adresse im 
Speicher, sondern auf was?

Mir fehlt gerade irgendwie der Ansatz, wie ich weitermachen könnte.

von ... (Gast)


Lesenswert?

zeig mal die environment-Variablen von uboot.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Markus K. schrieb:

> Mir fehlt gerade irgendwie der Ansatz, wie ich weitermachen könnte.

Ich würde versuchen, den Originalkernel zu laden. Dann zu verstehen, wie 
sich das Image des Origialkernels vom Image des Selbstbaukernels 
unterscheiden. Dazu wenn nötig versuchen den Originalkernel selbst 
zusammen zu bauen. Dazu wenn nötig mit der Originaltoolchain arbeiten. 
Im Prinzip also häppchenweise Änderungen machen statt alles (Bootloader, 
Toolchain, Kernel) auf einmal zu ändern.

von Markus K. (klemmi)


Lesenswert?

U-Boot> printenv
bootcmd=mtdparts default;chpart nor0,2;fsload /boot/uImage;bootm
${fileaddr}
bootdelay=3
baudrate=115200
ethact=macb0
ethaddr=00:1F:E5:00:0B:AB
bootargs=root=1F02 rootfstype=jffs2
mtdparts=physmap-flash.0:128k(boot)ro,64k(env)ro,-(root)
serverip=192.168.2.4
ipaddr=192.168.2.10
stdin=serial
stdout=serial
stderr=serial

Environment size: 319/65532 bytes

Da sind noch die Daten des alten Systems drin, sollte aber keine Rolle 
spielen.

Die Config vom neuen und orginalen Kernel zu vergleichen habe ich schon 
versucht, aber das brachte mir nicht wirklich etwas. Die Änderungen sind 
nicht allzu groß und mir fehlt der Ansatzpunkt in den Einstellungen, an 
denen ich drehen müsste.

von ... (Gast)


Lesenswert?

Markus K. schrieb:
> bootcmd=mtdparts default;chpart nor0,2;fsload /boot/uImage;bootm

Du sagst ihm er soll /boot/uImage laden....

Dein Image scheint aber:

21   Filename '/uImage2'.

zu heißen.

Dann kann er uImage auch nicht finden. Das sagt er dir hier auch:

33   Wrong Image Format for bootm command

von Markus K. (klemmi)


Lesenswert?

Da hatte ich mich nur verschrieben.
Schau mal 2 Zeilen weiter. Ich gebe ihm ja direkt die Stelle, an der er 
mit dem boot einsetzen soll im Speicher. Dann beginnt er ja auch den 
Kernel direkt (imho korrekt) zu booten und stirbt mit einer Exception, 
von der ich glaube, dass sie auf eine falsche Konfig im Kernel 
zurückzuführen ist.

Unabhängig davon: Den Entry Point hätte ich einfach gern verstanden.

von ... (Gast)


Lesenswert?

Markus K. schrieb:
> Da hatte ich mich nur verschrieben.

? Wo hast du dich nur verschrieben?

In der Meldung von uboot oder in den environments?

Das sind doch Meldungen von uboot.

von Markus K. (klemmi)


Lesenswert?

ich hab 10000000 statt 10400000 geschrieben!
klar, dass er mir das um die Ohren schmeißt.

U-Boot> bootm 10000000
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot> bootm 10400000

Deswegen dannach dann noch den richtigen Befehl ausgeführt. Und dann 
beginnt er zu booten. (siehe weiterer Quelltext)!

von ... (Gast)


Lesenswert?

noch mal zum Mitschreiben:

uboot möchte den File "uImage" laden.
Dein File auf dem TFTP-Server heißt aber: "uImage2"

von Markus K. (klemmi)


Lesenswert?

Ja, aber ich boote ja gar nicht mit der bootcmd!
Genauso sind die bootargs auch hinfällig!

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.