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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.