mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik OpenOCD AT91RM9200 externes RAM programmieren


Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn Kaipf (joern)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver Döring (odbs)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.