CrossStudio ARM Programm flashen

Gast #1468742
Hallo!

Ich versuch mich seit einigen Tagen mit CrossStudio anzufreunden und 
stoße auf einige Probleme.

Wenn ich ein Programm kompiliere und dann debugge oder über Build and 
Run ausführe, läuft es. Nach dem Aus- und Einschalten des Controllers, 
läuft nix. Ich habe den Debugger nach dem Einschalten attached und auf 
den Speicherbereich 0x00100000 (da wo Flash anfangen soll) geschaut, da 
steht nur "ldreqd r0, [r0], -r0" auf jeder Adresse und sonstiger Müll.

Ich habe einfach das Standardprojekt für den AT91SAM7S256 erstellt und 
habe ein kleines Programm, was ledeglich eine LED anmacht.

Was bedeutet das? Wir beim Build and Run das Programm in dem RAM 
ausgeführt und gar nicht geflashed?
Gast
Danke für den Tipp!

Nun habe ich ein anderes Problem: Der Controller ließ sich programmieren 
und alles lief gut. Aber schon zum zweiten Mal heute ist der totale GAU: 
Der Flashspeicher bleibt nach dem Programmieren leer. Ich habe voller 
Verzeweiflung das Board mehrere Stunden in Ruhe gelassen und es ging 
plötzlich wieder... Ich konnte flashen und debuggen.

Kann sowas an dem Proramm liegen? Ist es möglich, mit einem 
ungeschickten Code den Debugger auszusperren?
Oluh schrieb:

> Ist es möglich, mit einem
> ungeschickten Code den Debugger auszusperren?

Ja. Der Debugger fliegt bei Reset aus dem JTAG raus und muss sich erst 
einmal wieder einklinken. Wenn das Programm durch irgendwelche Fehler 
rechtzeitig dafür sorgt, dass er das nicht mehr kann, dann ist Sense. 
Zumindest für JTAG - nur ein Bootloader hilft dann noch.

Eben deshalb hat Rowley diese Totschleife eingebaut (vor allem aber auch 
um den Startup debuggen zu können). Gibt dem Debugger Gelegenheit, den 
Core einzufangen bevor er Unfug stiften kann. Pfiffigere Zeitgenossen 
verwenden eine Zeitschleife über einige hundert Millisekunden, dann 
funktioniert das sowohl mit Debugger als auch ohne.

Apropos: Was für ein JTAG-Interface?
Gast
Es ist ein Olimex USB Tiny.

Meine zweite Vermutung ist die Clock Source. Ich muss für meine 
Anwendung den Takt von Außen vorgeben. Als ich mit den Registern 
gespielt habe, habe ich eingestellt, dass die CS extern ist. Wäre es 
möglich, dass deswegen nix läuft? Denn mit der aktuellen Hardware kommt 
die Clock aus dem internen Oszillator.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.