Präzisions-Leiterplattenherstellung, Hochfrequenz-Leiterplatten, mehrschichtige Leiterplatten und Leiterplattenbestückung.
Leiterplattentechnisch

Leiterplattentechnisch - Mehrere Tipps für Embedded PCB Motherboards

Leiterplattentechnisch

Leiterplattentechnisch - Mehrere Tipps für Embedded PCB Motherboards

Mehrere Tipps für Embedded PCB Motherboards

2021-11-06
View:455
Author:Will

Formal eingebettet PCB Motherboard Design und Entwicklungsingenieur ist ein schwieriger Prozess, Entwickler müssen jedes Bit und Byte des Systems pflegen und verwalten. Von einem gut geregelten Entwicklungszyklus bis hin zu strengen Implementierungen und Systeminspektionen, Es gibt viele Technologien zur Entwicklung hochzuverlässiger Embedded Systeme. Heute, Ich werde 7-PCB-Techniken vorstellen, die einfach zu bedienen sind und für eine lange Zeit verwendet werden können. Sie sind sehr hilfreich, um sicherzustellen, dass das System zuverlässiger läuft und abnormale Verhaltensweisen auffangen.

Softwareentwickler sind oft eine sehr optimistische Gruppe von Menschen, solange ihr Code für eine lange Zeit treu läuft, nichts mehr. Es scheint ziemlich selten, dass ein Mikrocontroller aus dem Anwendungsraum springt und in einem unerwarteten Coderaum ausgeführt wird. Die Wahrscheinlichkeit, dass dies geschieht, ist jedoch nicht geringer als ein Pufferüberlauf oder ein falscher Zeiger verliert Referenz. Es wird passieren! Das Verhalten des Systems danach ist ungewiss, da der Speicherplatz standardmäßig 0xFF ist oder weil der Speicherbereich normalerweise nicht geschrieben wird, kann der Wert nur Gott bekannt sein.

Aber es gibt ziemlich vollständige Linker- oder IDE-Fähigkeiten, die verwendet werden können, um solche Ereignisse zu identifizieren und das System von ihnen wiederherzustellen. Der Trick besteht darin, den Befehl FILL zu verwenden, um das ungenutzte ROM mit einem bekannten Bitmuster zu füllen. Um ungenutzten Speicher zu füllen, gibt es viele verschiedene Kombinationen, die verwendet werden können, aber wenn Sie ein zuverlässigeres System bauen möchten, ist die offensichtlichste Wahl, ISR-Fehlerhandler an diesen Standorten zu platzieren. Wenn etwas im System schief geht und der Prozessor beginnt, Code außerhalb des Programmraums auszuführen, wird der ISR ausgelöst und bietet die Möglichkeit, den Prozessor, die Register und den Systemzustand zu speichern, bevor man sich über Korrekturmaßnahmen entscheidet.

Leiterplatte

Ein großer Vorteil für Embedded-Ingenieure ist, dass unsere IDE und Werkzeugkette automatisch Anwendungs- oder Speicherplatz-Prüfsumme (Checksum) generieren und somit anhand dieser Prüfsumme überprüfen können, ob die Anwendung intakt ist. Interessanterweise wird in vielen dieser Fälle die Prüfsumme nur verwendet, wenn der Programmcode in das Gerät geladen wird.

Wenn der CRC oder die Prüfsumme jedoch im Speicher aufbewahrt wird, ist die Überprüfung, dass die Anwendung beim Start noch intakt ist (oder sogar periodisch für ein langlaufendes System), eine ausgezeichnete Möglichkeit, sicherzustellen, dass unerwartete Dinge nicht passieren. Heutzutage ist die Wahrscheinlichkeit, dass sich eine programmierte Anwendung ändert, sehr gering, aber angesichts der Milliarden von Mikrocontrollern, die jedes Jahr geliefert werden, und der potenziell rauen Arbeitsumgebung ist die Wahrscheinlichkeit eines Absturzes einer Anwendung medizinischer Instrumente nicht Null. Wahrscheinlicher ist, dass ein Defekt im System Flash-Schreib- oder Flash-Löschen in einem bestimmten Sektor verursachen kann, wodurch die Integrität der Anwendung zerstört wird.

RAM-Prüfung beim Start durchführen

Um ein zuverlässigeres und solideres System zu bauen, ist es sehr wichtig sicherzustellen, dass die Systemhardware normal funktioniert. Schließlich wird die Hardware ausfallen. (Glücklicherweise schlägt die Software nie fehl, die Software wird nur das tun, was der Code will, ob es richtig oder falsch ist). Überprüfen, ob beim Start kein Problem mit dem internen oder externen RAM besteht, ist ein guter Weg, um sicherzustellen, dass die Hardware wie erwartet funktionieren kann.

Es gibt viele verschiedene Methoden zur Durchführung von RAM-Prüfungen, aber die gängige Methode ist, ein bekanntes Muster zu schreiben und dann eine kurze Zeit zu warten, bevor es zurückgelesen wird. Das Ergebnis sollte sein, dass das, was du liest, das ist, was du schreibst. Die Wahrheit ist, dass in den meisten Fällen der RAM-Check bestanden wird, was das Ergebnis ist, das wir wollen. Es besteht jedoch eine sehr kleine Möglichkeit, dass die Prüfung nicht bestanden wird, was eine ausgezeichnete Gelegenheit für das System bietet, ein Hardwareproblem anzuzeigen.

Stack-Monitor verwenden

Für viele Embedded-Entwickler scheint der Stack eine ziemlich mysteriöse Kraft zu sein. Als merkwürdige Dinge begannen, waren die Ingenieure schließlich erstaunt und begannen, darüber nachzudenken, was im Stapel passieren könnte. Das Ergebnis ist, die Größe und Position des Stacks blind anzupassen usw. Aber der Fehler hängt oft nicht mit dem Stack zusammen, aber wie kann er so sicher sein? Denn wie viele Ingenieure haben tatsächlich eine Worst-Case-Stack-Größenanalyse durchgeführt?

Die Stackgröße wird zum Kompilierungszeitpunkt statisch zugewiesen, aber der Stack wird dynamisch verwendet. Während der Ausführung des Codes werden die Variablen, Rücksendeadressen und andere Informationen, die die Anwendung benötigt, kontinuierlich auf dem Stack gespeichert. Dieser Mechanismus bewirkt, dass der Stack kontinuierlich in seinem zugewiesenen Speicher wächst. Allerdings überschreitet dieses Wachstum manchmal die Kapazitätsgrenze, die beim Kompilieren festgelegt wurde, und führt dazu, dass der Stack Daten in benachbarten Speicherbereichen zerstört.

Eine Möglichkeit, absolut sicherzustellen, dass der Stack ordnungsgemäß funktioniert, besteht darin, einen Stack-Monitor als Teil des "Health"-Codes des Systems zu implementieren (wie viele Ingenieure tun das?). Der Stack Monitor erzeugt einen Pufferbereich zwischen dem Stack und dem "anderen" Speicherbereich und füllt ihn mit einem bekannten Bitmuster. Dann überwacht der Monitor kontinuierlich, ob sich das Muster ändert. Wenn sich das Bitmuster ändert, bedeutet das, dass der Stapel zu stark gewachsen ist und das System in die dunkle Hölle gedrängt wird! Zu diesem Zeitpunkt kann der Monitor das Auftreten von Ereignissen, den Systemstatus und andere nützliche Daten für die zukünftige Problemdiagnose aufzeichnen.

Stack-Monitore werden in den meisten Echtzeit-Betriebssystemen (RTOS) oder Mikrocontroller-Systemen bereitgestellt, die eine Memory Protection Unit (MPU) implementieren. Das beängstigende ist, dass diese Funktionen standardmäßig deaktiviert sind oder oft absichtlich von Entwicklern ausgeschaltet werden. Eine schnelle Suche im Internet zeigt, dass viele Leute vorschlagen, den Stack-Monitor im Echtzeitbetriebssystem auszuschalten, um 56-Bytes Flash-Speicherplatz zu sparen usw. Das ist den Gewinn nicht wert!

MPU verwenden

In der Vergangenheit, it was difficult to find a memory protection unit (MPU) in a small and cheap microcontroller, aber diese Situation hat begonnen, sich zu ändern. Mikrocontroller von High-End bis Low-End haben jetzt bereits MPUs, und diese MPUs bieten eingebettete PCB-Software Entwickler mit der Möglichkeit, die Robustheit ihrer Firmware erheblich zu verbessern.

MPU wurde schrittweise mit dem Betriebssystem gekoppelt, um einen Speicherplatz zu schaffen, in dem die Verarbeitung getrennt wird, oder der Task seinen Code ausführen kann, ohne sich Sorgen darüber zu machen, dass er gestampft wird. Wenn etwas passiert, wird die unkontrollierte Verarbeitung abgebrochen und andere Schutzmaßnahmen werden implementiert. Bitte achten Sie auf den Mikrocontroller mit dieser Art von Komponente, wenn vorhanden, nutzen Sie bitte seine Charakteristik stärker.

Bauen Sie ein leistungsfähiges Wachhundsystem

Eine der beliebtesten Watchdog-Implementierungen, die Sie häufig finden werden, ist, wo der Watchdog aktiviert ist (dies ist ein guter Anfang), aber Sie können auch einen periodischen Timer verwenden, um den Watchdog zu löschen. Die Aktivierung des Timers ist vollständig isoliert von jeder Situation, die im Programm auftritt. Der Zweck der Verwendung des Watchdogs besteht darin, sicherzustellen, dass bei Auftreten eines Fehlers der Watchdog nicht gelöscht wird, d.h. wenn die Arbeit angehalten wird, wird das System gezwungen, einen Hardware-Reset zur Wiederherstellung durchzuführen. Durch die Verwendung eines Timers unabhängig von der Systemaktivität kann der Watchdog auch dann gelöscht bleiben, wenn das System ausgefallen ist.

Wie man Anwendungsaufgaben in das Watchdog-System integriert, müssen Entwickler von Embedded PCB-Motherboards sorgfältig prüfen und entwerfen. Beispielsweise gibt es eine Technik, mit der jede Aufgabe, die innerhalb eines bestimmten Zeitraums ausgeführt wird, anzeigt, dass sie ihre Aufgabe erfolgreich abschließen kann. In diesem Fall wird der Watchdog nicht gelöscht und muss zurückgesetzt werden. Es gibt auch einige fortschrittlichere Technologien, wie die Verwendung eines externen Watchdog-Prozessors, mit dem überwacht werden kann, wie sich der Hauptplatinenprozessor verhält, und umgekehrt. Für ein zuverlässiges System ist es sehr wichtig, ein starkes Wachhundsystem aufzubauen.

Vermeidung flüchtiger Speicherzuweisung

Ingenieure, die nicht daran gewöhnt sind, in einer Umgebung mit begrenzten Ressourcen zu arbeiten, können versuchen, die Funktionen ihrer Programmiersprache zu nutzen, die es ihnen ermöglicht, flüchtige PCB-Speicherzuweisung zu verwenden. Immerhin, das ist ein Leiterplattentechnologie häufig in Rechnersystemen eingesetzt. In Rechnersystemen, Speicher wird nur bei Bedarf zugewiesen. Zum Beispiel, bei der Entwicklung in C, Ingenieure neigen möglicherweise dazu, Malloc zu verwenden, um Platz auf dem Haufen zuzuweisen. Es gibt eine Operation, die ausgeführt wird. Einmal abgeschlossen, Sie können frei verwenden, um den zugewiesenen Speicher für die Verwendung des Heaps zurückzugeben.