Forum: Mikrocontroller und Digitale Elektronik AT91SAM9261 - Code im ext. SDRAM laden und ausführen


von Norbert (Gast)


Lesenswert?

Hallo,

habe ich die Möglichkeit mit IAR (J-Link) ein Testprojekt direkt in den 
SDRAM zu laden und zu debuggen oder muss ich den Umweg mit einem 
vorgestellten Bootstrap Projekt gehen und den Code manuell ins SDRAM 
laden und starten?

Danke
Norbert

von Sascha (Gast)


Lesenswert?

Hallo Norbert,
IAR ist perfect für solches Debugging.
Du must nur beim Debugger das Scriptfile angeben, dann initialisiert er 
deinen DRAM-Controller und ladet den Code ins SDRAM und los gehts mit 
dem Debuggen.
Es gibt bei IAR ein Directory mit all den vorgefertigten Scriptfiles für 
diesen Prozessor.

Die Datei müsste at91sam9261-ek-sdram.mac oder so heißen.

Gruß Sascha

von Norbert (Gast)


Lesenswert?

Hallo Sascha,

danke für deine Antwort. Das mit dem *.mac File habe ich schon gefunden 
und habe es für meinen SDRAM angepasst und in den 
Options->Debugger->macro referenziert. Wenn ich mein Projekt jetzt 
"Download and Debug" kommt die Fehlermeldung, dass er das Makro 
"__hwReset" nicht findet. Wenn ich dieses auskommentiere, dann scheitert 
er am nächsten ("__writeMemory32").
Hast du hier eine Idee woran das liegen kann? Habe ich eventuell etwas 
vergessen zu parametrieren?

Danke.

von Sascha (Gast)


Lesenswert?

Hallo Norbert,
also ein kleiner Code auszug von mir:
/*********************************************************************
*
*       execUserPreload() : JTAG set initially to 32kHz
*/
execUserPreload()
{
    __message "------------------------------ execUserPreload 
---------------------------------";
    __hwReset(0);                     //* Hardware Reset: CPU is 
automatically halted after the reset (JTAG is already configured to 
32kHz)
    __writeMemory32(0xD3,0x98,"Register"); //*  Set CPSR
    __PllSetting();                   //* Init PLL
    __PllSetting133MHz();
    __initSDRAM();                    //* Init SDRAM before load
    _MapRAMAt0();                     //* Set the RAM memory at 0x0020 
0000 & 0x0000 0000
    _InitRSTC();                      //* Enable User Reset to allow 
execUserReset() execution
}

Da gibts bei mir keine Problem.
Der Befehl geht meines wissens gleich an den JLink Interface, aber IAR 
bringt eigentlich den richtigen Treiber gleich mit?

Vermutlich stimmt etwas anderes noch nicht in den Einstellungen.
Gruß Sascha

von Norbert (Gast)


Lesenswert?

Hey,

die Sequenz habe ich so auch. Wenn ich jetzt auf "Download and Debug" 
gehe, sehe ich im Debug Log die Meldung (Pfadangabe habe ich gekürzt):

Tue Apr 16, 2013 15:53:55: *\at91sam9261-sdram.mac(41,14): Error: 
Operation error.
Tue Apr 16, 2013 15:53:55: Error while calling macro execUserPreload
Tue Apr 16, 2013 15:53:55: Failed to load debugee: *.out

Wenn ich dann die Debug-Log Zeile anklicke, spring er zu dem 
Funktionsaufruf "__hwReset()".

Werde mal schauen, ob ich noch etwas finde. Auf jeden Fall danke für 
deinen Support.

von gerhard (Gast)


Lesenswert?

hallo sascha,
geh doch einfach von einem bestehendem example aus (z.b. daas 
getting-started-project).
dort gibt es eine configuration at91sam9261_sdram. die macht genau das 
was du brauchst.
wenn du dich mit diesem projekt vertraut gemacht hast kannst du ja mal 
die entsprechenden .eww-/.ewp-Dateien selbst erstellen.

gruss
gerhard

von Sascha (Gast)


Lesenswert?

Hallo Gerhard,
Danke, aber sag das Norbert. Ich erstelle alles von Hand.
Gruß Sascha

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.