Forum: Mikrocontroller und Digitale Elektronik NGW100 Booten von der SD Card


von FrankR (Gast)


Lesenswert?

Hallo!

Ich habe die Suche in diesem Forum benutzt, bin aber leider zu keinem 
lauffähigem Ergebnis gekommen. Es scheint, als wäre es so leicht... aber 
ich habe wohl nicht genug Ahnung vom Linux.

Ich habe die Anweisungen
http://www.avrfreaks.net/wiki/index.php/Documentation:NGW/Newbie/boot_from_SD
so abgearbeitet, leider bekomme ich immer (egal welche SD Karte ich 
nehme) immer die Meldung:

## Booting image at 10200000 ...
Bad Magic Number

Mache ich ein Fehler, oder sind alle Karten inkompatibel?

MfG
FrankR

von Gast (Gast)


Lesenswert?

1.Welche Version von Uboot hast du?
2. Poste mal deine bootargs.
3. Unter welchem Betriebssystem hast du die Karte partitioniert und 
womit?

von FrankR (Gast)


Lesenswert?

Hallo!

Ich habe die Karte Gerstern extra neu gekauft und sie leider unter 
meinem openSUSE 11.0 nicht sehen können (oder liegt an meinem Skill!), 
deswegen habe erst ein FAT unter Windows XP drauf gemacht und dann 
nochmals unter openSUSE 11.0 und dem "partinionier" ein ext2 formatiert. 
Da das FAT dann unter openSUSE erkannt wurde...

Danach habe ich die Datei auf die Karte entpackt.

Meine bootargs sind wie in dem Beitrag:

console=ttyS0 root=/dev/mmcblk0p1 rootwait

Das bootcmd so:
mmcinit; ext2load mmc 0:1 0x10400000 /boot/uImage; bootm

Ich hatte auch schon 0x10300000 versucht, aber gleiches Problem.

Wie kann man eine Karte unter Linux formatieren, die man im /dev nicht 
sieht? Oder liegt da nicht das Problem?

Ach ja, mein Uboot ist Version: U-Boot 1.1.4-at0 (Jan 3 2007 - 10:30:09)

Die SD Karte wird als 'RCA 618788' erkannt

von Gast (Gast)


Angehängte Dateien:

Lesenswert?

"Bad Magic Number" bedeutet Uboot erkennt kein ext2-Filesyystem auf der 
Karte.
Entweder ist Uboot zu alt, die aktuelle Version, die vom Buildroot 
gebaut wird, ist 1.3.4, oder die Karte wurde nicht richtig 
partitioniert.
Ich partitioniere die Karte immer unter Ubuntu von der Konsole aus mit 
"gparted".
Also die Karte mounten, dann unter "gparted" auswählen, die vorhandene 
Partition löschen und neu anlegen. Dann die Karte neu mounten und die 
vom Buildroot gebaute Datei xxxxx.tar.gz auf die Karte entpacken. Die 
Datei fstab editieren oder austauschen. Dann die Karte unmounten 
(wichtig!) und ins NGW packen.Ich häng mal die fstab an.
Buildroot baut in Regel immer eine neue Uboot.bin mit. Ich würde 
empfehlen Uboot zu erneuern. Anleitungen findest du hier in den Artikeln 
oder in den Wikis von avrfreaks. Aber Vorsicht, wenn da was schief geht, 
brauchst du einen JTAG.

von FrankR (Gast)


Lesenswert?

Hallo!

Danke fürden Tipp, ich habe nun das VMware Image von Atmel gefunden und 
werde dort mal die Anleitung (und Dein Tipp mit der fstab) mal unter 
Ubuntu durcharbeiten. Was braucht das NGW100 denn für eine Formatierung 
(SuperFloppy oder HDD)?

MfG
Frank

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Hallo,

ich hatte mit dem STK1000 auch das Problem.
Das seinerzeit daran, das Atmel die Magic-Number in ihrer Toolchain
selbstherlich vergeben hatte ohne die die offizielle MagicNumber 
abzuwarten.
Die nächste (zuvor von Atmel genutzte) MagicNumber ging dann an einen 
anderen Hersteller. In der nächsten Toolchain war dann die MagicNumber 
neu vergeben.

Du mußt den UBoot auf dem Board neu flashen. Anleitungen findest Du bei 
Atmel.

Gruß

Olaf

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Oh man, nächstes mal lese ich zuerst was ich geschrieben habe ...

Seisdrum, der Inhalt stimmt aber ...

Gruß

Olaf

von FrankR (Gast)


Lesenswert?

Hallo!

Ich habe hier noch einen Asatz gefunden:

http://blog.muetze1.de/?p=411#more-411

Diesen werde ich am Abend direkt mal antesten ...

von Gast (Gast)


Lesenswert?

> Was braucht das NGW100 denn für eine Formatierung
> (SuperFloppy oder HDD)?

Hatte ich schon mal in einem anderen Thread geschrieben:

Muß man das Teil partitionieren oder nicht ?

Ohne Partition => mkfs.ext2 /dev/sda
wenn die SD-Card als sda im System hängt. Das ergibt dann eine
Superfloppy nur mit einem Bootblock

fdisk /dev/sda -> n für NEW und dann alles als Partition 1
Mit Partition (Typ 83 : Linux) => mkfs.ext2 /dev/sda1
und man hat eine Disk mit MBR und Bootblock in der 1. Partition,
oder mit gparted eine Partition erstellen kommt auf gleiche raus.

Uboot möchte gern eine Partition sehen.

von FrankR (Gast)


Lesenswert?

Hallo!

Ich habe es mit gparted gemacht, also "richtig". Leider hat es nicht zu 
Erfolg geführt. Wo kann denn dann der Fehler liegen?

Ich werde wohl erstmal das U-Boot flashen und dann it der gleichen Karte 
testen, wenn das auch nichts bring... dann mal den Ansatz von Herrn 
Muetzel testen.

Hat jemand schon mal eine nicht kompatible Karde gehabt? Ich habe mir 
extra eine alte 2GB Class 2 Karte von SanDisk besorgt .. gegenüber der 
Class 4, die ich schon hatte. Beide bringen den gleichen Fehler ...

...  Bad Magic Number! ... kann das noch einmal jemand erklären?

Danke

von Thomas K. (muetze1)


Lesenswert?

Da du ja schon meinen Blog-Eintrag verlinkt hast: hast du die dort 
angegebene Config Datei runtergeladen und in dein
1
/etc/
 gelegt unter Ubuntu um dann mit
1
mkfs -t ext2 /dev/mmcblk0p1
 deine Karte zu formatieren?

Alternativ: schonmal beim booten mit Leertaste in U-Boot gelangt, dort 
dann mit
1
mmcinit
 das MMC/SD Interface aktiviert und mit
1
ext2ls mmc 0:1 /
 dir versucht das Inhaltsverzeichnis auszugeben?

Dort hatte ich nur ein paar Punkte obwohl die Karte woanders ordentlich 
lief (nun ja, ist ja im Blog beschrieben)...

von Gast (Gast)


Lesenswert?

also ich denke es liegt an dem alten Uboot. Nimm das was dir Buildroot 
gebaut hat.

von FrankR (Gast)


Lesenswert?

Hallo!

Bin grade wieder mal dran:

Hier schon mal das derzeitige Ergebnis in Sachen "mmcinit .."

U-Boot 1.1.4-at0 (Jan  3 2007 -10:30:09)

U-Boot code: 00000000 -> 000144f7  data: 24000000 -> 24002d80
SDRAM: 32 MB at address 0x10000000
Testing SDRAM...OK
malloc: Using memory from 0x11fc0000 to 0x12000000
Flash:  8 MB at address 0x00000000
DRAM Configuration:
Bank #0: 10000000 32 MB
In:    serial
Out:   serial
Err:   serial
Net:   macb0, macb1
Press SPACE to abort autoboot in 1 seconds
Uboot> mmcinit
Manufacturer ID:       03
OEM/Application ID:    5344
Product name:          SD02G
Product Revision:      8.0
Product Serial Number: 2154866211
Manufacturing Date:    09/06
SD Card detected (RCA 61878)
CSD data: 00260032 5f5a83ae fefbcfff 928040df
CSD structure version:   1.0
MMC System Spec version: 0
Card command classes:    5f5
Read block length:       1024
Supports partial reads
Write block length:      1024
Does not support partial writes
Supports group WP:      32
Card capacity:    1977614336 bytes
File format:            0/0
Write protection:
.Uboot> ext2ls mmc 0:1 /
.bad MBR sector signature 0x0000
** Bad partition - mmc 0:1 **
Uboot>

... nun werde ich mal den Rest der Tipps testen

Vielen Dank ... bis gleich

von FrankR (Gast)


Lesenswert?

Guten Morgen,

leider hat mich der gestrige Abend wieder nicht zum Erfolg geführt und 
ich bin total am Ende!

Jetzt würde ich die weiße Fahne schwenken und echt mal von Null 
anfangen:

1. Ich habe die ATMEL VMware Session Ubuntu 8.04 gebootet
2. Ich stecke die SD Karte eine USB Reader und dieses dann in mein 
Notebook, hier wird er auch erkannt und der VMware zugeordnet...
3. das Ubuntu zeigt mir die Karte direkt in "Places" an (AutoMount oder 
soooo)
4. hier mache ich jetzt rechte Maustaste "Unmount" -> Karte ist weg
5. nun im Termial die Befehle mkfs -t ext2 /dev/sdb (das ist wohl die 
Karte hoffe ich, unter dem NGW100 ist es /dev/mmcblk0p1, hier habe ich 
aber leider kein mkfs!) -> Ach ja, der Inhalt der config Datei ist 
gleich!
6. jetzt muss ich die mounten (keine Ahnung wie)
7. das avr32-linux.tar.bz2 dahin entpacken
8. Karte unmounten (keine Ahnung wie)
9. die Karte in das NGW100 stecken und den U-Boot mit SPACE unterbrechen
10. askenv bootcmd anpassen
11. das andere Teil auf 0x10400000 setzen
12. saveenv machen
13. reset des boards

Hört sich toll an, aber ich kriege es nicht hin... da das eine lange 
Kette von ToDos ist, kann ich als total Leihe auch viele Fehler machen. 
Kann mir jemand helfen?

1M Danke

MfG
Frank

von Thomas K. (muetze1)


Lesenswert?

Moin!

Also unter meinem direkt installierten Ubuntu ist es trotzden 
/dev/mmcblk0 als Gerät und /dev/mmcblk0p1 als Partition 1 darauf. 
/dev/sdb ist eigentlich eher das zweite S-ATA Device.

6. sudo mount -t ext2 /dev/sdb /mnt
7. sudo tar xjf avr32-linux.tar.bz2 /mnt
8. sudo umount /mnt

sudo ist notwendig, da Karte sowie mount-Verzeichnis für die Welt keine 
Schreibrechte vorsehen.

von Gast (Gast)


Lesenswert?

also ich mach es so:

1. Ubuntu booten in VMware
2. USB Card-Reader mit SD-Karte in den USB-Slot stecken
3.Ubuntu erkennt 1GB-Media auf dem Desktop (hab ne 1 GB-SD-Karte drin 
stecken)
4. in der Konsole "gparted" aufrufen und" /dev/sdc" auswählen.
5.die angezeigte Partition SDC1 auswählen und rechte 
Maustaste--->"Unmount"
6. noch mal die Partition auswählen und rechte Maustaste ---> "Delete"
7."unallocated" markieren und rechte Maustaste --->"New"
8. in dem sich öffnenden Fenster "Create as" = "Primary Partition" und 
unter "Filesystem" = "ext2" auswählen. Dann "+Add" anklicken. Das 
Fenster schließt sich.
9. in gparted oben "Apply" anklicken. Abfrage bestätigen mit "Apply"
10. Warten bis fertig, dann "Close" anklicken. Damit ist die Karte 
fertig partitioniert.
11. USB Card-Reader mit Karte herausziehen, Moment warten, dann wieder 
einstecken. Ubuntu mounted die Karte wieder.
12.gparted schließen.
13.mit File-Browser dein xxxx.tar.gz suchen, doppelklick darauf und in 
dem sich öffnenden Fenster oben "Extract" anklicken. Es öffnet sich ein 
weiteres Fenster. Dort links deine xxGB Media markieren und unten rechts 
"Extract" klicken. Kurz warten.
14. in dem sich öffnenden Fenster auf den Ordner "." doppelklick. Dann 
auf den Ordner"etc" doppelklick und die Datei "fstab" editieren oder 
gegen meine von oben austauschen. Browser schließen.
15. Auf dem Desktop auf "xxGB Media" rechte Maustaste ---> Unmount und 
Moment warten.
16. Karte ziehen und ins NGW stecken.
17. NGW starten und den Bootvorgang nach ca.3 Sek. abbrechen 
(Space-Taste).
Wenn der Zeitpunkt verpasst wurde und Linux gebootet hat, im command: 
reboot eingeben. Dann sieht man den Punkt besser.
18. im Uboot "printenv" eingeben. Die sollten dann so aussehen:
U-Boot> printenv
bootdelay=3
baudrate=115200
ethact=macb0
ethaddr=00:1F:E5:00:03:E9
bootcmd=mmcinit;ext2load mmc 0:1 0x10400000 /boot/uImage;bootm 
0x10400000
bootargs=console=ttyS0 root=/dev/mmcblk0p1 rootwait fbmem=765k
stdin=serial
stdout=serial
stderr=serial

Wenn nicht, mit "setenv" eingeben und "saveenv" abspeichern.
Wenn dein uImage evtl. einen anderen Namen hat (auf der Karte 
nachschauen) bei /boot/"deinImage-Name"; statt uImage eintragen.
Dann Reset und es sollte funktionieren. Wenn nicht, ist das Uboot zu 
alt.

So, sorry, wenn ich jetzt etwas weit ausgeholt habe und ich möchte 
hiermit auch keinen für Dumm verkaufen und es gibt sicher auch andere 
Methoden um die Karte zu formatieren oder wie auch immer. 
(eingefleischte Linuxer wird es grausen nehme ich an ;)

von mad_axe (Gast)


Lesenswert?

Wie meine vielen Poster schon davor, einfach UBoot updaten. Das spart 
viel Zeit und Nerven und seit dem laufen bei mir alle Karten ohne 
Probleme.

Gruß
Micha

von FrankR (Gast)


Lesenswert?

Hallo!

Leider hat mich die Grippe erwischt und ich komme erst jetzt zur 
Antwort:

Leider hat das Vorgehen kein Erfolg gehabt und ich habe noch keine SD 
KArte "richtig" formatiert, weiterhin
1
** Bad partition - mmc 0:1 **

auf der NGW Konsole. Nun wollte ich mal die U-Boot Version erneuern... 
na ja, wie sage ich immer so schön: Ohne Arme, keine Kekse! Wie kann ich 
das U-Boot austauschen, ohne eine lauffähige SD Karte und einen MKII zu 
haben?

MfG
Frank

von FrankR (Gast)


Lesenswert?

Hallo!

Grade noch eingefallen:
1
Zitat: Wenn nicht, mit "setenv" eingeben und "saveenv" abspeichern.
2
Wenn dein uImage evtl. einen anderen Namen hat (auf der Karte
3
nachschauen) bei /boot/"deinImage-Name"; statt uImage eintragen.
4
Dann Reset und es sollte funktionieren. Wenn nicht, ist das Uboot zu
5
alt.

In dem Verzeichnis, was ich auf die Karte kopiere gibt es unter /boot 
nix! Es leigt nur im Root eine Datei /uImage

von Thomas K. (muetze1)


Lesenswert?

Nun, dann gebe direkt /uImage an - aber es bringt dir erstmal nix, da er 
gar nicht auf die Partition zugreifen kann. Erstmal musst du das U-Boot 
updaten.

Wie das geht, hat Atmel beschrieben. Es gibt unterschiedliche 
Möglichkeiten, u.a. auch ohne SD Card über's LAN, etc.

Siehe auch 
http://support.atmel.no/knowledgebase/avr32studiohelp/com.atmel.avr32.tool.ngw100/html/firmware_upgrade.html

von Gast (Gast)


Lesenswert?

> In dem Verzeichnis, was ich auf die Karte *kopiere*
sorry, aber vielleicht reden wir aneinander vorbei, aber unter Punkt 13 
solltest du doch das .tar.gz auf die Karte extrahieren. Bei allen 
Karten, die ich bisher erstellt habe, ist in dem Verzeichnis /boot auf 
der Karte das uImage.

von Gast (Gast)


Lesenswert?

du kannst das uboot auch ohne Karte flashen. Du richtest dir einen 
HTTP-File-Server auf deinem Rechner ein. z.B. HFS. Dann ziehst du die 
uboot.bin in den fileserver, bootest das ngw ganz normal und holst dir 
die uboot.bin per wget >URL-Fileserver/uboot.bin< auf dein NGW. Danach 
folgst du der Anleitung von Atmel.
Wenn es schief gehen sollte, solltest du dich hier anmelden, damit man 
dich per pn kontaktieren kann. Ich glaub, ich hab da noch nen jtagice 
mkII rumfliegen ;)

von Thomas K. (muetze1)


Lesenswert?

Gast schrieb:
>> In dem Verzeichnis, was ich auf die Karte *kopiere*
> sorry, aber vielleicht reden wir aneinander vorbei, aber unter Punkt 13
> solltest du doch das .tar.gz auf die Karte extrahieren. Bei allen
> Karten, die ich bisher erstellt habe, ist in dem Verzeichnis /boot auf
> der Karte das uImage.

In dem aktuellen Buildroot hat er mir das ganze auch im Root erstellt. 
Ich habe nun schon mehrfach beides gesehen - somit kann man das nicht 
pauschal als falsch definieren.

von Gast (Gast)


Lesenswert?

ok, mag sein. Dann müsste das aber auch bei den bootcmd eingetragen 
werden. Also statt .../boot/uImage...   /uImage.....

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.