ARM91SAM7S via JTAG, Befehle werden nicht akzeptiert

Gast #1920911
Lesenswert?
• ▲
▼
Hallo!

Ich versuche gerade ein Software zu schreiben die einen ARM91SAM7S256, 
welcher auf einem ARM91SAM7S-EK Evaluation Board, sitzt via JTAG 
programmiert und auch andere Funktionen wie z.B. lock bits auslesen 
ausführt.

Dabei tritt jetzt folgendes Problem auf. Die Funktionen der ScanChains 0 
und 1 funktionieren alle, doch um obige Funktionen auszuführen wird 
ScanChain2 benötigt.
Die ScanChain 2 funktioniert prinzipiell, da ich das Debug Status 
Register (um core state zu bestimmen) auslesen kann. Dabei handelt es 
sich um einen reinen Lesebefehl.
Das Problem was ich noch habe ist, dass der ARM die Befehle welche ich 
ihm über die Scan Chain 2 geben nicht akzeptiert.
Das heißt genauer: Ich schreibe die Befehle von Tabelle 20-3 (S. 124) im 
doc6175.pdf 
(http://www.atmel.com/dyn/resources/prod_documents/doc6175.pdf) in das 
DCDR und gehen über den Run-Test-Idle-State wieder zurück in das ShiftDR 
um z.B. die Lock-Bits auszulesen. Ich lese aber immer nur NULLEN, obwohl 
das laut Olimex (Test mit einem Olimex ARM-USB-Tiny durchgeführt) nicht 
so sein dürfte.
Der Befehl wird jedoch richtig in das DCDR geschrieben, welches ich 
durch einen weiteren Test herausgefunden haben (Schreiben ins DCDR, eine 
Runde in der TAP-Machine ohen Run-Test-Idle und das Gleiche steht noch 
drinnen).

Dass er die Befehle nicht akzeptiert vermute ich weiters dadurch, dass 
ich schon probiert habe das DCCR auszulesen (laut Read/Write Handshake 
auf S.136 in doc6175.pdf).
Versuch:
Bevor ich ein ICE-register beschreibe ist das R bit 0, also kann ein 
Schreibvorgang durchgeführt werden.
Unmittelbar danach will ich lesen, doch das R bit ist auf 1 gesetzt und 
wird auch bei mehrfachen Auslesen nicht 0 (Timeout), was laut Datenblatt 
darauf hindeutet, dass die Daten(Befehl) noch nicht ausgelesen wurden. 
Das W bit ist in diesem Zeitpunkt auch nicht 1, um einen Lesevorgang zu 
ermöglichen.

Hätte vielleicht jemand eine Idee woran das liegen könnte? Dass ich zu 
schnell unterwegs sind glaube ich fast nicht, da ich schon einmal eine 
längere Verzögerungschleife eingebaut habe.

Grüße
#2042980
Lesenswert?
• ▲
▼
Hallo,
Sind Sie mit dieser Frage weiter gekommen? Ich habe das gleiche Problem, 
ich kann die 'ICEBreaker registers'-Registers beschreiben und auslesen. 
Zum Beispiel, ich schreibe zwei verschiedene Werte in 
Watchpoint_0_und_1_Address_Registers und kann diese Werte korrekt 
auslesen.
Allerdings, wenn ich den 'Debug Comms Data Register'-Register mit einer 
Kommando beschreibe, bleibt der Register für immer 0x100000001, so das 
es scheint für mich, dass der ICEBreaker gar nichts aktiv ist, und holt 
die Kommando nicht ab.

Antwort schreiben

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.

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.