SAM9G45 vom Teufel besessen

Gast #3504562
Lesenswert?
• ▲
▼
Hallo liebe Community

ich habe ein unerklärliches Phänomen welches ich seit längerem an meinem 
SAM9G45 beobachte.

Alle 17,26 Sekunden resettet sich der Prozessor unabhängig von der 
aktuellen Software. Es tritt sowohl beim Debuggen mit dem J-Link auf als 
auch bei der Ausführung von geflashter Software.
Während des Debuggens tritt der reset allerdings nur auf, wenn die CPU 
Instruktionen verarbeitet. Wartet die CPU in einem Breakpoint, kommt es 
nicht zu einem Reset.

Im Detail handelt es sich um das SAM9G45 OEM von www.in-circuit.de 
welches ich auf dem ADB1003 betreibe.

Ich verwende das Board für eigene Entwicklungen und habe zu diesem Zweck 
die Linux-Distribution vom NAND und den uBoot vom NOR gelöscht.

Das Linux hat einwandfrei funktioniert weshalb ich einen Hardware-Defekt 
"fast" ausschließe.

Hat jemand eine Idee, woran dies liegen kann?



Eine weitere sehr eigenartige Beobachtung habe ich im Debug-Betrieb 
machen können.
Folgender Assembler-Code kopiert diverses Zeug vom NOR in den SRAM:
1
  LDR     r0, =0x00000124;  //Source base address
2
  LDR     r1, =0x00300000;  //Destination base address
3
  LDR     r2, =0x00308124;  //Destination limit address
4

5
  st1_copy:
6
  CMP     r1, r2
7
  LDMLTIA r0!,{r3}
8
  STMLTIA r1!,{r3}
9
  BLT st1_copy

Hierzu wird schrittweise die Werte in r0 und r1 um 4 erhöht bis r1 den 
Wert in r2 erreicht hat. Zusätzlich wird bei jedem Durchlauf der Wert an 
Adresse in r0 nach R3 geladen und anschließend nach Adresse in r1 
geschrieben.

Dies funktioniert einwandfrei (bei so wenig Zeilen kann man noch nicht 
viel falsch machen :) )

Nun die Besonderheit: Sobald der Wert in r0 nach 0x158 gezählt wurde, 
sorgt der CMP Befehl(Welcher den Wert R1 und R0 miteinander Vergleicht, 
das Ergebnis allerdings verwirft und nur ein Bit im Status-Register der 
CPU aktualisiert) dafür, dass in R1 der Wert 0x9757357C erscheint was 
selbstverständlich zu einem Fehler(Data-Abort) führt... und gar keinen 
sinn ergibt.

Dieses eigenartige Verhalten ließ sich einige male mit immer dem selben 
Wert zur selben Zeit reproduzieren.
Um zu prüfen ob dieser Fehler nur beim Debuggen auftritt, habe ich den 
Code geflasht mit dem Ergebnis dass alles fehlerfrei kopiert wird.
Jedoch startet die CPU trotzdem alle ~17 Sekunden neu.

Langsam glaube ich dass die CPU auf einem alten Indianer-Friedhof 
produziert wurde oder das Zahngold eines alten Schamanen verbaut wurde.
Denn erklären kann ich es mir nicht.

Ich würde mich wirklich sehr über Tipps zur Fehlersuche freuen.

Gruß Tobias

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.