Heim häufiges Problem Mehrere praktische Routinen und Techniken für die eingebettete Entwicklung

Mehrere praktische Routinen und Techniken für die eingebettete Entwicklung

Jul 31, 2023 pm 03:04 PM
嵌入式 嵌入式开发

Es gibt viele Techniken zur Entwicklung hochzuverlässiger eingebetteter Systeme, von gut regulierten Entwicklungszyklen bis hin zu strengen Ausführungs- und Systemprüfungen.

Wir stellen Ihnen 7 Tipps vor, die einfach zu bedienen sind und über einen langen Zeitraum angewendet werden können. Sie sind sehr hilfreich, um sicherzustellen, dass das System zuverlässiger läuft und ungewöhnliche Verhaltensweisen erkannt werden.
Tipp 1 - Verwenden Sie bekannte, mit Werten gefüllte ROMs. Softwareentwickler sind in der Regel sehr optimistisch und möchten einfach nur, dass ihr Code lange Zeit zuverlässig läuft, und das war's. Es scheint ziemlich selten vorzukommen, dass ein Mikrocontroller aus dem Anwendungsbereich springt und in einem unbeabsichtigten Codebereich ausgeführt wird. Die Wahrscheinlichkeit, dass dies geschieht, ist jedoch nicht geringer als die eines Pufferüberlaufs oder eines fehlerhaften Zeigers, der seine Referenz verliert. Es passiert! Das Systemverhalten ist danach undefiniert, da der Speicherbereich standardmäßig alle 0xFF ist oder weil der Speicherbereich normalerweise nicht beschrieben wird und der darin enthaltene Wert möglicherweise nur Gott bekannt ist.
Allerdings gibt es recht umfassende Linker- oder IDE-Kenntnisse, mit denen man solche Ereignisse identifizieren und das System nach ihnen wiederherstellen kann. Der Trick besteht darin, den FILL-Befehl zu verwenden, um das nicht verwendete ROM mit einem bekannten Bitmuster zu füllen. Um ungenutzten Speicher zu füllen, gibt es viele verschiedene mögliche Kombinationen. Wenn Sie jedoch ein zuverlässigeres System aufbauen möchten, ist die naheliegendste Wahl die Platzierung von ISR-Fehlerhandlern an diesen Stellen. Wenn mit dem System etwas schief geht und der Prozessor beginnt, Code außerhalb des Programmraums auszuführen, wird der ISR ausgelöst und bietet die Möglichkeit, Prozessor-, Register- und Systemstatus zu speichern, bevor über Korrekturmaßnahmen entschieden wird. Tipp 2 – Überprüfen Sie den CRC Ihrer Anwendung ), um anhand dieser Prüfsumme zu überprüfen, ob die Anwendung intakt ist. Interessanterweise wird die Prüfsumme in vielen dieser Fälle erst beim Laden des Programmcodes auf das Gerät verwendet.
Wenn jedoch der CRC oder die Prüfsumme im Speicher aufbewahrt wird, ist es äußerst wichtig, beim Start (oder bei Systemen mit langer Laufzeit sogar regelmäßig) zu überprüfen, ob das Unerwartete nicht passiert Weg.
Heutzutage ist die Wahrscheinlichkeit, dass sich eine programmierte Anwendung ändert, sehr gering, aber angesichts der Milliarden von Mikrocontrollern, die jedes Jahr ausgeliefert werden, und der möglicherweise rauen Arbeitsumgebung ist die Wahrscheinlichkeit, dass die Anwendung abstürzt, nicht gleich Null. Wahrscheinlicher ist, dass ein Fehler im System zu einem Flash-Schreib- oder Flash-Löschvorgang in einem Sektor führt und dadurch die Integrität der Anwendung beeinträchtigt.
Tipp 3 – Führen Sie beim Start einen RAM-Check durch
Um ein zuverlässigeres und solideres System aufzubauen, ist es wichtig sicherzustellen, dass die Systemhardware ordnungsgemäß funktioniert . Schließlich kann Hardware ausfallen. (Zum Glück versagt Software nie, sie macht einfach das, was der Code ihr sagt, egal, ob das richtig oder falsch ist.) Um sicherzustellen, dass die Hardware wie erwartet funktioniert, stellen Sie sicher, dass beim Booten keine internen oder externen Probleme mit dem RAM vorliegen.
Es gibt viele verschiedene Möglichkeiten, eine RAM-Prüfung durchzuführen, aber eine gängige Methode besteht darin, nach einem bekannten Muster zu schreiben und dann eine kurze Zeit zu warten, bevor man es zurückliest. Das Ergebnis sollte sein, dass das Gelesene auch das Geschriebene ist. Die Wahrheit ist, dass die RAM-Prüfung in den meisten Fällen erfolgreich ist, was wir wollen. Es besteht jedoch eine sehr geringe Wahrscheinlichkeit, dass die Prüfung nicht bestanden wird, was eine hervorragende Gelegenheit für das System darstellt, ein Hardwareproblem zu melden.
Tipp 4 – Verwenden Sie einen Stack-Monitor
Für viele Embedded-Entwickler scheint der Stack eine eher mysteriöse Kraft zu sein. Als seltsame Dinge passierten, waren die Ingenieure schließlich ratlos und begannen zu denken, dass vielleicht etwas im Stapel los sei. Das Ergebnis ist eine blinde Anpassung der Größe und Position des Stapels usw. Aber der Fehler ist oft stapelunabhängig, aber wie kann man so sicher sein? Denn wie viele Ingenieure haben tatsächlich eine Worst-Case-Stackgrößenanalyse durchgeführt?
Die Stapelgröße wird zur Kompilierungszeit statisch zugewiesen, der Stapel wird jedoch dynamisch verwendet. Während der Code ausgeführt wird, werden Variablen, Rücksprungadressen und andere von der Anwendung benötigte Informationen kontinuierlich auf dem Stapel gespeichert. Dieser Mechanismus bewirkt, dass der Stapel innerhalb seines zugewiesenen Speichers kontinuierlich wächst. Dieses Wachstum übersteigt jedoch manchmal die zur Kompilierungszeit festgelegte Kapazitätsgrenze, was dazu führt, dass der Stapel Daten in benachbarten Speicherbereichen beschädigt.
Eine Möglichkeit, absolut sicher zu sein, dass Ihr Stack ordnungsgemäß funktioniert, besteht darin, einen Stack-Monitor als Teil des „Gesundheits“-Codes Ihres Systems zu implementieren (wie viele Ingenieure machen das?). Der Stack-Monitor erstellt einen Pufferbereich zwischen dem Stack und dem „anderen“ Speicherbereich, gefüllt mit bekannten Bitmustern. Der Monitor überwacht dann kontinuierlich das Muster auf etwaige Änderungen. Wenn sich dieses Bitmuster ändert, bedeutet das, dass der Stapel zu groß geworden ist und das System in die Hölle stürzen wird! An diesem Punkt kann der Monitor das Auftreten von Ereignissen, den Systemstatus und alle anderen nützlichen Daten aufzeichnen, die später bei der Diagnose von Problemen verwendet werden können.
Ein Stapelmonitor ist in den meisten Echtzeitbetriebssystemen (RTOS) oder Mikrocontrollersystemen verfügbar, die eine Speicherschutzeinheit (MPU) implementieren. Das Erschreckende daran ist, dass diese Funktionen standardmäßig deaktiviert sind oder von Entwicklern oft absichtlich deaktiviert werden. Eine schnelle Suche im Internet zeigt, dass viele Leute empfehlen, den Stack-Monitor im Echtzeitbetriebssystem auszuschalten, um 56 Byte Flash-Speicherplatz zu sparen.Warten Sie, das ist den Gewinn nicht wert! Tipp 5 – Verwendung einer MPU hat begonnen, sich zu verändern. Mikrocontroller vom High-End- bis zum Low-End-Bereich verfügen jetzt über MPUs, und diese MPUs bieten Entwicklern eingebetteter Software die Möglichkeit, die Robustheit ihrer Firmware erheblich zu verbessern.
MPUs wurden nach und nach mit dem Betriebssystem gekoppelt, um Speicherbereiche zu schaffen, in denen die Verarbeitung getrennt ist oder Aufgaben ihren Code ausführen können, ohne befürchten zu müssen, darauf herumgetrampelt zu werden. Sollte dennoch etwas passieren, wird die unkontrollierte Verarbeitung abgebrochen und andere Schutzmaßnahmen ergriffen. Halten Sie Ausschau nach Mikrocontrollern mit dieser Komponente, und wenn ja, nutzen Sie diese Funktion. Tipp 6: Bauen Sie ein leistungsstarkes Watchdog-System auf ), aber auch dort, wo der Watchdog mit einem periodischen Timer gelöscht werden kann; die Aktivierung des Timers ist völlig unabhängig von allem, was im Programm passiert.
Der Zweck der Verwendung von Watchdog besteht darin, sicherzustellen, dass der Watchdog im Fehlerfall nicht gelöscht wird. Das heißt, wenn die Arbeit unterbrochen wird, wird das System gezwungen, einen Hardware-Reset (Hardware-Reset) durchzuführen sich erholen. Durch die Verwendung eines von der Systemaktivität unabhängigen Timers bleibt der Watchdog auch bei einem Systemausfall deaktiviert.
Embedded-Entwickler müssen sorgfältig überlegen und entwerfen, wie Anwendungsaufgaben in das Watchdog-System integriert werden. Eine Technik könnte beispielsweise ermöglichen, dass jede Aufgabe, die über einen bestimmten Zeitraum ausgeführt wird, angibt, dass sie ihre Aufgabe erfolgreich abgeschlossen hat. In diesem Fall wird der Watchdog nicht gelöscht und muss zurückgesetzt werden. Es gibt auch fortgeschrittenere Techniken wie die Verwendung eines externen Watchdog-Prozessors, mit dem die Leistung des Hauptprozessors überwacht werden kann und umgekehrt.
Für ein zuverlässiges System ist es wichtig, ein leistungsstarkes Watchdog-System einzurichten. Da es zu viele Technologien gibt, ist es schwierig, sie in diesen Absätzen vollständig zu behandeln, aber ich werde in Zukunft verwandte Artikel zu diesem Thema veröffentlichen.
Tipp 7 – Vermeiden Sie flüchtige Speicherzuweisungen
Ingenieure, die es nicht gewohnt sind, in einer Umgebung mit begrenzten Ressourcen zu arbeiten, könnten versucht sein, die Funktionen ihrer Programmiersprache auszunutzen , eine Sprache, die es ihnen ermöglicht, die flüchtige Speicherzuweisung zu verwenden. Schließlich handelt es sich hierbei um eine Technik, die häufig in Taschenrechnersystemen verwendet wird, bei denen Speicher nur bei Bedarf zugewiesen wird. Wenn Ingenieure beispielsweise in C entwickeln, neigen sie möglicherweise dazu, malloc zu verwenden, um Speicherplatz auf dem Heap zuzuweisen. Eine Operation wird ausgeführt und nach Abschluss kann free verwendet werden, um den zugewiesenen Speicher zurückzugeben, sodass der Heap verwendet werden kann.
In einem ressourcenbeschränkten System könnte dies eine Katastrophe sein! Eines der Probleme bei der Verwendung der flüchtigen Speicherzuweisung besteht darin, dass Fehler oder falsche Techniken zu Speicherlecks oder Speicherfragmentierung führen können. Wenn diese Probleme auftreten, verfügen die meisten eingebetteten Systeme nicht über die Ressourcen oder das Wissen, um den Heap zu überwachen oder ordnungsgemäß damit umzugehen. Und wenn ja, was passiert, wenn eine Anwendung eine Speicherplatzanfrage stellt, der angeforderte Speicherplatz jedoch nicht verfügbar ist?
Die durch die Verwendung der flüchtigen Speicherzuweisung verursachten Probleme sind sehr kompliziert, und es kann als Albtraum bezeichnet werden, diese Probleme richtig zu lösen! Eine Alternative besteht darin, Speicher einfach direkt und statisch zuzuweisen. Anstatt beispielsweise einen Speicherpuffer dieser Größe über malloc anzufordern, erstellen Sie einfach einen Puffer in Ihrem Programm, der 256 Bytes lang ist.Dieser zugewiesene Speicher bleibt während der gesamten Lebensdauer der Anwendung erhalten, ohne dass Bedenken hinsichtlich Heap- oder Speicherfragmentierungsproblemen bestehen.
Fazit

Dies sind nur einige Möglichkeiten, wie Entwickler mit dem Aufbau zuverlässigerer eingebetteter Systeme beginnen können. Es gibt viele andere Techniken, wie z. B. die Verwendung guter Codierungsstandards, die Erkennung von Bit-Flips, die Durchführung von Array- und Zeigergrenzenprüfungen und die Verwendung von Behauptungen. All diese Technologien sind das Geheimnis, das es Designern ermöglicht, zuverlässigere eingebettete Systeme zu entwickeln

Das obige ist der detaillierte Inhalt vonMehrere praktische Routinen und Techniken für die eingebettete Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welches hat bessere Aussichten, Java oder Embedded? Welches hat bessere Aussichten, Java oder Embedded? Oct 24, 2023 am 09:32 AM

Java und eingebettete Systeme sind beide sehr wichtige technische Richtungen im Computerbereich, und sie haben jeweils unterschiedliche Anwendungsszenarien und Entwicklungsperspektiven. Als nächstes werde ich die Aussichten von Java und eingebetteten Systemen unter den Aspekten Arbeitsmarkt, Technologieentwicklung, Branchenbedarf und Entwicklungstrends analysieren.

Verwendung von C++ zur Realisierung der Fernsteuerungsfunktion eines eingebetteten Systems Verwendung von C++ zur Realisierung der Fernsteuerungsfunktion eines eingebetteten Systems Aug 25, 2023 pm 05:24 PM

Verwendung von C++ zur Realisierung der Fernsteuerungsfunktion eingebetteter Systeme Mit der rasanten Entwicklung des Internets der Dinge werden eingebettete Systeme zu einem unverzichtbaren Bestandteil unseres täglichen Lebens. Für Entwickler eingebetteter Systeme ist die Implementierung von Fernsteuerungsfunktionen ein wichtiges Thema. Mit der Programmiersprache C++ können wir die Fernsteuerungsfunktion des eingebetteten Systems einfach implementieren. In diesem Artikel wird erläutert, wie Sie mit C++ Code zum Implementieren dieser Funktion schreiben und einige Beispielcodes bereitstellen. Zuerst müssen wir einige Hardware-Geräte vorbereiten. Als eingebettetes System

SPARKLE bringt die integrierte Intel Arc-Grafikkarte auf den Markt und bietet Support für bis zu 5 Jahre SPARKLE bringt die integrierte Intel Arc-Grafikkarte auf den Markt und bietet Support für bis zu 5 Jahre Apr 22, 2024 am 11:52 AM

Laut Nachrichten dieser Website vom 22. April kündigte SPARKLE Technology die Einführung von integrierten Intel Arc-Grafikkarten an, darunter PCIe-Versionen der A310E-, A380E- und MXM-Versionen der A350E- und A370E-Grafikkarten, mit einer Verpflichtung zur Unterstützung von Diensten für bis zu 5 Jahre . SPARKLE Intel ArcA380E Grafikkarte IA30GC-TN4E Diese Grafikkarte hat eine TBP (Hinweis auf dieser Seite: TotalBoardPower) von 75 W. Sie verfügt über ein Dual-Slot-Einzellüfter-Design, 6 GBGDDR6-Videospeicher, bietet 1 HDMI- und 3 DisplayPort-Schnittstellen und verfügt über 5 Jahre Supportleistungen. SPARKLE Intel Ruixuan ArcA380E halbhohe Grafikkarte IA30GBL-TN4E diese halbhohe Grafikkarte T

Chai Mis erstes ultradünnes 28-cm-Design! Einführung der integrierten Kehr- und Wischroboter SpaceMaster Master-Serie Chai Mis erstes ultradünnes 28-cm-Design! Einführung der integrierten Kehr- und Wischroboter SpaceMaster Master-Serie Oct 21, 2023 pm 05:17 PM

Dank technologischer Innovationen in der Intelligenz und Reinigungsleistung von Kehrmaschinen haben sich integrierte Kehr- und Wischroboter in den letzten Jahren zunehmend zu einem wichtigen neuen Gerätestandard in der globalen Heimdekoration entwickelt, und ihr Trend, von vorne geladen und in die Heimdekoration integriert zu werden, hat zugenommen offensichtlich. Um den Fortschritt der Branche zu fördern und den Verbrauchern bei der Lösung zentraler Probleme wie Einbettung sowie Wasser- und Stromsanierung zu helfen, hat Zhumi Technology, als weltweit führende Marke für intelligente Reinigungsgeräte, kürzlich eine neue Art der Problemlösung eingeführt und eine innovative Lösung eingeführt Ein neues Produkt mit einer Höhe von nur 28 cm. Ein in die Basisstation integrierter Kehr- und Wischroboter – Space Master Master-Serie (im Folgenden als „Zhunmi Space Master Master-Serie“ bezeichnet). Dieses Produkt vereint fünf wichtige bahnbrechende technische Vorteile von Chumi Modernste eingebettete Designkonzepte, um eine weltweit führende Position zu erreichen. Die Modernisierung und der Sprung der Branche werden dazu beitragen, dass mehr Familien ihre Ziele erreichen

Einschränkungen der Go-Sprache: Nicht für eingebettete Entwicklung geeignet Einschränkungen der Go-Sprache: Nicht für eingebettete Entwicklung geeignet Apr 08, 2024 pm 01:24 PM

Die Go-Sprache ist aus folgenden Gründen nicht für die eingebettete Entwicklung geeignet: Hoher Speicherverbrauch: Der Garbage Collector von Go benötigt zusätzlichen Speicher und ist nicht für eingebettete Geräte mit begrenztem Speicher geeignet. Schlechte Echtzeitleistung: Der Garbage Collector und das Parallelitätsmodell können zu inakzeptablen Verzögerungen führen und sind für zeitkritische eingebettete Systeme nicht geeignet. Große Codegröße: Go generiert größere Binärdateien als andere Sprachen wie C oder C++, was es für eingeschränkte Geräte unpraktisch macht.

Arduino reagiert auf die Auswirkungen des Supportendes für das Embedded-System Mbed: Eine Alternative wurde gefunden und die erste Beta-Version wird noch in diesem Jahr veröffentlicht Arduino reagiert auf die Auswirkungen des Supportendes für das Embedded-System Mbed: Eine Alternative wurde gefunden und die erste Beta-Version wird noch in diesem Jahr veröffentlicht Jul 26, 2024 am 11:32 AM

Laut Nachrichten dieser Website vom 26. Juli gab Arm am 9. Juli bekannt, dass es die Unterstützung für das Open-Source-Embedded-Betriebssystem MbedOS im Juli 2026 einstellen und es zu diesem Zeitpunkt nicht mehr pflegen wird Die Mbed-Website wird archiviert und ist nicht mehr über Online-Tools verfügbar. Diese Nachricht sorgte für breite Diskussionen in der Embedded-Entwickler-Community und betraf Arm-unterstützte Projekte wie micro:bit, Arduino und Raspberry Pi. Das Arduino-Unternehmen veröffentlichte am 24. Juli einen Blogbeitrag, in dem es erklärte, dass es vor einigen Jahren begonnen habe, nach alternativen Lösungen zu suchen. Daher schloss es sich 2023 dem Zephyr-Projekt an, wurde Silbermitglied des Projekts und fand in ZephyrOS eine gute Alternative. Ardu

Aetina bringt die eingebettete Arc A380E-Grafikkarte auf den Markt: Single-Slot, halbhohes Design, 50 W Stromverbrauch Aetina bringt die eingebettete Arc A380E-Grafikkarte auf den Markt: Single-Slot, halbhohes Design, 50 W Stromverbrauch Apr 26, 2024 am 08:04 AM

Laut Nachrichten dieser Website vom 25. April hat Aetina, ein Hersteller von AIoT-Geräten, heute die eingebettete Intel ArcA380E-Grafikkarte mit einem Single-Slot-Design und halber Bauhöhe, Modell IA380E-QUFL, auf den Markt gebracht, die eine fünfjährige Langzeitlaufzeit bietet Verpflichtung zur Produktlieferung. Diese Grafikkarte verwendet den Intel ArcA380E-Kern mit 8 Xe-Kernen und 128 Intel 6GBGDDR6-Videospeicher und eignet sich für Edge-Anwendungen und künstliche Intelligenz. Diese Grafikkarte verfügt über ein Single-Slot-Design mit halber Höhe, verbraucht nur 50 W und kann ohne externe Stromversorgung direkt über den PCIe-Steckplatz mit Strom versorgt werden.

ASUS AAEON bringt den eingebetteten Einplatinencomputer PICO-RAP4 Pico-ITX auf den Markt: zwei Netzwerkanschlüsse, bis zu Core i7-1370PE-Prozessor ASUS AAEON bringt den eingebetteten Einplatinencomputer PICO-RAP4 Pico-ITX auf den Markt: zwei Netzwerkanschlüsse, bis zu Core i7-1370PE-Prozessor Jun 25, 2024 am 11:05 AM

Diese Website berichtete am 25. Juni, dass AAEON, eine Tochtergesellschaft von ASUS, kürzlich PICO-RAP4 auf den Markt gebracht hat, das neueste Mitglied seiner Pico-ITX-Embedded-Einplatinencomputer-Serie, das die Anforderungen moderner Computer wie Roboter und medizinische Bildgebung erfüllen kann Anwendungsvoraussetzungen. Pico-RAP4 verwendet Prozessoren der Intel U300E-Serie und unterstützt bis zu Intel Core i7-1370PE-Prozessoren. Dieser Prozessor verwendet eine Hybrid-CPU-Architektur mit 6 P-Kernen und 8 E-Kernen mit insgesamt 20 Threads. Eine solche Architektur kann anspruchsvolle Aufgaben im Zusammenhang mit der beabsichtigten Verwendung effizient bewältigen und Ihnen ein schnelles und reibungsloses Erlebnis bieten. Unten ist Pico-