OpenOCD AT91RM9200 externes RAM programmieren

Gast #605951
Lesenswert?
• ▲
▼
Hallo,

an meinem AT91RM9200 hängen 32 MB SD-RAM und eine SD-Karte, "normales" 
Flash habe ich mir gespart.
Nun würde ich gerne mit dem OCD das Programm ins externe RAM laden und 
später mit einer Funktion im internen Flash in die SD-Karte kopieren.
Später sollte der Bootloader nur noch das Programm zurück in das RAM 
kopieren.

Kann das der OpenOCD? Da das Atmel-Demoboard mit viel mehr RAM als Flash 
ausgestattet ist (32 MB -  4 MB), sollte es ja gehen, oder?
Vielen Dank im Voraus,
Bernhard
#605974
Lesenswert?
• ▲
▼
Hallo Bernhard,

das 9200 hat AFAIK kein internes Flash, wenn ich falsch liege bitte 
aufklären. Somit wird dein Plan, wenn ich mich nicht irre, nicht 
funktionieren.

Du könntest ins RAM ein Programm ablegen, dass die Daten aus dem 
Speicher (oder über DCC / UART o.ä.) nimmt und dann auf die SD Karte 
schreibt.

Gruß Jörn
Gast #606017
Lesenswert?
• ▲
▼
Hallo Jörn,

der AT91RM9200 hat 128 kb "Fast ROM", also Flash.
Zumindest am Anfang würde ich mir den Weg über 
UART->SD-Karte->Bootloader gerne sparen, sondern einfach laden und 
prüfen.
Variablen aus dem RAM sollte der OCD ja auslesen und beschreiben können, 
also sollte es ja pronzipiell gehen.

Viele Grüße,
Bernhard
#606035
Lesenswert?
• ▲
▼
Hallo Bernhard,

Du kannst mit dem OpenOCD das RAM schreiben und lesen, sofern du zuvor 
den SDRAM Controller und die PLL initialisierst.

Das "Fast ROM" des AT91RM9200 is definitiv nicht programmierbar, 
zumindest ist keine Möglichkeit zur Programmierung dokumentiert.

Gruß,

Dominic
#606046
Lesenswert?
• ▲
▼
Der AT91RM9200 hat definitiv kein Flash.

Er hat ein internes ROM (wirklich read-only, kein Flash), in dem ein 
fester Bootloader abgelegt ist. Dieser sucht nach dem Reset nach einem 
externen Flash und kopiert eine feste Anzahl Bytes in das interne RAM 
(160kB). Dann wird der Speicher "umgemappt" und zum Anfang des RAM 
gesprungen. In der Regel ist der Bootprozess mehrstufig, d.h. in dem 
externen FLASH, meist ein kleines Data-Flash, wird ein zweiter 
Bootloader abgelegt, der dann seinerseits den externen Speicher (SDRAM, 
SD-Karte, großes paralleles Flash etc.) initialisiert und das 
eigentliche Hauptprogramm in das SDRAM lädt.

Findet der interne Bootloader des AT91RM9200 keinen externen Bootloader 
in einem angeschlossenen Speicher, springt er in eine Routine, die ein 
Programm über die serielle Schnittstelle herunterlädt. Dies ist auch der 
Ansatz für das Bootstrapping eines neuen ("leeren") Systems.
Gast #606094
Lesenswert?
• ▲
▼
Danke für eure Antworten.

@ Oliver Döring
Mit deinem Tipp hast du mir einen Haufen Arbeit erspart, ich hätte auch 
geneauer / weniger optimistisch auf das Datenblatt schauen können.

Welchen UART-Loader nehme ich am Besten für den internen Bootloader? 
Ghet das automatisiert mit Eclipse und OpenOCD als "Resetter"?

Kann ich den AT91RM9200 auch standalone mit dem internen RAM betreiben? 
Nur als Notlösung, wenn anfangs erst mal gar nichts geht.

Vielen Dank,
Bernhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren