mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM91SAM7S via JTAG, Befehle werden nicht akzeptiert


Autor: Frentzen (Gast)
Datum:

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

Autor: Frentzen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niemand eine Idee?

Autor: Wladimir S. (wlad)
Datum:

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

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.