www.mikrocontroller.net

Forum: Compiler & IDEs CrossStudio ARM Programm flashen


Autor: Oluh (Gast)
Datum:

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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FAQ. Stolpert jeder drüber. Siehe Text im Startup-File,
STARTUP_FROM_RESET oder so.

Autor: Oluh (Gast)
Datum:

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

Autor: A. K. (prx)
Datum:

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

Autor: Oluh (Gast)
Datum:

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

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.