www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Selbsttest von Mikrocontroller


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Will eine Testroutine schreiben die selbstständig zyklisch den CPU und
den Speicher auf Fehler  testet. Kann mir einer sagen wie ich
vorzugehen habe? Bin nicht so gut in der Materie.

M F G

Autor: Johannes Raschke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um CPU-Fehler zu finden, brauchst Du wohl ein System aus mindestens 2
CPUs, die sich gegenseitig überwachen...
RAM-Tests sind generell unzuverlässig und dauern lange.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das System ist mit einer 1oo2D- Struktur zweifach Redundant ausgelegt
also mit 2 CPUs. Muss CPU sowie Speichertests durchführen (wird
vorgeschrieben). Weiß aber nicht so genau wie ich vorgehen muss.

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ROM: Checksummenprüfung zur Laufzeit mit anschließendem Vergleich ob
errechnetes Ergebnis mit dem zuvor auf dem PC errechneten, erwarteten
Ergebnis übereinstimmt. Sinnvolle Prüfung!

RAM: zyklisch RAM-Zellen mit bestimmten Testmustern beschreiben (z.B.
0xAA oder 0x55) und rücklesen, ob auch tatsächlich der korrekte Wert
abgelegt/übertragen wurde.
(Die Qualität des RAM-Tests hängt allerdings stark vom verwendeten
Testmuster ab, das auf die interne Struktur der RAM-Organisation
angepasst sein muß. Ohne intimes Detailwissen dazu (das normalerweise
nur die Prozessorhersteller haben) bleibt dir eigentlich nur die
einfache Prüfung z.B. mit 0x55/0xAA übrig).

CPU: Du könntest dir spezielle Befehlssequenzen zusammenstellen, die
möglichst alle Befehle des AVRs abprüfen. Am Ende muß bei fehlerfreier
Ausführung ein definiertes Ergebnis rauskommen. Ein Ergebnis könnte
z.B. ein Rechenergebnis sein, oder eine definierte Stelle, an der dein
Testcode verlassen wird...

Über den Sinn von RAM und CPU-Tests kann man natürlich streiten, denn
im Fehlerfalle würde praktisch sehr wahrscheinlich zuerst irgendetwas
unvorhergesehenes im Programmablauf passieren, bevor ausgerechnet die
Prüfroutine durchlaufen wird und den Fehler erkennt bevor dadurch ein
undefiniertes, unversagbares Verhalten resultiert.
Zusätzlich stellt sich die Frage, wie du bei erkanntem Fehler weiter
reagierst.

Wofür willst du diesen Aufwand eigentlich treiben?
Den Branchen, denen solche Prüfungen auferlegt sind (wer macht sowas
schon freiwillig um zu überprüfen, ob eine LED richtig blinkt?), sind
typischerweise nicht die Abnehmer von Atmel-CPUs. (kleiner Seitenhieb
;)

PS: Zwar nicht von dir angesprochen, aber auch (nicht den
Programmablauf störende) Stacküberläufe lassen sich zur Laufzeit
erkennen. Wurde hier an anderer Stelle auch schon diskutiert.
Man kann auch durch externe Hardware einen Monoflop (ich vermeide hier
den Begriff Watchdog) retriggern, das einen Ausfall oder verspätetes
Triggern signalisiert. Somit kannst du den Komplettausfall oder z.B.
das Aussetzen einer PLL erkennen... viele Möglichkeiten - viel
Diskussionsraum um Sinn und Unsinn solcher Maßnahmen.

Schmittchen.

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, hatte in deinem ersten Beitrag wohl versehentlich 'Atmel'
gelesen...
Je nach CPU gibt's noch spezielle Features, die solche
Hardwaremonitoring Funktionen unterstützen (z.B. ADC-Prüfungen...).
Welche CPU setzt du ein?

Schmittchen.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal Danke für die Antwort.
Muss dies test mache um die Sicherheitsnorm 61508 zu erfüllen. Die
schreib nun mal vor das ein Selbsttest durch zu führen ist.
Es muß auf einen XEMICs- Mikrocontroller durchgeführt werden.

Hat dies schon mal jemand gemacht?(muß nicht auf diesen Typ sein)
Oder kann mir ein paar Links empfehlen?

Autor: Martin S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Chance, daß sich die CPU oder Speicher verändern, sind nach meiner
Einschätzung extrem gering (wenn man nicht grade den Prozessor neben
dem leuchtenden Reaktorstab plaziert)

Die Chance, daß sich ein Programmablauf verhakt und alles verkeilt
halte ich für wesentlich höher. Wie siehts denn (zusätzlich) aus mit
einem externen Wachhund (Watchdog) ? Damit kannst du belegen, daß das
System sich noch in einem konsistenten Zustand befindet....

Einen Speichercheck auf Schreib- oder Lesespeicher könnte sinnvoll auch
darin besteehen, daß man ECC Bits hinzu fügt. Sollte da eine komplexe
MMU die Fehlerüberprüfung / korrektur machen, dann sollte diese auch im
Falle eines Einzelfehlers "Alarm schlagen". Somit weißt du auch daß da
was mit dem Speicher "im Unreinen" ist...

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Chance, daß sich die CPU oder Speicher verändern, sind nach meiner
Einschätzung extrem gering

Naja, es muß ja nicht immer der Reaktorstab sein, aber
(Flash)-Speicherzellen können schon mal kippen (z.B. durch
Alterung/Ladungsverlust...), z.B. vom programmierten in den
unprogrammierten Zustand. Eine Checksummenprüfung erkennt dies
zuverlässig.

> Die Chance, daß sich ein Programmablauf verhakt und alles verkeilt
halte ich für wesentlich höher

Dafür ist dann ja der von dir schon angesprochene Watchdog geeignet.

Schmittchen.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>(Flash)-Speicherzellen können schon mal kippen (z.B. durch
>Alterung/Ladungsverlust...), z.B. vom programmierten in den
>unprogrammierten Zustand. Eine Checksummenprüfung erkennt dies
>zuverlässig.

Stimmt, das kann einfach so kommen oder verstärkt durch Überspannung
verursacht werden.
Ich habe schon dutzende TVs, PCs o.ä, gesehen die einfach so (oder nach
einen Gewitter) nicht mehr funktionieren. Neue Software ins EPROM
geschrieben und das Gerät läuft wieder.
Vor allem wenn die Geräte im Dauerbetrieb laufen, verlieren gerne mal
die Boot ROMs auf Grafikkarten, SCSI Karten o.ä. ihren Inhalt.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob die test sinnvoll sind oder nicht müssen halt gemacht werden!!
Watchdog Einsatz wird woll nicht zu vermeiden sein um einen test der
Programmroutine durchführen zu können.
Danke für die Anregungen mal seh was ich daraus machen kann!!

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.