Eingebettetes System
Ein Eingebettetes System ist ein Computersystem- Eine Kombination von a Computerprozessor, Computerspeicher, und Input-Output periphere Geräte - die eine dedizierte Funktion innerhalb eines größeren mechanischen oder elektronisch System.[1][2] es ist eingebettet Als Teil eines vollständigen Geräts häufig einschließlich elektrischer oder elektronischer Hardware und mechanischer Teile. Da ein eingebettetes System typischerweise physikalische Operationen der Maschine steuert, die es eingebettet ist, hat es häufig Echtzeit-Computing Einschränkungen. Eingebettete Systeme steuern heute viele Geräte, die heute gemeinsam verwendet werden.[3] In 2009[aktualisieren]Es wurde geschätzt, dass achtundneunzig Prozent aller hergestellten Mikroprozessoren in eingebetteten Systemen verwendet wurden.[4][Benötigt Update]
Moderne eingebettete Systeme basieren häufig auf Mikrocontroller (d. H. Mikroprozessoren mit integriertem Speicher und peripheren Schnittstellen), aber gewöhnliche Mikroprozessoren (unter Verwendung externer Chips für Speicher- und periphere Grenzflächenschaltungen) sind ebenfalls häufig, insbesondere in komplexeren Systemen. In beiden Fällen können die verwendeten Prozessor (en) Typen von allgemeinem Zweck bis zu denjenigen sein, die auf eine bestimmte Klasse von Berechnungen spezialisiert sind, oder sogar für die anstehende Anwendung. Eine gemeinsame Standardklasse dedizierter Prozessoren ist die digitaler Signalprozessor (DSP).
Da das eingebettete System bestimmten Aufgaben gewidmet ist, ist Konstrukteure kann es optimieren, um die Größe und die Kosten des Produkts zu reduzieren und seine Zuverlässigkeit und Leistung zu erhöhen. Einige eingebettete Systeme werden in Massenproduktion profitieren, die von profitieren Skaleneffekte.
Eingebettete Systeme reichen von tragbaren persönlichen Geräten wie z. Digitale Uhren und Mp3-Player zu größeren Maschinen wie Haushaltsgeräte, industriell Montagelinien, Roboter, Transportfahrzeuge, Ampelcontroller, und medizinische Bildgebung Systeme. Oft bilden sie Subsysteme anderer Maschinen wie Avionik in Flugzeug und Astrionik in Raumfahrzeug. Große Installationen wie Fabriken, Pipelines und elektrische Gitter Verlassen Sie sich auf mehrere eingebettete Systeme, die miteinander vernetzt sind. Verallgemeinert durch Softwareanpassung, eingebettete Systeme wie z. Programmierbare Logikkontroller Häufig umfassen ihre funktionalen Einheiten.
Eingebettete Systeme reichen von der geringen Komplexität mit einem einzelnen Mikrocontroller -Chip bis hin zu mehreren Einheiten, bei mehreren Einheiten. Peripheriegeräte und Netzwerke, die sich in wohnen können Ausrüstungsständer oder über große geografische Gebiete, die über Fernkommunikationslinien in Verbindung stehen.
Geschichte
Hintergrund
Die Ursprünge des Mikroprozessors und des Mikrocontrollers können auf die zurückgeführt werden MOS -integrierte Schaltung, was ist ein Integrierter Schaltkreis Chip erfunden aus Mosfets (Metal-Oxid-Sämiewerk Feldeffekttransistoren) und wurde Anfang der 1960er Jahre entwickelt. Bis 1964 hatten MOS -Chips höher erreicht Transistordichte und niedrigere Produktionskosten als bipolar Chips. MOS -Chips erhöhten die Komplexität mit einer Rate, die von vorhergesagt wurde Moores Gesetz, führen zu Große Integration (LSI) mit Hunderten von Transistoren auf einem einzigen MOS -Chip Ende der 1960er Jahre. Die Anwendung von MOS -LSI -Chips auf Computer war die Grundlage für die ersten Mikroprozessoren, als die Ingenieure anfingen, dies vollständig zu erkennen Computerprozessor Das System könnte auf mehreren MOS -LSI -Chips enthalten sein.[5]
Die ersten Multi-Chip-Mikroprozessoren, die Vier-Phasen-Systeme Al1 im Jahr 1969 und die Garrett AiResearch MP944 1970 wurden mit mehreren MOS -LSI -Chips entwickelt. Der erste Single-Chip-Mikroprozessor war der Intel 4004, veröffentlicht 1971. Es wurde von entwickelt von Federico Fagginmit seinem Silizium-Gate MOS -Technologie zusammen mit Intel Ingenieure Marcian Hoff und Stan Mazor, und Bussicom Techniker Masatoshi Shima.[6]
Entwicklung
Eines der ersten erkennbar modernen eingebetteten Systeme war die Apollo Guidance Computer, entwickelt ca. 1965 von Charles Stark Draper Bei der MIT Instrumentation Laboratory. Zu Beginn des Projekts wurde der Apollo Guidance -Computer als das riskanteste Element im Apollo -Projekt angesehen Monolithische integrierte Schaltkreise Um die Größe und das Gewicht des Computers zu reduzieren.
Ein frühes eingebettetes System mit Massenproduktion war das Autonetik D-17 Guidance Computer für die Minuteman -Rakete1961 veröffentlicht. Als der Minuteman II 1966 in die Produktion ging, wurde der D-17 durch einen neuen Computer ersetzt, der die erste hochvolumige Verwendung integrierter Schaltungen darstellte.
Seit diesen frühen Anwendungen in den 1960er Jahren sind eingebettete Systeme im Preis gesunken, und es gab einen dramatischen Anstieg der Verarbeitungsleistung und -funktionalität. Ein früher Mikroprozessor, der Intel 4004 (veröffentlicht 1971), wurde für für Taschenrechner und andere kleine Systeme, aber dennoch benötigten externe Speicher und Support Chips. In den frühen 1980er Jahren wurden Speicher-, Eingangs- und Ausgangssystemkomponenten in denselben Chip integriert wie der Prozessor, der einen Mikrocontroller bildete. Mikrocontroller finden Anwendungen, bei denen ein allgemeiner Computer zu kostspielig wäre. Als die Kosten für Mikroprozessoren und Mikrocontroller sinken, nahm die Prävalenz eingebetteter Systeme zu.
Heutzutage kann ein vergleichsweise kostengünstiger Mikrocontroller so programmiert werden, dass dieselbe Rolle wie eine große Anzahl separater Komponenten erfüllt. Bei Mikrocontrollern wurde es machbar, selbst in Konsumgütern teurer Knopfbasis zu ersetzen, basierend auf Knopfbasis, die Analog Komponenten wie Potentiometer und variable Kondensatoren mit Auf-/Abnutzungstasten oder Knöpfen, die von einem Mikroprozessor vorgelesen werden. Obwohl in diesem Zusammenhang ein eingebettetes System normalerweise komplexer ist als eine herkömmliche Lösung, ist der größte Teil der Komplexität im Mikrocontroller selbst enthalten. Möglicherweise sind nur sehr wenige zusätzliche Komponenten erforderlich, und der größte Teil der Designanstrengungen befindet sich in der Software. Der Softwareprototyp und der Test können im Vergleich zum Design und der Konstruktion eines neuen Stromkreises, der keinen eingebetteten Prozessor verwendet, schneller sein.
Anwendungen
Eingebettete Systeme sind häufig im Verbraucher vorhanden, industriell, Automobil, Haushaltsgeräte, Medizinische, Telekommunikation, Handels-, Luft- und Raumfahrt- und militärische Anwendungen.
Telekommunikation Systeme verwenden zahlreiche eingebettete Systeme von Telefonschalter für das Netzwerk zu Handys Bei der Endbenutzer. Computernetzwerk verwendet engagiert Router und Netzwerkbrücken Daten weiterzuleiten.
Unterhaltungselektronik enthalten Mp3-Player, Fernseher, Mobiltelefone, Videospielkonsolen, Digitalkameras, Geographisches Positionierungs System Empfänger und Drucker. Haushaltsgeräte wie z. Mikrowellen, Waschmaschinen und Geschirrspülerenthalten eingebettete Systeme, um Flexibilität, Effizienz und Merkmale zu bieten. Fortschrittlich Heizungs-, Lüftungs-und Klimaanlagen (HLK) -Systeme verwenden vernetzte Vernetzung Thermostate genauer und effizienter Kontrolltemperatur, die sich nach Tageszeit ändern kann und Jahreszeit. Heimautomatisierung Verwendet Kabel- und drahtlose Networking, mit denen Leuchten, Klima, Sicherheit, Audio/Visuelle, Überwachung usw. gesteuert werden können. Alle verwenden eingebettete Geräte zum Erkennen und Steuern.
Transportsysteme vom Flug bis zu Autos verwenden zunehmend eingebettete Systeme. Neue Flugzeuge enthalten Fortgeschrittene Avionik wie zum Beispiel Trägheitssysteme und Geographisches Positionierungs System Empfänger, die auch erhebliche Sicherheitsanforderungen haben. Raumfahrzeug sich verlassen auf Astrionik Systeme zur Korrektur der Flugbahn. Verschiedene Elektromotoren - bürstenlose DC -Motoren, Induktionsmotoren und DC -Motoren - Elektronisch verwenden Motorkontroller. Automobile, elektrische Fahrzeuge, und Hybridfahrzeuge Verwenden Sie zunehmend eingebettete Systeme, um die Effizienz zu maximieren und die Verschmutzung zu verringern. Andere Automobilsicherheitssysteme verwenden eingebettete Systeme Antiblockiersystem (ABS), elektronische Stabilitätskontrolle (ESC/ESP), Traktionskontrolle (TCS) und automatisch Allradantrieb.
Medizinische Ausrüstung verwendet eingebettete Systeme für Überwachungund verschiedene medizinische Bildgebung (Positronen-Emissions-Tomographie (HAUSTIER), Ein-Photonen-Emissions-Computertomographie (SPECT), Computertomographie (Ct) und Magnetresonanztomographie (MRT) für nicht-invasive interne Inspektionen. Eingebettete Systeme innerhalb medizinischer Geräte werden häufig von Industriecomputern angetrieben.[8]
Eingebettete Systeme werden für verwendet Sicherheitskritische Systeme in der Luft- und Raumfahrt- und Verteidigungsindustrie. Sofern nicht mit kabelgebundenen oder drahtlosen Netzwerken über On-Chip-3G-Zell- oder andere Methoden für IoT-Überwachungs- und Kontrollzwecke verbunden ist, können diese Systeme durch Hacking isoliert werden und somit sicherer sind. Für die Brandsicherheit können die Systeme so konzipiert werden, dass sie eine größere Fähigkeit haben, höhere Temperaturen zu bewältigen und weiter zu arbeiten. Im Umgang mit Sicherheit können die eingebetteten Systeme autark sein und in der Lage sein, mit elektrischen und Kommunikationssystemen zu schneiden.
Miniatur -drahtlose Geräte genannt Motes sind vernetzte drahtlose Sensoren. Drahtloses Sensornetzwerk Verwendet die Miniaturisierung durch Fortgeschrittene Integrierter Schaltkreis (IC) Entwerfen Sie die vollständigen drahtlosen Subsysteme für hoch entwickelte Sensoren, sodass Menschen und Unternehmen eine Vielzahl von Dingen in der physischen Welt messen und diese Informationen durch Überwachung und Kontrollsysteme bewirken können. Diese Motes sind vollständig in sich geschlossen und werden in der Regel jahrelang von einer Batteriequelle abgelaufen, bevor die Batterien geändert oder aufgeladen werden müssen.
Eigenschaften
Eingebettete Systeme sind so konzipiert, dass sie eine spezifische Aufgabe erledigen, anstatt ein allgemeiner Computer für mehrere Aufgaben zu sein. Einige haben auch Echtzeit Leistungsbeschränkungen, die aus Gründen wie Sicherheit und Benutzerfreundlichkeit erfüllt werden müssen; Andere haben möglicherweise niedrige oder gar keine Leistungsanforderungen, sodass die Systemhardware vereinfacht werden kann, um die Kosten zu senken.
Eingebettete Systeme sind nicht immer eigenständige Geräte. Viele eingebettete Systeme bestehen aus kleinen Teilen in einem größeren Gerät, das einen allgemeineren Zweck erfüllt. Zum Beispiel die Gibson Robotergitarre Es gibt ein eingebettetes System zum Stimmen der Saiten, aber der Gesamtzweck der Robotergitarre besteht natürlich darin, Musik zu spielen.[9] In ähnlicher Weise ein eingebettetes System in einem Automobil Bietet eine bestimmte Funktion als Subsystem des Autos selbst.
Die Programmanweisungen für eingebettete Systeme werden als bezeichnet als Firmware, und werden in schreibgeschützter Speicher gespeichert oder Flash-Speicher Chips. Sie werden mit begrenzten Computerhardware-Ressourcen ausgeführt: wenig Speicher, kleine oder nicht existierende Tastatur oder Bildschirm.
Benutzeroberflächen
Eingebettete Systeme reichen von Keine Benutzeroberfläche überhaupt in Systemen, die nur einer Aufgabe gewidmet sind, um komplex zu sein Grafische Benutzeroberflächen Das ähnelt dem modernen Computer -Desktop -Betriebssystem. Einfache eingebettete Geräte verwenden Tasten, Leuchtdioden (LED), Grafik oder Zeichen Flüssigkristallanzeigen (LCD) mit einem einfachen Menüsystem. Komplexere Geräte, die einen grafischen Bildschirm verwenden, mit Berührungsempfindung oder Bildschirmkante weiche Tasten Bieten Sie Flexibilität, während Sie den verwendeten Platz minimieren: Die Bedeutung der Schaltflächen kann sich mit dem Bildschirm ändern, und die Auswahl beinhaltet das natürliche Verhalten, auf das zu zeigen, was gewünscht wird.
Einige Systeme bieten die Benutzeroberfläche mit Hilfe eines Serials aus der Ferne (z. RS-232) oder Netzwerk (z. Ethernet) Verbindung. Dieser Ansatz erweitert die Fähigkeiten des eingebetteten Systems, vermeidet die Kosten einer Anzeige, vereinfacht die Board -Support -Paket (BSP) und ermöglicht es Desigern, eine reichhaltige Benutzeroberfläche auf dem PC zu erstellen. Ein gutes Beispiel hierfür ist die Kombination von a Eingebetteter HTTP -Server Laufen auf einem eingebetteten Gerät (wie ein IP Kamera oder ein Netzwerkrouter). Die Benutzeroberfläche wird in a angezeigt Webbrowser auf einem PC, das mit dem Gerät verbunden ist.
Prozessoren in eingebetteten Systemen
Beispiele für Eigenschaften typischer eingebetteter Computer im Vergleich zu allgemeinen Gegenstücken sind geringer Stromverbrauch, geringe Größe, robuste Betriebsbereiche und niedrige Kosten pro Einheit. Dies erfolgt zum Preis begrenzter Verarbeitungsressourcen.
Zahlreiche Mikrocontroller wurden für eingebettete Systeme entwickelt. Allgemeine Mikroprozessoren werden auch in eingebetteten Systemen verwendet, erfordern jedoch im Allgemeinen mehr Stützschaltungen als Mikrocontroller.
Vorgefertigte Computerbretter
PC/104 und PC/104+ sind Beispiele für Standards für vorgefertigte Computerplatten für kleine, eingebettete und robuste Systeme mit niedrigem Volumen. Diese sind meist x86-basierend und oft physikalisch klein im Vergleich zu einem Standard-PC, obwohl sie im Vergleich zu den meisten einfachen (8/16-Bit) eingebetteten Systemen immer noch recht groß sind. Sie können verwenden DOS, Linux, Netbsd, oder ein eingebettet Echtzeit-Betriebssystem (RTOs) wie z. Microc/os-ii, Qnx oder VxWorks.
In bestimmten Anwendungen, bei denen geringe Größe oder Leistungseffizienz keine primären Bedenken sind, können die verwendeten Komponenten mit denen kompatibel sein, die in Allgemeinen X86-PCs verwendet werden. Bretter wie die via Epia Die Reichweite hilft, die Lücke zu schließen, indem sie PC-kompatibel, aber hoch integriert, physisch kleiner sind oder andere Attribute haben, die sie für eingebettete Ingenieure attraktiv machen. Der Vorteil dieses Ansatzes besteht darin, dass kostengünstige Rohstoffkomponenten zusammen mit den gleichen Softwareentwicklungs-Tools verwendet werden, die für die allgemeine Softwareentwicklung verwendet werden. Auf diese Weise gebaute Systeme werden weiterhin als eingebettet angesehen, da sie in größere Geräte integriert sind und eine einzige Rolle erfüllen. Beispiele für Geräte, die diesen Ansatz anwenden können, sind Geldautomaten (Atm) und Arcade -Maschinen, die Code enthalten, die für die Anwendung spezifisch sind.
Die meisten vorgefertigten eingebetteten Systemplatten sind jedoch nicht PC-zentriert und verwenden die nicht IST EIN oder PCI Busse. Wenn ein System-on-a-Chip Der Prozessor ist involviert, es gibt möglicherweise einen geringen Nutzen für einen standardisierten Bus, der diskrete Komponenten verbindet, und die Umgebung für Hardware- und Softwaretools kann sehr unterschiedlich sein.
Ein gemeinsamer Designstil verwendet ein kleines Systemmodul, möglicherweise die Größe einer Visitenkarte, die eine hohe Dichte hält BGA Chips wie ein ARM-basierend System-on-a-Chip Prozessor und Peripheriegeräte, extern Flash-Speicher zur Lagerung und Dram Für Laufzeitspeicher. Der Modulanbieter stellt normalerweise Boot -Software bereit und stellt sicher Linux und einige Echtzeitentscheidungen. Diese Module können in hohem Volumen von Organisationen hergestellt werden, die mit ihren speziellen Testproblemen vertraut sind, und kombiniert mit viel niedrigeren Volumen-benutzerdefinierten Mainboards mit anwendungsspezifischen externen Peripheriegeräten. Zu den wichtigsten Beispielen für diesen Ansatz gehören Arduino und Raspberry Pi.
ASIC- und FPGA SOC -Lösungen
A System auf einem Chip (SOC) enthält ein vollständiges System - bestehend aus mehreren Prozessoren, Multiplikatoren, Caches, sogar verschiedenen Arten von Speicher und üblicherweise verschiedenen Peripheriegeräten wie Schnittstellen für kabelgebundene oder drahtlose Kommunikation auf einem einzelnen Chip. Oft sind Grafikverarbeitungseinheiten (GPU) und DSPs mit solchen Chips enthalten. SOCs können als implementiert werden Anwendungsspezifische integrierte Schaltung (ASIC) oder verwenden a Feldprogrammierbares Gate-Array (FPGA), das normalerweise neu konfiguriert werden kann.
ASIC-Implementierungen sind üblich für eingebettete Systeme mit sehr hohen Bänden wie Mobiltelefone und Smartphones. ASIC- oder FPGA-Implementierungen können für nicht so hohe bändige eingebettete Systeme mit besonderen Bedürfnissen in Bezug auf Signalverarbeitungsleistung, Schnittstellen und Zuverlässigkeit wie in Avionik verwendet werden.
Peripheriegeräte
Eingebettete Systeme sprechen mit der Außenwelt über die Welt Peripheriegeräte, wie zum Beispiel:
- Serienkommunikationsschnittstellen (SCI): RS-232, RS-422, RS-485, etc.
- Synchrone serielle Schnittstelle: I2c, Spi, SSC und ESSI (Enhanced Synchronous Serial Grenzface)
- Universeller Serienbus (USB)
- Medienkarten (SD -Karten, Compactflash, etc.)
- Netzwerkschnittstellencontroller: Ethernet, W-lan, etc.
- Feldbusse: Kann Bus, Lin-Bus, Profibus, etc.
- Timer: Phasenschleifen, Programmierbare Intervall -Timer
- Allzweckeingang/Ausgabe (GPIO)
- Analog zu Digital und Digital-analog-Konverter
- Debugging: Jtag, In-System-Programmierung, Hintergrund -Debug -Modus -Schnittstelle Port-, Bitp- und DB9 -Ports.
Werkzeug
Wie bei anderen Software verwenden eingebettete Systemdesigner Compiler, Assembler, und Debugger Entwicklung eingebetteter Systemsoftware. Sie können jedoch auch spezifischere Tools verwenden:
- In Schaltungsdebuggern oder Emulatoren (siehe Nächster Abschnitt).
- Dienstprogramme zum Hinzufügen einer Prüfsumme oder CRC In einem Programm kann das eingebettete System prüfen, ob das Programm gültig ist.
- Für Systeme digitale Signalverarbeitung, Entwickler können a verwenden Rechennotizbuch die Mathematik simulieren.
- Modellierung und Simulationstools auf Systemebene helfen Designern, Simulationsmodelle eines Systems mit Hardwarekomponenten wie zu konstruieren, z. B. Prozessoren, Erinnerungen, DMA, Schnittstellen, Busse und Softwareverhalten als Zustandsdiagramm oder Durchflussdiagramm unter Verwendung konfigurierbarer Bibliotheksblöcke. Die Simulation wird durchgeführt, um die richtigen Komponenten durch Durchführung von Leistungsverhältnissen im Vergleich zu Leistungsabfällen, Zuverlässigkeitsanalyse und Engpassanalyse auszuwählen. Typische Berichte, die einem Designer helfen, Architekturentscheidungen zu treffen, umfassen Anwendungslatenz, Gerätedurchsatz, Geräteauslastung, Stromverbrauch des vollständigen Systems sowie Stromverbrauch auf Geräteebene.
- Ein modellbasiertes Entwicklungswerkzeug erstellt und simuliert grafische Datenfluss- und UML-Statusdiagramme von Komponenten wie digitalen Filtern, Motorcontrollern, Kommunikationsprotokoll-Decodierung und Multi-Rate-Aufgaben.
- Benutzerdefinierte Compiler und Linker können verwendet werden, um spezielle Hardware zu optimieren.
- Ein eingebettetes System kann ein eigenes spezielles Sprache oder ein eigenes Design -Tool haben oder Verbesserungen zu einer vorhandenen Sprache wie z. Weiter oder Basic.
- Eine andere Alternative besteht darin, einen RTOS hinzuzufügen oder eingebettetes Betriebssystem
- Modellierung und Codegenerierung Werkzeug oft basierend auf Staatsmaschinen
Softwaretools können aus mehreren Quellen stammen:
- Softwareunternehmen, die sich auf den eingebetteten Markt spezialisiert haben
- Portiert von der GNU Tools für Softwareentwicklung
- Manchmal können Entwicklungswerkzeuge für einen PC verwendet werden, wenn der eingebettete Prozessor relativ zu einem gemeinsamen PC -Prozessor ist
Wenn die Komplexität eingebetteter Systeme wächst, wandern höhere Werkzeuge und Betriebssysteme in Maschinen, wo dies sinnvoll ist. Zum Beispiel, Handys, persönliche digitale Assistenten und andere Verbrauchercomputer benötigen häufig eine erhebliche Software, die von einer anderen Person als dem Hersteller der Elektronik gekauft oder bereitgestellt wird. In diesen Systemen eine offene Programmierumgebung wie z. Linux, Netbsd, Osgi oder Eingebettete Java ist erforderlich, damit der Softwareanbieter von Drittanbietern an einen großen Markt verkaufen kann.
Debuggen
Eingebettet Debuggen kann je nach den verfügbaren Einrichtungen auf verschiedenen Ebenen durchgeführt werden. Zu den Überlegungen gehören: Verlangsamt die Hauptanwendung, wie nahe das Debugged -System oder die Anwendung auf das tatsächliche System oder die tatsächliche Anwendung ist, wie ausdrucksstark die Auslöser sind, die für das Debuggen festgelegt werden können (z. B. die Überprüfung des Speichers, wenn eine bestimmte Programm zähler Wert ist erreicht) und was im Debugging -Prozess inspiziert werden kann (wie nur Speicher oder Speicher und Register usw.).
Von der einfachsten bis zum anspruchsvollsten Debugging -Techniken und -systeme werden in den folgenden Bereichen grob geltend gemacht:
- Interaktive Resident Debugging unter Verwendung der einfachen Hülle, die vom eingebetteten Betriebssystem bereitgestellt wird (z. B. Forth und Basic)
- Nur-Software-Debugger haben den Vorteil, dass sie keine Hardware-Änderung benötigen, sondern sorgfältig steuern müssen, was sie aufzeichnen, um Zeit und Speicherplatz zu sparen.[10]
- Externes Debuggen mit Protokollierung oder serieller Portausgabe, um den Betrieb entweder mit einem Monitor in Flash oder einem Debug -Server wie dem zu verfolgen Abhilfe -Debugger Das funktioniert sogar für Heterogene Multicore Systeme.
- Ein In-Circuit-Debugger (ICD), ein Hardware-Gerät, das über a eine Verbindung zum Mikroprozessor herstellt Jtag oder Nexus Schnittstelle.[11] Auf diese Weise kann der Betrieb des Mikroprozessors extern kontrolliert werden, ist jedoch typischerweise auf spezifische Debugging -Funktionen im Prozessor beschränkt.
- Ein In-Circuit-Emulator (ICE) ersetzt den Mikroprozessor durch ein simuliertes Äquivalent und liefert die volle Kontrolle über alle Aspekte des Mikroprozessors.
- Vollständig Emulator Bietet eine Simulation aller Aspekte der Hardware, sodass alles gesteuert und geändert werden kann und das Debuggen auf einem normalen PC ermöglicht. Die Nachteile sind Ausgaben und langsamer Betrieb, in einigen Fällen bis zu 100 -mal langsamer als das endgültige System.
- Für SOC -Designs besteht der typische Ansatz darin, das Design auf einem FPGA -Prototyp -Board zu überprüfen und zu debuggen. Tools wie Certus[12] werden verwendet, um Sonden in die FPGA -Implementierung einzufügen, die Signale zur Beobachtung zur Verfügung stellen. Dies wird verwendet, um Hardware-, Firmware- und Software -Interaktionen in mehreren FPGAs in einer Implementierung mit Funktionen eines Logikanalysators zu debuggen.
Sofern nicht auf externes Debuggen beschränkt, kann der Programmierer in der Regel Software durch die Tools laden und ausführen, den im Prozessor ausgeführten Code anzeigen und seinen Betrieb starten oder stoppen. Die Ansicht des Code kann als als Programmiersprache auf hoher Ebene, Montagecode oder Mischung aus beiden.
Verfolgung
Echtzeit-Betriebssysteme unterstützen häufig Verfolgung von Betriebssystemereignissen. Eine grafische Ansicht wird von einem Host -PC -Tool dargestellt, das auf einer Aufzeichnung des Systemverhaltens basiert. Die Trace -Aufzeichnung kann in Software, von den RTOs oder durch Spezialverfolgungshardware durchgeführt werden. Mit der RTOS-Verfolgung können Entwickler Timing- und Leistungsprobleme des Softwaresystems verstehen und das Verhalten auf hoher Ebene ein gutes Verhalten von Systemen vermitteln.
Verlässlichkeit
Eingebettete Systeme befinden sich häufig in Maschinen, von denen erwartet wird, dass sie jahrelang ohne Fehler kontinuierlich laufen, und erholen sich in einigen Fällen, wenn ein Fehler auftritt. Daher wird die Software normalerweise genauer entwickelt und getestet als die für PCs, und unzuverlässige mechanische bewegliche Teile wie Festplatten, Schalter oder Schaltflächen werden vermieden.
Spezifische Zuverlässigkeitsprobleme können:
- Das System kann nicht sicher zur Reparatur geschlossen werden oder es ist zu unzugänglich zu reparieren. Beispiele sind Weltraumsysteme, Unterwasserkabel, Navigationslaken, Bohrlochsysteme und Automobile.
- Das System muss aus Sicherheitsgründen fortgesetzt werden. Reduzierte Funktionalität im Falle eines Fehlers kann unerträglich sein. Oft werden Backups von einem Bediener ausgewählt. Beispiele sind Flugzeugnavigation, Reaktorkontrollsysteme, sicherheitskritische chemische Werkskontrollen, Zugsignale.
- Das System verliert beim Herunterfahren große Geldbeträge: Telefonschalter, Werksteuerelemente, Brücken- und Aufzugskontrollen, Mittelübertragung und Marktherstellung, automatisierte Verkäufe und Service.
Es werden eine Vielzahl von Techniken verwendet, manchmal in Kombination, um sich von Fehlern wiederherzustellen - sowohl Softwarefehler wie z. Speicherlecks, und auch weiche Fehler in der Hardware:
- Watchdog -Timer Dadurch wird das System zurückgesetzt und startet
- Entwerfen mit a Vertrauenswürdige Computerbasis (TCB) Architektur sorgt für eine sehr sichere und zuverlässige Systemumgebung[13]
- A Hypervisor Für eingebettete Systeme konzipiert ist in der Lage, eine sichere Einkapselung für jede Subsystemkomponente bereitzustellen, sodass eine kompromittierte Softwarekomponente andere Subsysteme oder Systemsoftware auf Privilegienebene nicht beeinträchtigen kann.[14] Diese Einkapselung verhindert, dass sich Fehler von einem Subsystem zum anderen ausbreiten, wodurch die Zuverlässigkeit verbessert wird. Dies kann auch ermöglichen, dass ein Subsystem automatisch heruntergefahren und bei der Fehlererkennung neu gestartet wird.
- Immunitätsbewusstes Programmieren Kann Ingenieuren helfen, einen zuverlässigeren eingebetteten Systemcode zu erzeugen.[15][16] Richtlinien und Codierungsregeln wie z. Misra C/C ++ Ziel, Entwicklern zu helfen, zuverlässige, tragbare Firmware auf verschiedene Arten zu produzieren: in der Regel durch Beratung oder Mandation von Codierungspraktiken, die zu Laufzeitfehlern (Speicherlecks, ungültig (Reichweite/Vernunftprüfungen, Validitätsprüfungen für Divide-by-Null- und Pufferindex, Standardfälle in Logikprüfungen), Schleifenbegrenzung, Produktion von menschlichem Lesbar, gut kommentiertem und gut strukturiertem Code und Vermeidung von Sprachmeisterschaften, die zu Compiler führen können. induzierte Inkonsistenzen oder Nebenwirkungen (Expressionsbewertungsreihenfolge, Rekursion, bestimmte Arten von Makros). Diese Regeln können häufig in Verbindung mit Code verwendet werden Statische Prüfer oder begrenzt Modellprüfung zu funktionellen Überprüfungszwecken und auch bei der Bestimmung des Code Timingeigenschaften.[15]
Hohe gegen niedriges Volumen
Für Systeme mit hohem Volumen wie z. Tragbare Musikspieler oder MobiltelefoneDie Minimierung der Kosten ist normalerweise die primäre Konstruktionsbeachtung. Ingenieure wählen in der Regel Hardware aus, die nur „gut genug“ ist, um die erforderlichen Funktionen zu implementieren.
Bei eingebetteten Systemen mit niedrigem Volumen oder Prototypen können allgemeine Computer angepasst werden, indem die Programme begrenzt oder das Betriebssystem durch RTOs ersetzt werden.
Eingebettete Softwarearchitekturen
1978 National Electrical Manufacturers Association Veröffentlicht einen Standard für programmierbare Mikrocontroller, darunter fast alle computergestützten Controller wie Einzelplatine, numerische und ereignisbasierte Controller.
Es gibt heute verschiedene Arten von Softwarearchitekturen in gemeinsamen Verwendung.
Einfache Steuerschleife
In diesem Design hat die Software einfach eine Schleife Dies überwacht das Eingabegerät und führt die entsprechenden Unterroutine nur dann aus, wenn eine neue Aktion auf dem Eingabegerät vorhanden ist. Die Schleife ruft an Unterroutinenjedes davon verwaltet ein Teil der Hardware oder Software. Daher wird es als einfache Steuerschleife oder programmierte Eingabeausgabe bezeichnet.
Interrupt-kontrolliertes System
Einige eingebettete Systeme werden überwiegend gesteuert von Interrupts. Dies bedeutet, dass die vom System ausgeführten Aufgaben durch verschiedene Arten von Ereignissen ausgelöst werden. Ein Interrupt könnte beispielsweise von einem Timer in einer vordefinierten Frequenz oder von einem seriellen Portcontroller erzeugt werden, der ein Byte erhält.
Diese Art von Systemen werden verwendet, wenn Event -Handler eine geringe Latenz benötigen und die Event -Handler kurz und einfach sind. Normalerweise führen diese Systeme auch eine einfache Aufgabe in einer Hauptschleife aus, diese Aufgabe ist jedoch nicht sehr empfindlich gegenüber unerwarteten Verzögerungen.
Manchmal fügt der Interrupt -Handler einer Warteschlangenstruktur längere Aufgaben hinzu. Später, nachdem der Interrupt -Handler fertiggestellt wurde, werden diese Aufgaben von der Hauptschleife ausgeführt. Diese Methode bringt das System nahe einem Multitasking -Kernel mit diskreten Prozessen.
Kooperatives Multitasking
A Nicht-preptives Multitasking-System ist dem einfachen Kontrollschleifschema sehr ähnlich, außer dass die Schleife in einem versteckt ist API.[3][1] Der Programmierer definiert eine Reihe von Aufgaben, und jede Aufgabe erhält eine eigene Umgebung zum „Ausführen“. Wenn eine Aufgabe im Leerlauf ist, ruft sie eine Leerlaufroutine auf, die normalerweise als „Pause“, „Warten“, „Rendite“, „NOP“ bezeichnet wird. (steht für keine Operation), etc.
Die Vor- und Nachteile ähneln der der Kontrollschleife, außer dass das Hinzufügen neuer Software einfacher ist, indem einfach eine neue Aufgabe geschrieben oder die Warteschlange hinzugefügt wird.
Präventives Multitasking oder Multi-Threading
In dieser Art von System wechselt ein Code-Stück mit niedrigem Niveau zwischen Aufgaben oder Threads basierend auf einem Timer (an einen Interrupt verbunden). Dies ist die Ebene, auf der das System allgemein als "Betriebssystem" -Kernel angesehen wird. Abhängig davon, wie viel Funktionalität erforderlich ist, wird mehr oder weniger die Komplexität der Behandlung mehrerer Aufgaben eingeführt, die konzeptionell parallel ausgeführt werden.
Da jeder Code möglicherweise die Daten einer anderen Aufgabe schädigen kann (außer in größeren Systemen mit einem MMU) Programme müssen sorgfältig gestaltet und getestet werden, und der Zugriff auf gemeinsam genutzte Daten muss durch eine Synchronisationsstrategie gesteuert werden, wie z. Nachrichtenwarteschlangen, Semaphoren oder ein Nicht blockierende Synchronisation planen.
Aufgrund dieser Komplexität ist es für Unternehmen üblich, ein RTOs zu verwenden, sodass die Anwendungsprogrammierer zumindest für große Systeme eher auf Gerätefunktionen als auf Betriebssystemdienste konzentrieren können. Kleinere Systeme können sich den mit a verbundenen Overhead oft nicht leisten generisch Echtzeitsystem aufgrund von Einschränkungen hinsichtlich Speichergröße, Leistung oder Akkulaufzeit. Die Entscheidung, die ein RTOS erforderlich ist, bringt jedoch eigene Probleme mit sich, da die Auswahl vor dem Start des Anwendungsentwicklungsprozesses getroffen werden muss. Dieses Timing zwingt Entwickler, das eingebettete Betriebssystem für ihr Gerät basierend auf den aktuellen Anforderungen auszuwählen, und beschränken so zukünftige Optionen in hohem Maße.[17] Die Einschränkung zukünftiger Optionen wird mehr zu einem Problem, wenn die Produktlebensdauer abnimmt. Darüber hinaus wächst das Grad der Komplexität kontinuierlich, da Geräte erforderlich sind, um Variablen wie seriell, USB, TCP/IP zu verwalten. Bluetooth, WLAN, Trunk -Radio, mehrere Kanäle, Daten und Sprache, verbesserte Grafiken, mehrere Zustände, mehrere Threads, zahlreiche Wartezustände und so weiter. Diese Trends führen zur Aufnahme von eingebettete Middleware Zusätzlich zu einem RTOs.
Mikrokernel und Exokernel
A Mikrokernel ist ein logischer Schritt von einem Echtzeit-Betriebssystem. Die übliche Anordnung besteht darin, dass das Kernel des Betriebssystems Speicher zuweist und die CPU auf verschiedene Ausführungsfäden umschaltet. User-Mode-Prozesse implementieren wichtige Funktionen wie Dateisysteme, Netzwerkschnittstellen usw.
Im Allgemeinen gelingt Microkernel, wenn Aufgabenwechsel und Intertask -Kommunikation schnell sind und scheitern, wenn sie langsam sind.
Exokernel Kommunizieren Sie effizient durch normale Unterroutine -Anrufe. Die Hardware und die gesamte Software im System sind von Anwendungsprogrammierern verfügbar und erweiterbar.
Monolithische Kerne
In diesem Fall ist ein relativ großer Kernel mit anspruchsvollen Fähigkeiten an eine eingebettete Umgebung angepasst. Dies gibt den Programmierern eine Umgebung, die einem Desktop -Betriebssystem ähnlich ist wie Linux oder Microsoft Windowsund ist daher sehr produktiv für die Entwicklung; Auf der anderen Seite erfordert es erheblich mehr Hardware -Ressourcen, ist oft teurer und kann aufgrund der Komplexität dieser Kerne weniger vorhersehbar und zuverlässig sein.
Häufige Beispiele für eingebettete monolithische Kerne sind eingebettete Linux, VxWorks und Windows CE.
Trotz der erhöhten Kosten in der Hardware nimmt diese Art von eingebettetem System immer beliebter, insbesondere bei leistungsstärkeren eingebetteten Geräten wie z. drahtlose Router und GPS -Navigationssysteme. Hier sind einige der Gründe:
- Ports zu gängigen eingebetteten Chipsets sind verfügbar.
- Sie ermöglichen die Wiederverwendung von öffentlich verfügbarem Code für Gerätetreiber, Webserver, Firewallsund ein anderer Code.
- Entwicklungssysteme können mit breiten Merkmalssätzen beginnen, und dann kann die Verteilung so konfiguriert werden, dass sie nicht benötigte Funktionen ausschließen und die Ausgaben des von ihm konsumierten Speichers speichern.
- Viele Ingenieure glauben, dass das Ausführen von Anwendungscode im Benutzermodus zuverlässiger und einfacher zu debuggen ist, wodurch der Entwicklungsprozess und der Code tragbarer werden.
- Funktionen, die eine schnellere Reaktion erfordern als garantiert werden können Hardware-.
Zusätzliche Softwarekomponenten
Zusätzlich zum Kernbetriebssystem verfügen viele eingebettete Systeme über zusätzliche Softwarekomponenten der oberen Schicht. Diese Komponenten bestehen aus Netzwerkprotokollstapeln wie KANN, TCP/IP, Ftp, Http, und Httpsund enthalten auch Speicherfunktionen wie FETT und Flash -Speicherverwaltungssysteme. Wenn das eingebettete Gerät über Audio- und Videofunktionen verfügt, sind im System die entsprechenden Treiber und Codecs vorhanden. Bei den monolithischen Kerneln sind viele dieser Softwareschichten enthalten. In der RTOS -Kategorie hängt die Verfügbarkeit der zusätzlichen Softwarekomponenten vom kommerziellen Angebot ab.
Domänenspezifische Architekturen
Im Automobilsektor, Autosar ist eine Standardarchitektur für eingebettete Software.
Siehe auch
Anmerkungen
Verweise
- ^ a b Michael Barr. "Glossar eingebetteter Systeme". Neutrino Technische Bibliothek. Abgerufen 2007-04-21.
- ^ Heath, Steve (2003). Design eingebetteter Systeme. EDN -Serie für Designingenieure (2. ed.). Newnes. p.2. ISBN 978-0-7506-5546-0.
Ein eingebettetes System ist a Mikroprozessor Basierte System, das zur Steuerung einer Funktion oder einer Funktionsgruppe erstellt wurde.
- ^ a b Michael Barr; Anthony J. Massa (2006). "Einführung". Programmierung eingebettete Systeme: mit C- und GNU -Entwicklungstools. O'Reilly. S. 1–2. ISBN 978-0-596-00983-0.
- ^ Barr, Michael (1. August 2009). "Real Men -Programm in C". Design eingebetteter Systeme. TechInsights (United Business Media). p. 2. Abgerufen 2009-12-23.
- ^ Shirriff, Ken (30. August 2016). "Die überraschende Geschichte der ersten Mikroprozessoren". IEEE -Spektrum. Institut für Elektro- und Elektronikingenieure. 53 (9): 48–54. doi:10.1109/mspec.2016.7551353. S2CID 32003640. Abgerufen 13. Oktober 2019.
- ^ "1971: Mikroprozessor integriert die CPU -Funktion in einen einzelnen Chip". Der Siliziummotor. Computergeschichte Museum. Abgerufen 22. Juli 2019.
- ^ "Electronic Frontier Foundation". Elektronische Grenzfundament.
- ^ Eingebettete Systeme Dell OEM -Lösungen | Dell. Content.dell.com (2011-01-04). Abgerufen am 2013-02-06.
- ^ David Carey (2008-04-22). "Unter der Motorhaube: Robotergitarre bettet Autotuning ein". Design eingebetteter Systeme. Archiviert von das Original am 2008-07-08.
- ^ Tancreti, Matthew; Sundaram, Vinaitherthan; Bagchi, Saurabh; Eugster, Patrick (2015). "TARDIS: Software-Aufzeichnungen auf Systemebene und Wiederholung in drahtlosen Sensornetzwerken". Verfahren der 14. Internationalen Konferenz zur Informationsverarbeitung in Sensornetzwerken. Ipsn '15. New York, NY, USA: ACM: 286–297. doi:10.1145/2737095.2737096. ISBN 9781450334754. S2CID 10120929.
- ^ Tancreti, Matthew; Hossain, Mohammad Sajjad; Bagchi, Saurabh; Raghunathan, Vijay (2011). "Aveksha: Ein Hardware-Software-Ansatz für die nicht störende Verfolgung und Profilierung von drahtlosen eingebetteten Systemen". Verfahren der 9. ACM -Konferenz über eingebettete vernetzte Sensorsysteme. Sensys '11. New York, NY, USA: ACM: 288–301. doi:10.1145/2070942.2070972. ISBN 9781450307185. S2CID 14769602.
- ^ "TeKtronix schüttet Prototyping auf, eingebettete Instrumentierung steigert die Boards zum Emulatorstatus". Elektrotechnik Journal. 2012-10-30. Abgerufen 2012-10-30.
- ^ Heiser, Gernot (Dezember 2007). "Ihr System ist sicher? Beweisen Sie es!" (PDF). ;Anmeldung:. 2 (6): 35–8.
- ^ Moratelli, C; Johann, S; Neves, M; Hessel, F (2016). "Eingebettete Virtualisierung für das Design sicherer IoT -Anwendungen". 2016 Internationales Symposium für Rapid System Prototyping (RSP): 2–6. doi:10.1145/2990299.2990301. ISBN 9781450345354. S2CID 17466572. Abgerufen 2. Februar 2018.
- ^ a b Kurz gesagt, Michael (März 2008). "Entwicklungsrichtlinien für zuverlässige Echtzeit-eingebettete Systeme". 2008 IEEE/ACS International Conference über Computersysteme und Anwendungen: 1032–1039. doi:10.1109/AICCSA.2008.4493674. ISBN 978-1-4244-1967-8. S2CID 14163138.
- ^ Automobilindustrie -Software -Zuverlässigkeitsvereinigung. "Misra C: 2012 dritte Ausgabe, erste Revision". Abgerufen 2022-02-03.
- ^ "Arbeiten auf mehreren eingebetteten Plattformen" (PDF). Klarinox. Abgerufen 2010-08-17.
Weitere Lektüre
- John Catsoulis (Mai 2005). Entwerfen eingebetteter Hardware, 2. Auflage. O'Reilly. ISBN 0-596-00755-8.
- James M. Conrad; Alexander G. Dean (September 2011). Embedded Systems, eine Einführung mit dem Renesas RX62N -Mikrocontroller. Mikroium. ISBN 978-1935-7729-96.
- Klaus Elk (August 2016). Eingebettete Softwareentwicklung für das Internet der Dinge, die Grundlagen, die Technologien und Best Practices. ISBN 978-1534602533.
Externe Links
- Eingebetteter Systemkurs mit MBED YouTube, laufend ab 2015
- Trends in der Cybersicherheit und eingebetteter Systeme Dan Geer, November 2013
- Moderne eingebettete Systeme Programmiervideo Kurs YouTube, laufend ab 2013
- Woche eingebettete Systeme (Esweek) Jährliche Veranstaltung mit Konferenzen, Workshops und Tutorials, die alle Aspekte von eingebetteten Systemen und Software abdecken
- Workshop zur Einbildung eingebetteter und cyber-physischer Systeme, Workshop, die Bildungsaspekte von eingebetteten Systemen abdecken