Forum: Mikrocontroller und Digitale Elektronik Ozone Debugger CPU Init File?


von Sascha (Gast)


Lesenswert?

Hallo, arbeitet jemand mit dem Debugger von Segger Ozone mit einem ARM9 
oder ARM7?
Ich suche nach einer Möglichkeit die CPU zu initialisieren, damit das 
SDRAM arbeitet und ich meinen Code zum debuggen einspielen kann.
Übrigens finde ich den Debugger als Standalone Programm echt klasse. Man 
kann sich mal von den IDEs etwas befreien. Auch scheint mir die 
Funktionalität bis jetzt recht gut zu sein. Bis jetzt aber nur mit einem 
CM0 getestet.

Gruß Sascha

von Dr. Sommer (Gast)


Lesenswert?

Interessantes Problem. Hat der keinen internen Flash/SRAM welcher direkt 
funktioniert? Könntest du da nicht ein einfaches 
Initialisierungs-Programm einspielen, welches den SDRAM initialisiert 
und danach einen Breakpoint aufruft (Instruktion "BKPT") sodass du dann 
dein Programm in den SDRAM laden kannst?

von Sascha (Gast)


Lesenswert?

Nein SRAM geht nicht, sind max. nur 10K und mein Programm hat mindestens 
4MB.
Deshalb habe ich mir auch einen flotten JLink zugelegt.
Gruß Sascha

von Dr. Sommer (Gast)


Lesenswert?

Sascha schrieb:
> Nein SRAM geht nicht, sind max. nur 10K und mein Programm hat mindestens
> 4MB.

Ein Programm welches den SDRAM aktiviert sollte wohl in 10KB passen. Das 
lädst du in den SRAM, startest es, und lädst dann das Hauptprogramm in 
den SDRAM.

von Sascha (Gast)


Lesenswert?

Ja das ist einfach gesagt, aber wie weise ich das dem Ozone Debugger an.
Bei anderen Debugger Systemen setze ich die CPU auf Halt und schreibe 
über den JTAG einfach mittels script in die Hardware-Register. Nach 
einem System Reset ist ja alles wieder weg ! Man muss also auch noch 
unterscheiden zwischen System- und CPU-Reset.

Gruß Sascha

von Christian F. (cfrey)


Lesenswert?

Du kannst die Ozone Projekt-Datei (*.jdebug) mit einem Texteditor 
bearbeiten. Darin sind mehrere Funktionen in einer C-ähnlichen 
Scriptsprache enthalten, mit denen das Verhalten des Debuggers gesteuert 
werden kann.

Im Manual des Debuggers 
(https://www.segger.com/downloads/jlink/UM08025_Ozone.pdf) ist dieses 
Scripting-Interface im Kapitel 6 beschrieben. So lassen sich z.B. 
Event-Handler implementieren, welche vor dem Download des Programmes 
ausgeführt werden sollen.

Gruss,
Christian

von Sascha (Gast)


Lesenswert?

Hallo Christian,
ja Danke das werde ich mir sofort mal ansehen, ich hoffe man bekommt auf 
den JLink zugriff oder kann sogar Initialisierungs Plugins einspielen 
(also ins SRAM).
Habe mir gerade die Befehle schon angesehen, es fehlt noch ein Wait xxx 
ms Befehl, weil man oft keine Hardware Register pullen kann ist es 
besser beim Schreiben auf eine PLL einfach xxx ms abzuwarten, bevor man 
das nächste Register beschreibt.

Ich muss die PLL initialisieren (Taktung) und das SDRAM, damit ich auf 
den Chip komme.
Wenn ich ein Initialisierungs File ins SRAM einspiele kann ich das ja 
über eine Memoryzelle (Status) als quasi Handshake pullen, wann es 
fertig ist.
Also in etwa gleich wie bei einem Flash-Loader.

Mein Source-Code also das ELF-File belegt das SRAM und das SDRAM 
zugleich. Das dürfte hoffentlich beim Download kein Problem sein?
Es wird ja auch kein Flash-Loader verwendet.

Ich darf nur keinen System-Reset machen, sonst ist alles wieder weg!

Gruß Sascha

An die Arbeit.

von Christian F. (cfrey)


Lesenswert?

Hallo Sascha

Ich denke, beide Varianten sollten möglich sein:
- entweder ein File ins RAM einspielen (Target.LoadMemory) und ausführen
- oder die Initialisierung mittels Debugger Script ausführen.

Bisher habe ich eigentlich immer die zweite Variante verwendet 
(allerdings mit einem anderen Debugger und Prozessor).

Mittels Target.ReadU8/16/32 sollte es meiner Meinung nach möglich sein, 
auch auf die Peripherie-Register zuzugreifen und somit PLL und SDRAM zu 
initialisieren.

Es gibt übrigens einen Util.Sleep Befehl (im pdf Kapitel 7.7.6). Das 
Flow-Chart im Kapitel 7.5 könnte für deine Anwendung auch noch 
interessant sein. Darin ist ersichtlich, wie man sich in die 
Startup-Sequenz des Debuggers einhängen kann.

Gruss,
Christian

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.