www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik AT91RM9200 und Linux Kernel > 2.6.17

Autor: Andreas Auer (andi)
Datum: 24.02.2008 20:24

Hallo

Nachdem hier doch einige Erfahrungen mit dem AT91RM9200 Controller von
Atmel haben, kann mir bestimmt jemand weiterhelfen!
Und zwar hab ich ein kleines AT91RM9200 Board gebaut auf dem Linux
(Kernel 2.6.17.14) läuft. Hab jedoch noch ein Problem mit dem USB Host
Interface und möchte deshalb eine neuere Kernel Version versuchen, da es
sich vielleicht um einen Software Fehler im USB Host Treiber des
2.6.17.14er Kernel handelt.

Zur Konfiguration meines Boards:
* Linux Kernel wird aus dem Dataflash von U-Boot geladen (funktioniert)
* Linux Kernel lädt die benötigten Treiber und soll dann auf eine SD
Karte
  zugreifen, auf der das Root Filesystem liegt. (funktioniert mit
2.6.17.14
  einwandfrei)!

Mein Problem ist nun, dass die neueren Kernel Version (probiert hab ich
2.6.21, 2.6.23, 2.6.24 jeweils gepatcht und ungepatcht) zwar beginnen zu
booten, jedoch auf die SD Karte nicht zugreifen können (Meldung (in
etwa): "einen richtigen Parameter für 'root=' angeben"). Als Parameter
hab ich "root=mmcblk0p1" angegeben. Hat sich dieser vielleicht
geändert??

Der SD Karten Treiber hat sich ab Version 2.6.17.14 extrem geändert
(sieht neu programmiert aus - etwas klarer und schöner strukturiert).
Geladen wird er... IMHO sieht es so aus, als würde die Initialisierung
der Karte nicht fertig durchgeführt (d.h. der Kernel möchte zu früh auf
die Karte zugreifen). Keine Ahnung, ob das sein kann?!?!

Vielleicht hat jemand ein ähnliches Problem gehabt bzw. gelöst! Bin für
jeden Tipp dankbar!

mfg
Andreas
Autor: asdf (Gast)
Datum: 24.02.2008 20:35

HI Andreas,
ich kenn mich nur etwas mit Linux aus, aber nicht mit ARMs.

Wenn er versucht auf das rootfs zu zugreifen bevor die treiber geladen
sind, hilft es oft, eine initrd zu verwenden. so können die treiber &
hilfsprogramm geladen werden, bevor zugriff auf das rootfs möglich ist.
Vielleicht ist das die Lösung für dein Problem?
Auch wenn es mit Kanone auf Spatzen geschossen ist.
Autor: yalu (Gast)
Datum: 24.02.2008 20:59

> Als Parameter hab ich "root=mmcblk0p1" angegeben. Hat sich dieser
> vielleicht geändert??
>
> Der SD Karten Treiber hat sich ab Version 2.6.17.14 extrem geändert
> (sieht neu programmiert aus - etwas klarer und schöner
> strukturiert).

Wenn du den Treiber schon so genau angeschaut hast, hättest du doch
herausfinden müssen, welche Device-Namen er verwendet. Dass sich
solche Namen ändern, passiert schon hin und wieder.
Autor: Andreas Auer (andi)
Datum: 24.02.2008 21:32

@asdf:
Das wäre noch eine Idee. Da ich bis jetzt aber wenig mit initrd zu tun
hatte (und ich mich deshalb damit wenig auskenne), könnt ich auch
versuchen über NFS zu booten. Mal schauen!

@yalu:
Tja... das dachte ich auch, dass dort irgendwo stehen sollte, welche
Namen die Partitionen bekommen. Aber dem ist nicht so... die Namen
setzen sich ja meist dynamisch zusammen. Ich konnte da zumindest nichts
entdecken!

mfg
Andreas
Autor: asdf (Gast)
Datum: 24.02.2008 21:38

Wenn die namen dynamisch vergeben werden dann könnte udev dazwischen
funken, z.B. andere Reihenfolge.

initrd ist garnicht sooooo schwierig. Ich lasse das immer von genkernel
machen, da muss ich nicht denken. Ansonsten tutorial lesen & fertige
skripte verwenden. gentoo-wiki ist dabei meine Quelle der Wahl,
schneller kommt man nicht zum ERgebnis.
Autor: Andreas Auer (andi)
Datum: 24.02.2008 21:43

Ok... besten Dank schonmal.

@yalu:
Hab nochmal nach "mmcblk" "gegrept". IMHO heisst das Device immer noch
"mmcblk".

mfg
Andreas
Autor: Andreas Auer (andi)
Datum: 24.02.2008 23:01

Ich hab jetzt nochmal probiert per NFS zu booten. Hat auch funktioniert.
Und die SD Karte wird auch geladen... d.h. die Partition, von der er
vorher nicht starten konnte, erkennt er jetzt.
Liegt also wirklich daran, dass der MMC/SD Treiber die Karte noch nicht
initialisiert hat, bevor der Kernel zugreift.
Das sollte aber sicher nicht so sein! Gibts im Kernel Mechanismen, die
es erlauben, dass man wartet, bis bestimmte Treiber geladen sind??

mfg
Andreas
Autor: yalu (Gast)
Datum: 24.02.2008 23:20

Woher wird überhaupt der SD-Karten-Treiber geladen? Vom Dataflash? Ist
darauf ein Filesystem?

Wieso kompilierst du den SD-Karten-Treiber nicht einfach fest in den
Kernel? Du brauchst ihn ja offensichtlich immer, somit gibt es keinen
Grund, ihn als Modul zu laden. Auch eine Initrd erübrigt sich dann.
Autor: Andreas Auer (andi)
Datum: 25.02.2008 09:28

Ich hab den Treiber fest im Kernel drinnen. Er wird nicht als Modul
geladen. Es ist jedoch so, dass der Code noch nicht ganz abgearbeitet
ist, wenn der Kernel die Root-Partition laden will. D.h. die Karte ist
wahrscheinlich noch nicht initialisiert!

Ich weiß momentan nur nicht, wie ich es anstellen soll, dass der Kernel
noch ein bisschen wartet bis die SD Karte initialisiert ist!

mfg
Andreas
Autor: Jonny (Gast)
Datum: 09.05.2008 11:48

du kannst in u-boot mit der variable bootargs den parameter rootdelay=4
eintragen. dann wird 4 sekunden gewartet bevor von der sd-karte geladen
wird.

gruß
Johann
Autor: Andreas Auer (andi)
Datum: 09.05.2008 12:11

Das hört sich interessant an. Wird der Parameter rootdelay=4 an den
Kernel weitergegeben, oder ist das eine Anweisung für U-Boot??

mfg
Andreas

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net