Forum: Mikrocontroller und Digitale Elektronik Mini2440 u-boot


von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

habe vor kurzem ein Mini2440 mit 256MB Nand Flash bekommen.
Allerdings habe ich noch probleme bzw. Verständnisschwierigkeiten mit 
dem Flash.

Es sind ja 2MB Nor und 256MB Nand drauf. Auf dem Nor-Flash ist ein 
supervivi-bootloader drauf, von dem aus man den Nand plattmachen kann. 
Das hab ich auch schon gemacht.

Nun habe ich mit buildroot mir U-Boot, Kernel und Root-FS gebaut.
Weiter bin ich nach dieser Anleitung vorgegangen:
http://wiki.linuxmce.org/index.php/Mini2440

Ich habe also mit dem Schalter auf Nor gebootet, und mit dem Programm 
s3c2410_boot_usb das u-boot.bin in den Nand-Flash geladen. Das klappt 
auch so weit.

Nach dem Laden bin ich aber immer noch im supervivi, und nicht im 
u-boot, wie in der Anleitung beschrieben wird.

Wenn ich jetzt das Board ausschalte, den Schalter auf Nand zurückstelle 
und einschalte meldet sich auch schon u-boot:
1
U-Boot 1.3.2-mini2440 (Apr 9 2011 - 13:29:29)
2
3
I2C: ready
4
DRAM: 64 MB
5
NOR Flash not found. Use hardware switch and 'flinit'
6
Flash: 0 kB
7
NAND: Bad block table not found for chip 0
8
Bad block table not found for chip 0
9
256 MiB
10
*** Warning - bad CRC or NAND, using default environment
11
12
USB: S3C2410 USB Deviced
13
In:  serial
14
Out: serial
15
Err: serial
16
MAC: 04:25:fe:ed:00:18
17
Hit any key to stop autoboot: 0
18
MINI2440 #

Solche Fehlermeldungen kenn ich aber von U-Boot noch nicht (habe bisher 
mit dem NGW100 gearbeitet). Ist da was falsch gelaufen??

Passt die Vorgehensweise von mir, dass auf dem Nor der supervivi bleibt 
- sozusagen als letzte Rettung wenn ich mein U-Boot mal zerschiesse, 
oder sollte eigentlich U-Boot in den Nor - wenn ja, wie mache ich dann 
das??

Gruss Mixer

von Mark .. (mork)


Lesenswert?

Du hast schon alles richtig gemacht.

Jetzt muss noch u-boot so konfiguriert werden, dass es den Kernel vom 
Flash lädt. "MINI2440 #" bedeutet, dass u-boot auf weitere Befehle von 
der seriellen Schnittstelle wartet.

Mach einfach in der Anleitung weiter, wo Du aufgehört hast, also 
"saveenv" eingeben usw.

MfG Mark

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

da komme ich aber nicht weiter:
1
MINI2440 # saveenv
2
Saving Environment to NAND...
3
Erasing Nand...MINI2440 # nand scrub
4
5
NAND scrub: device 0 is whole chip
6
Warning: scrub option will erase all factory set bad blocks!
7
         There is no reliable way to recover them.
8
         Use this command only for testing purpose if you
9
         are sure of what you are doing!
10
11
Really scrub this NAND flash? <y/N>
12
Erasing at 0x4500000 -- 27% complete.
13
NAND 256MiB 3,3V 8-Bit: MTD Erase failure: -5
14
Erasing at 0x91e0000 -- 57% complete.
15
NAND 256MiB 3,3V 8-Bit: MTD Erase failure: -5
16
Erasing at 0x9460000 -- 58% complete.
17
NAND 256MiB 3,3V 8-Bit: MTD Erase failure: -5
18
Erasing at 0xbd60000 -- 74% complete.
19
NAND 256MiB 3,3V 8-Bit: MTD Erase failure: -5
20
Erasing at 0xffe0000 -- 100% complete.
21
Bad block table not found for chip 0
22
Bad block table not found for chip 0
23
OK
24
MINI2440 # nand createbbt
25
Create BBT and erase everything ? <y/N>
26
Skipping bad block at 0x04740000
27
Skipping bad block at 0x093c0000
28
Skipping bad block at 0x095a0000
29
Skipping bad block at 0x0bd80000
30
Skipping bad block at 0x0ff80000
31
Skipping bad block at 0x0ffa0000
32
Skipping bad block at 0x0ffc0000
33
Skipping bad block at 0x0ffe0000
34
35
Creating BBT. Please wait ...Bad block table not found for chip 0
36
Bad block table not found for chip 0
37
Bad block table written to 0x0ffe0000, version 0x01
38
Bad block table written to 0x0ffc0000, version 0x01
39
40
MINI2440 # saveenv
41
Saving Environment to NAND...
42
Erasing NAND...MINI2440 #

Spätestens bei dem zweiten saveenv sollte er ja dann die 
Umgebungsvariablen in den Nand schreiben oder??

Gruss Mixer

von Christoph S. (mixer) Benutzerseite


Lesenswert?

Hallo,

bin nun ein stückchen weiter, dank
http://billforums.station51.net/viewtopic.php?f=1&t=166&sid=efd3694354ae9cd349fef78a068948a6

U-Boot sitzt jetzt im Nand, und die Umgebungsvariablen behält es auch.

Jetzt möchte ich Kernel und Root-FS über NFS laden. Dazu habe ich 
folgendes eingegeben:
1
MINI2440 # set nfsboot 'set bootargs root=/dev/nfs nfsroot=169.254.7.1:/nfs ip=169.254.7.7:169.254.7.1::255.255.255.0::eth0:none; nfs 0x32000000 169.254.7.1:/nfs/uImage; bootm 0x32000000'

Danach gespeichert mit saveenv.
Der NFS-Server läuft korrekt, Kernel und Root-FS sind mit buildroot 
erstellt. Wenn ich jetzt 'run nfsboot' eingebe, dann lädt es den Kernel 
über Ethernet, dann folgt der Kernel-Header, wo alles gut aussieht, dann
1
Starting kernel ...
2
Uncompressing Linux............................................................................... done, booting the kernel.

Und dann kommt nichts mehr. Liegt das jetzt an nem fehlerhaften Kernel 
oder lade ich ihn falsch????

Gruss Mixer

von Mark .. (mork)


Lesenswert?

Versuchsmal mit "dynpart" und dann "dynenv set u-boot_env". Danach 
sollte es gehen.

MfG Mark

von Mark .. (mork)


Lesenswert?

Hm hab mit dem Netzwerkbooten keine Erfahrung. Was aber auffällt ist 
dass keine console in den bootargs angegeben wurde, also so etwas wie 
"console=ttyS0,115200" . Bzw ttySAC0, probiert mal beides aus. Deshalb 
erscheinen wahrschenlich auch keinerlei Meldungen sobald der Kernel 
ausgeführt wird.

MfG Mark

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.