Forum: Mikrocontroller und Digitale Elektronik uC Aufhängung technisch möglich?


von Martin (Gast)


Lesenswert?

Aus gegebenem Anlass: Können sich Mikrocontroller aufhängen?
Damit ist nicht der Fehlerfall gemeint, wenn eine schlechte Software 
aufgespielt ist und der Code in einer Dauerschleife ausgeführt wird.

von Christian S. (roehrenvorheizer)


Lesenswert?

Ja klar, so wie jede Art von Maschine, wenn sie von außen mit einer 
hinreichenden Störung beaufschlagt wird.

MfG

von Gerhard O. (gerhard_)


Lesenswert?

Martin schrieb:
> Aus gegebenem Anlass: Können sich Mikrocontroller aufhängen?
> Damit ist nicht der Fehlerfall gemeint, wenn eine schlechte Software
> aufgespielt ist und der Code in einer Dauerschleife ausgeführt wird.

Hardwaretechnisch, wahrscheinlich ja. Mögliche Ursachen:

- Verseuchte Versorgungsspannung mit ungenügenden Stütz Cs,
- Unzuverläßige, schwankende Vcc
- Schlechte RESET Beschaltung
- Brownouts ohne aktivierten Supervisor
- Ungenügende Betriebsspannung, bei beschreibung von FLASH Probleme
- Kosmische Strahlungspartikel die den PC oder Stack oder sonstige 
kritische Speicherzellen verändern bzw. korruptieren
- Übertemperatur bei schneller Taktung
- Sonstige unbekannte Gründe:-)

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

" Sonstige unbekannte Gründe:-)"

Siehe UFO.

Mfg

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Einfach zu beantworten: Wenn man ihn ausreichend weit übertaktet, stürzt 
er garantiert ab - also definitiv ja.

Absturz heißt ja auch nichts weiter, daß der µC nicht mehr das macht, 
was er soll. Also er kann in eine Endlosschleife geraten oder es gibt 
einen ungewünschten Reset.

Was mich mal im Zusammenhang interessiert, speziell zu den AVRs: Was 
machen die bei einem fehlerhaften Maschinencode? Eine x86 CPU meldet 
sich mit einem "Illegal Opcode", aber so einen Interrupt hat der AVR 
nicht...

von A. S. (Gast)


Lesenswert?

Ben B. schrieb:
> : Was machen die bei einem fehlerhaften Maschinencode?

Gibt's den denn? Illegalen opcode muss man sich ja auch leisten 
können...

von spess53 (Gast)


Lesenswert?

Hi

>Gibt's den denn? Illegalen opcode muss man sich ja auch leisten
>können...

Es gibt einige Befehle im AVR-Befehlsssatz die nur für die XMegas gelten 
(z.B. XCG, LAS, LAC, LAT ...). Allerdings hab ich nie ausprobiert, was 
die in einem AVR-Programm veranstalten.

MfG Spess

von georg (Gast)


Lesenswert?

Martin schrieb:
> Können sich Mikrocontroller aufhängen?

Höchstens aus Verzweiflung über die schlechte Software.

Martin schrieb:
> und der Code in einer Dauerschleife ausgeführt wird.

Irgendwo im Speicherraum gibt es immer eine Endlosschleife, egal aus 
welchem Grund der Prozessor nicht mehr das tut was der Programierer 
gemeint hat.

Georg

von Andi (Gast)


Lesenswert?

> uC Aufhängung technisch möglich?

Natürlich ist das technisch möglich, du brauchst halt einen Faden oder 
ein Stück Schnur. Macht sich sicher gut als nerdigen Weihnachtsschmuck.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Na wenn man z.B. mit dem Stack Mist baut, schickt man beim RET jede CPU 
ins Nirvana. Wenn die dann probiert, irgendwelche Daten wie Texte 
auszuführen, werden das bestimmt nicht alles gültige 
Maschinenbefehle/Opcodes sein. Gibts dann direkt einen Reset wenn der 
auf so einen ungültigen Befehl aufläuft?

Das Problem bei µC-Abstürzen ist eher, wenn durch ungünstige 
Konstellationen Änderungen an der Hardware-Konfiguration passieren. Dann 
kann das Ding auch mal recht schnell abrauchen oder wenn keine 
Sicherungsmaßnahmen greifen dreht irgendein Motor genüßlich über seinen 
Endpunkt hinaus und zermatscht wenn man Pech hat noch irgendwas am 
Aufbau.

: Bearbeitet durch User
von I don‘t like Mondays (Gast)


Lesenswert?

Es ist Freitag!

von Dirk B. (Gast)


Lesenswert?

Ben B. schrieb:
> Was mich mal im Zusammenhang interessiert, speziell zu den AVRs: Was
> machen die bei einem fehlerhaften Maschinencode?
lt. Forschungsbericht aus einem anderen Thread bei µC-net am 
verbreiteten Beispiel $ffff wird UOP wie NOP ausgeführt d.h. die warten 
1 Takt mit Nichtoperation und machen danach unauffällig weiter. Spannend 
wird das wenn die µC nicht zu ende programmiert wurden und praktisch 
einen Teil des Flash als UOP/NOP-Slide belassen haben der ... (???) 
evtl. zum Anfang führt. Bei geringer Speicherausnutzung könnte ein 
zufälliger Sprung dadurch überwahrscheinlich wie ein Reset wirken 
(allerdings ohne Initialisierung worauf Resetroutinen häufig nicht 
vorbereitet sind). Kurz: interessante Fehlermöglichkeit.

Bei über 100 'offiziellen' dokumentierten 'NOP' Opcodes mit 1,2 oder 
durchschnittlich 1,5 Taktdauern sind die UOP mit vermutlich genau einem 
Takt aber eher syntaktischer Zucker.

von fop (Gast)


Lesenswert?

Vor wenigen Jahren wurde erst komplett geklärt, was ein MOS6510 treibt, 
wenn man ihn ein 0x02 ausführen lässt.
Bis man sowas vom AVR erfährt kann also noch dauern.

von M. K. (sylaina)


Lesenswert?

spess53 schrieb:
> Es gibt einige Befehle im AVR-Befehlsssatz die nur für die XMegas gelten
> (z.B. XCG, LAS, LAC, LAT ...). Allerdings hab ich nie ausprobiert, was
> die in einem AVR-Programm veranstalten.

Also bei mir meldet der AVR-GCC (hier in Version 4.8.1) einen illegalen 
OpCode für die MCU (Fehler wird geworfen) ;)

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> MOS6510 treibt, wenn man ihn ein 0x02 ausführen lässt.
HCF

Wenn 0xFFFF als NOP ausgeführt wird, läuft halt irgendwann der 
Befehlszeiger über, der landet dann wieder bei Null und das erzeugt 
einen Reset.

von Andreas B. (bitverdreher)


Lesenswert?

fop schrieb:
> Vor wenigen Jahren wurde erst komplett geklärt, was ein MOS6510 treibt,
> wenn man ihn ein 0x02 ausführen lässt.

Erzähl mal. Das interessiert mich wirklich. Beim 6502 gab es da einige 
sehr interessante undokumentierte Befehle.

von Rolf M. (rmagnus)


Lesenswert?

M. K. schrieb:
> spess53 schrieb:
>> Es gibt einige Befehle im AVR-Befehlsssatz die nur für die XMegas gelten
>> (z.B. XCG, LAS, LAC, LAT ...). Allerdings hab ich nie ausprobiert, was
>> die in einem AVR-Programm veranstalten.
>
> Also bei mir meldet der AVR-GCC (hier in Version 4.8.1) einen illegalen
> OpCode für die MCU

Zur Laufzeit? Es geht hier nicht darum, was der Compiler macht, sondern 
darum, was der Prozessor macht.

> (Fehler wird geworfen) ;)

Wohin?

von Stefan F. (Gast)


Lesenswert?

Ben B. schrieb:
> Wenn 0xFFFF als NOP ausgeführt wird, läuft halt irgendwann der
> Befehlszeiger über, der landet dann wieder bei Null und das erzeugt
> einen Reset.

Nein, das erzeugt einen neustart des Programms.

Ein Reset (Zurücksetzten der Hardware und Register) ist etwas anderes.

von Peter D. (peda)


Lesenswert?

Martin schrieb:
> Können sich Mikrocontroller aufhängen?

Die ersten AVRs hatten da äußerst schwerwiegende Fehler bei Power-On.
Das Reset war/ist nur ein einfaches Zeitglied. Wenn die VCC zu langsam 
steigt oder schwankt, erfolgt kein ordentliches Reset und der 
Programmcounter startet irgendwo im Flash. Auch der EEPROM kann dann 
versehentlich Schreibzyklen starten, d.h. seinen Inhalt vergessen.

Die späteren AVRs haben ein Brownoutreset, was man für zuverlässiges 
Arbeiten immer enablen muß. Leider schluckt das sehr viel Strom (~30µA), 
was ungünstig für Batteriebetrieb ist. Dann muß man einen sparsameren 
externen Reset-IC anschalten.

Es gab/gibt aber noch weitere MCs, wo beim Power-On-Reset geschlampt 
wurde.

von Stefan F. (Gast)


Lesenswert?

Bei Batteriebetrieb hat man dieses Reset Problem allerdings eher selten. 
Ich aktiviere den Brown-Out Detektor nur bei Betrieb an Netzteilen.

von Jacko (Gast)


Lesenswert?

MÖGLICH ist alles, was nicht unmöglich ist...

Haben wir ein FEHLERFREIES Programm, kann es software-mäßig
kein Aufhängen geben.

Kleine Abschweifung:
Allerdings gibt es schon Gerichtsurteile, die den Käuferwunsch nach
FEHLERFREIER Software, oder auch nur den gratis-Nachbesserungswunsch
des Kunden als Käufer-Traumtänzerei verworfen haben...

Kaufst du dir dann mal ein selbstfahrendes Kraftfahrzeug - und die
Software wird wegen böser Mängel ein paar Monate später verboten,
hast du also auch kein Nachbesserungsrecht. Und die Hardware-Nach-
rüstung (Pedale und Lenkrad) wird ein Verkehrsminister der bekannten
Art auch von Produzenten gewollt fehlerhafter Software fernhalten...
 Kommt uns das bekannt vor?

Hardwaremäßig kann es schon Effekte durch schlechte EMV geben,
die (wie schon in anderen Antworten) den Programmzähler in
ungewollte Bereiche (Daten...) führen, wo sich nach Murphy's Law
haufenweise Endlosschleifen finden lassen.

Woher weißt du, das der Programm-Code FEHLERFREI ist?
Und wenn ja:
Suchst du eine Fehlerursache, oder eine Entschuldigung?

Im ersten Fall lässt sich durch EMV-Optimierung noch das eine,
oder andere erreichen.

von Stefan F. (Gast)


Lesenswert?

Jacko schrieb:
> Kaufst du dir dann mal ein selbstfahrendes Kraftfahrzeug
> ... kein Nachbesserungsrecht.

Ein interessanter Aspekt, damit hast du mich zum Nachdenken angeregt.

Beitrag #5617573 wurde von einem Moderator gelöscht.
von Aufgemerkt (Gast)


Lesenswert?

Andi schrieb:
> Natürlich ist das technisch möglich, du brauchst halt einen Faden oder
> ein Stück Schnur. Macht sich sicher gut als nerdigen Weihnachtsschmuck.

Nein,
der TO hat ausdrücklich betont: "sich aufhängen".
Das was du beschreibst ist "aufgehängt werden".

Der µC müsste also so etwas wie KI, eigene Energie und eigene 
mechanische Fähigkeiten für den Aufhängeprozess aufweisen, um sich 
selbst aufzuhängen.

Hieran wird natürlich bereits intensiv geforscht und ich bin mir sicher, 
dass innerhalb der nächsten 2 Jahrzehnte sichselbstaufhänge µC's 
verfügbar sind.

Beitrag #5617617 wurde von einem Moderator gelöscht.
Beitrag #5617654 wurde von einem Moderator gelöscht.
Beitrag #5617656 wurde von einem Moderator gelöscht.
Beitrag #5617703 wurde von einem Moderator gelöscht.
Beitrag #5617708 wurde von einem Moderator gelöscht.
Beitrag #5617720 wurde von einem Moderator gelöscht.
Beitrag #5617743 wurde von einem Moderator gelöscht.
Beitrag #5617744 wurde von einem Moderator gelöscht.
von Rudolph R. (rudolph)


Lesenswert?

Aufgemerkt schrieb:
> Hieran wird natürlich bereits intensiv geforscht und ich bin mir sicher,
> dass innerhalb der nächsten 2 Jahrzehnte sichselbstaufhänge µC's
> verfügbar sind.

Die Elektor hat vor 20+ Jahren mal in einer Ausgabe der xxx Schaltungen 
einen JFS Pin beschrieben.

Beitrag #5617762 wurde von einem Moderator gelöscht.
Beitrag #5617765 wurde von einem Moderator gelöscht.
Beitrag #5617767 wurde von einem Moderator gelöscht.
Beitrag #5617769 wurde von einem Moderator gelöscht.
Beitrag #5617778 wurde von einem Moderator gelöscht.
von Karl B. (gustav)


Lesenswert?

Martin schrieb:
> Aus gegebenem Anlass: Können sich Mikrocontroller aufhängen?

Ja,
für den Fall, dass Interrupts sich gegenseitig ins Gehege kommen.
Gerade bei Interrupts, die auf äußere Ereignisse reagieren, wie INTO,
die gerade dann kommen, wenn der UART mit Interrupt dazwischenfunkt.
Und noch ein, zwei Timer-Interrupts.usw.

ciao
gustav

Beitrag #5617786 wurde von einem Moderator gelöscht.
Beitrag #5617791 wurde von einem Moderator gelöscht.
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Peter D. schrieb:
> Die ersten AVRs hatten da äußerst schwerwiegende Fehler bei Power-On.

Das musste ich auch gerade bei einem STM8S103 erfahren (Bicolor 
Filmleuchte). Steigt VCC zu langsam, kommt er über ein paar Anfangzeilen 
anscheinend nicht hinaus. Eine LED am MC blinkte zwar, aber sonst tat 
sich nichts.
Bei längerem Reset nach dem Starten oder Antippen von RST im Betrieb 
ging die Leuchte dann reproduzierbar in Betrieb.

Beitrag #5617812 wurde von einem Moderator gelöscht.
Beitrag #5617818 wurde von einem Moderator gelöscht.
Beitrag #5617823 wurde von einem Moderator gelöscht.
Beitrag #5617824 wurde von einem Moderator gelöscht.
von Berufsrevolutionär (Gast)


Lesenswert?

Martin schrieb:
> Damit ist nicht der Fehlerfall gemeint, wenn eine schlechte Software
> aufgespielt ist

Auch gute Software kann in einen Deadlock laufen, nur ist sie eben gut 
darin diesen deadlock wieder aufzulösen bspw. durch WDT-IRQ.
Oder als externe HW-Lösung inkl Brownout-detection die den prozessor 
wieder auf Anfang setzt.

https://de.wikipedia.org/wiki/Deadlock_(Informatik)

Beitrag #5617847 wurde von einem Moderator gelöscht.
Beitrag #5617850 wurde von einem Moderator gelöscht.
Beitrag #5617856 wurde von einem Moderator gelöscht.
Beitrag #5617859 wurde von einem Moderator gelöscht.
Beitrag #5617863 wurde von einem Moderator gelöscht.
Beitrag #5617864 wurde von einem Moderator gelöscht.
Beitrag #5617869 wurde von einem Moderator gelöscht.
Beitrag #5617876 wurde von einem Moderator gelöscht.
Beitrag #5617878 wurde von einem Moderator gelöscht.
Beitrag #5617879 wurde von einem Moderator gelöscht.
Beitrag #5617886 wurde von einem Moderator gelöscht.
Beitrag #5617887 wurde von einem Moderator gelöscht.
Beitrag #5617888 wurde von einem Moderator gelöscht.
Beitrag #5617894 wurde von einem Moderator gelöscht.
Beitrag #5617900 wurde von einem Moderator gelöscht.
Beitrag #5617905 wurde von einem Moderator gelöscht.
Beitrag #5617909 wurde von einem Moderator gelöscht.
Beitrag #5617914 wurde von einem Moderator gelöscht.
Beitrag #5617920 wurde von einem Moderator gelöscht.
Beitrag #5617946 wurde von einem Moderator gelöscht.
Beitrag #5617964 wurde von einem Moderator gelöscht.
von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
SRAM wird direkt nach dem Start so von zufälligen Inhalten gelöscht:
Aber (!)
Den Watchdog hatten wir noch vergessen.
Wird versucht, diesen innerhalb des Programms nochmals zu verändern, 
geht das meistens nicht.

Bei mir klappt's nämlich nicht, was im Tutorial steht:

https://www.mikrocontroller.net/articles/AVR-Tutorial:_Watchdog#WDT_durch_Software_aktivieren.2Fdeaktivieren

ciao
gustav

Beitrag #5617997 wurde von einem Moderator gelöscht.
Beitrag #5618018 wurde von einem Moderator gelöscht.
Beitrag #5618028 wurde von einem Moderator gelöscht.
Beitrag #5618086 wurde von einem Moderator gelöscht.
Beitrag #5618108 wurde von einem Moderator gelöscht.
Beitrag #5618124 wurde von einem Moderator gelöscht.
Beitrag #5618133 wurde von einem Moderator gelöscht.
Beitrag #5618153 wurde von einem Moderator gelöscht.
Beitrag #5618166 wurde von einem Moderator gelöscht.
Beitrag #5618174 wurde von einem Moderator gelöscht.
Beitrag #5618175 wurde von einem Moderator gelöscht.
Beitrag #5618185 wurde von einem Moderator gelöscht.
Beitrag #5618193 wurde von einem Moderator gelöscht.
Beitrag #5618201 wurde von einem Moderator gelöscht.
Beitrag #5618218 wurde von einem Moderator gelöscht.
Beitrag #5618227 wurde von einem Moderator gelöscht.
Beitrag #5618230 wurde von einem Moderator gelöscht.
Beitrag #5618242 wurde von einem Moderator gelöscht.
Beitrag #5618290 wurde von einem Moderator gelöscht.
Beitrag #5618556 wurde von einem Moderator gelöscht.
Beitrag #5618714 wurde von einem Moderator gelöscht.
von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

Hallo Aufgemerkt.

Aufgemerkt schrieb:

> Hieran wird natürlich bereits intensiv geforscht und ich bin mir sicher,
> dass innerhalb der nächsten 2 Jahrzehnte sichselbstaufhänge µC's
> verfügbar sind.

Wenn die KI besser wird, wird sie menschenähnlicher und bekommt 
menschenähnliche Fehler. Also warum sollte eine hinreichend 
fortschrittliche KI nicht auch Depressionen bekommen?

Vermutlich würde sie dann aber trozdem eher durchbrennen, als sich 
aufzuhängen.

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.dl0dg.de

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

Hallo Martin.

Martin schrieb:

> Aus gegebenem Anlass: Können sich Mikrocontroller aufhängen?
> Damit ist nicht der Fehlerfall gemeint, wenn eine schlechte Software
> aufgespielt ist und der Code in einer Dauerschleife ausgeführt wird.

D.h. aus Hardware Gründen. Und da gibt es eine Menge Möglichkeiten:

In EDN gab es 2016 einen Artikel dazu: "Latch-Up durch Power Cycle".

Siehe: https://www.edn.com/Pdf/ViewPdf?contentItemId=4441325

Als Gegenmaßnahme wird in der AN4563 von NXP allerdings auch ein 
Microcontroller empfohlen. Siehe: 
https://www.nxp.com/docs/en/application-note/AN4563.pdf

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.dl0dg.de

von sega (Gast)


Lesenswert?

Aufgemerkt schrieb:
> Hieran wird natürlich bereits intensiv geforscht und ich bin mir sicher,
> dass innerhalb der nächsten 2 Jahrzehnte sichselbstaufhänge µC's
> verfügbar sind.

Noch etwas länger dürfte die Implementation des Absturzes dauern, der 
sich nur unmittelbar nach dem Aufhängen ereignen sollte. Ein 
Selbstheilungsfeature sozusagen.

von r. (Gast)


Lesenswert?

Christian S. schrieb:
> " Sonstige unbekannte Gründe:-)"
>
> Siehe UFO.
>
> Mfg

Soll SUG heißen...

von Aufgemerkt (Gast)


Lesenswert?

Bernd W. schrieb:
> Wenn die KI besser wird, wird sie menschenähnlicher und bekommt
> menschenähnliche Fehler. Also warum sollte eine hinreichend
> fortschrittliche KI nicht auch Depressionen bekommen?
>
> Vermutlich würde sie dann aber trozdem eher durchbrennen, als sich
> aufzuhängen.

Guter Aspekt.
Darum diskutieren wir hier so eifrig!

sega schrieb:
> Noch etwas länger dürfte die Implementation des Absturzes dauern, der
> sich nur unmittelbar nach dem Aufhängen ereignen sollte. Ein
> Selbstheilungsfeature sozusagen.

Und dann wird der Knackpunkt sein, wie man diese Rekursion stoppt!
Also die Technik in den nächsten Jahrhunderten bleibt spannend.

von fop (Gast)


Lesenswert?

Andreas B. schrieb:
> Erzähl mal. Das interessiert mich wirklich. Beim 6502 gab es da einige
> sehr interessante undokumentierte Befehle.

Ich lass dann mal erzählen. War in diesem Vortrag :
https://media.ccc.de/v/27c3-4159-en-reverse_engineering_mos_6502

Wenn nicht, gibt es Emulatoren in Java auf Webseiten, wo man alle 
internen Pegel sehen kann.

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