Forum: Mikrocontroller und Digitale Elektronik Wohin muss ich das File schreiben?


von Johannes (Gast)


Lesenswert?

Hallo

Ich habe mit dem IAR-Compiler ein Programm geschrieben, das Text auf dem 
Display ausgibt. Das Programm funktioniert einwandfrei. Nun habe ich 
meinen Quellcode compiliert. Das erzeugte Bin-File möchte ich nun in den 
Flash schreiben.

Da der AT91SAM9263 keinen internen Flash besitzt muss ich das Programm 
in den externen NAND-Flash schreiben. Dies mache ich mit dem SAM-BA-Tool 
von Atmel. Ich habe das Das AT91SAM9263-EK Board per USB an meinen PC 
angeschlossen. Dann starte ich SAM-BA 2.8 und wähle den Reiter NANDFlash 
aus. Dort suche ich unter "SEND FILE NAME" mein Bin-File aus und drücke 
anschließend auf "Send File"

Ich Log-Fenster steht dann folgendes:

File size: 0x3E24 Bytes
Writing 0x0 Bytes at 0x0 (Buffer addr 3024D4)
0x3024D4 Bytes written by applet

Nachdem ich das Bin-File in den NAND-FLASH geschrieben habe drücke ich 
die Reset Taste des µC. Per RS232 lese ich die DEBUG-Schnittstelle aus. 
Auf dem PC-Display steht dann "ROMBOOT"

Das Programm wird aber nicht gestartet. Habe dann das USB-Kabel und das 
RS232 Kabel abgezogen und noch einmal einen Reset durchgeführt. Das 
Ergebnis war das Selbe es passierte nichts.

Wieso liest er das File nicht auf dem NAND-FLASH ein?
Muss ich etwas im IAR-Compiler einstellen das er ein Bootfile erstellen 
soll?


Das habe ich gefunden:

The on-chip Boot ROM Memory integrates different programs permitting 
download and/or upload into the different memories of the product
First, it initializes the DBGU and the USB Device Port.
Then the DataFlash Boot program is executed. It looks for a sequence of 
eight valid ARM exception vectors in a DataFlash connected to the SPI. 
If a valid sequence is found, code is downloaded into the internal SRAM. 
This is followed by a remap and a jump to the first address of the SRAM.
If no valid ARM vector sequence is found, SAMBA™ Boot is then executed. 
It waits for transactions either on the USB device, or on the DBGU 
serial port. Then, user can use SAM-BA GUI to download binary file into 
the different memories of the product.

von Peter B. (pbuenger)


Lesenswert?

Hallo Johannes,

eigentlich hast Du Dir die Antwort doch schon selbst gegeben: Der 
ROM-Code des Controller kann aus dem NAND-Flash keine Anwendung starten. 
Das geht nur mit dem Data-Flash.

Gruß,
Peter

von Johannes (Gast)


Lesenswert?

Der AT91SAM9263 hat aber keinen Data-Flash es sei denn ich benutze eine 
SD-Card. Somit muss ich extra auf der SD.Card ein Bootloader spielen, 
der dann wieder meine Daten aus dem NAND-Flash ind den SRAM kopiert. 
Umständlicher gehts nun wirklich kaum mehr. Ich könnte den Mist aus dem 
Fenster werfen.

In einen anderen Dokument (Board Revision B) ich habe Board Revision A 
steht folgendes:

First, it initializes the DBGU and the USB Device Port

Then the NANDFLASH BOOT programm is executed. If a valid boot is found, 
the code is downloaded into the internal SRAM. This followed by a remap 
and a jump to the first adress of the SRAM

von Johannes (Gast)


Lesenswert?

In Dokument der Revision B steht das vom NAND-Flash gebootet wird.

von Peter B. (pbuenger)


Lesenswert?

Stimmt, dann haben die das ROM mal geändert.

Guck doch einfach ins Datenblatt des Prozessors, Kapitel "AT91SAM9263 
Boot Program", da steht ja, wie das NAND-Flash aussehen muss, damit der 
ROM-Code von dort bootet.

Gruß,
Peter

von Johannes (Gast)


Lesenswert?

Ich das Kapitel noch mal durchgelesen. Dort steht das zuerst der 
SD-Karte nach einem Bootfile durchsucht wird. Wenn kein Bootfile 
vorhanden ist, dann wird der NANDFLASH untersucht. Ins NANDFLASH habe 
ich auch das File "boot.bin" geschrieben, jedoch hat dies keine 
Auswirkung.

Es gibt ja 2 Möglichkeiten mit SAM-BA die Datei "boot.bin" in den 
NAND-Speicher zu schreiben.

1. NAND-Reiter auswählen, den NAND-Speicher aktivieren, anschließend den 
NAND-Speicher löschen und dann das Bootfile hochladen.

2.NAND-Reiter auswählen, den NAND-Speicher aktivieren, anschließend den 
NAND-Speicher löschen und dann das Bootfile auswählen, die Adresse 0x0 
auswählen und auf "Send File" klicken. Beides war ohne erfolg.

Ich vermute mal das der IAR-Compiler etwas falsch macht, denn irgendwie 
scheint der Atmel Bootloader das File nicht zu erkennen.

Muss ich beim IAR-Compiler irgendetwas besonderes einstellen?

von Peter B. (pbuenger)


Lesenswert?

>Ich vermute mal das der IAR-Compiler etwas falsch macht, denn irgendwie
>scheint der Atmel Bootloader das File nicht zu erkennen.

Hast Du denn die im Datenblatt beschriebenen sieben Exception-Vectors am 
Anfang Deiner boot.bin?

>If the NANDFlash is not formatted, the NANDFlash Boot program looks
>for a sequence of seven valid ARM exception vectors. If such a
>sequence is found, code is downloaded into the internal SRAM.

von Johannes (Gast)


Lesenswert?

Ne ich habe dort nicht geändert. Ich habe das File, das der IAR-Compiler 
erzeugt einfach an die Stelle kopiert.

Muss ich denn das File in den NAND-Flash schreiben und anschließend die 
sieben Exception-Vectors ändern.?

Ich dachte das macht der IAR-Compiler selber, da ich in den options 
genau den µC AT91SAM9263 ausgewählt hatte

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.