Was bedeutet der Begriff „eingebettet“ in Software?

9

Daher habe ich versucht, mein Wissen in der eingebetteten und untergeordneten Hardwareprogrammierung zu erweitern. Jedes Mal, wenn ich nach Jobs suche, in denen "eingebettet" erwähnt wird, handelt es sich jedoch immer um hochrangige Inhalte. Für mich macht das nicht viel Sinn.

Was genau bedeutet "eingebettet"? Wenn ich an Embedded denke, denke ich an untergeordnete Mikrocontroller-Programmierung und so weiter. Wenn Embedded nicht der richtige Titel dafür ist, wonach sollte ich dann suchen?

durron597
quelle

Antworten:

4

Definieren Sie, was Sie unter höherstufigen Dingen verstehen. Das Schreiben von Treibern und jeder anderen Art von Software, die mit Hardware kommuniziert, ist wahrscheinlich das, woran die meisten Leute denken, wenn Sie eingebettete Software erwähnen. Während das ein Teil davon ist, ist das nur ein kleiner Teil. Sobald Sie alle Einstellungen vorgenommen haben, müssen Sie immer noch die gesamte Anwendung schreiben, die wahrscheinlich nie direkt mit der Hardware kommuniziert. In den meisten Fällen ist dies der größte Teil des Entwicklungsaufwands. Dies kann auf einer bestimmten Ebene mit einer Programmierung auf "höherer" Ebene vergleichbar sein. In der eingebetteten Welt arbeiten Sie jedoch wahrscheinlich unter einigen Einschränkungen, insbesondere in Bezug auf Rechenleistung und Speicher. Hier ist eine Liste von Dingen, über die ich täglich nachdenke und die in den meisten Fällen für die Entwicklung auf höherer Ebene wahrscheinlich weniger wichtig sind.

  • Thread-Parallelität (sowohl Schutz als auch Timing)
  • Speicherzuweisung sowie Freigabe und Verwendung
  • Heap-Management (Vermeidung von Fragmentierung)
  • Einhaltung von Echtzeitfristen
  • Thread-Priorisierung
  • I / 0-Leistung
  • DMA-Übertragungen
  • Stapelgrößen
  • Bibliotheksleistung
  • Sprachfunktionen (Ausnahmen blähen Ihren Code auf)

Außerdem sind eingebettete Plattformen in der Regel hochspezialisiert, um ein bestimmtes Ziel zu erreichen, im Gegensatz zu einem PC, der als Plattform für das allgemeine Heterogenitäts-Computing konzipiert ist. Dies bedeutet, dass Sie wahrscheinlich viel benutzerdefinierten Code haben, der möglicherweise portabel ist oder nicht.

Pemdas
quelle
7

Aus Wikipedia / Embedded System :

Ein eingebettetes System ist ein Computersystem, das entwickelt wurde, um eine oder mehrere dedizierte Funktionen auszuführen, häufig mit Echtzeit-Rechenbeschränkungen.

Kurz gesagt, der Begriff kann für jede Art von System gelten, bei dem es sich nicht um einen Allzweck-PC handelt. Dies kann von einfachen Mikrocontrollern über Netzwerkhardware bis hin zu modernen Spielekonsolen reichen.

Wenn Sie unter "High-Level-Material" "eine High-Level-Programmiersprache verwenden" oder sogar "ein großes objektorientiertes Projekt" verstehen, ist es natürlich immer möglich, dass Sie auf einem eingebetteten System Software auf sehr hohem Niveau haben .

Wenn Sie angeben, dass sich Ihre Software auf einem "eingebetteten" System befindet, bedeutet dies im Allgemeinen, dass Ihre Software in irgendeiner Weise an das eingebettete System gekoppelt wird - und möglicherweise nicht sehr portabel ist.

Es ist in der Tat ein sehr weit gefasster Begriff. Einige Dinge, von denen ich nicht erwarten würde, dass sie als "eingebettet" bezeichnet werden, sind PC-Software, Webanwendungen und Serversoftware im Allgemeinen. Es gibt jedoch keine Garantie dafür, dass eingebettete Software jegliche Art von Programmierung oder Design auf hoher Ebene ausschließt.

ProdigySim
quelle
Darüber hinaus möchte ich darauf hinweisen, dass der Zweck der Angabe, dass Ihre Software eingebettet ist, darin besteht, anzuzeigen, dass Ihnen weniger Bibliotheken und vorhandene Lösungen zur Verfügung stehen, aus denen Sie Ihre Lösung erstellen können.
ProdigySim
+1. Häufige Beispiele für eingebettete Systeme sind Computer an POS- oder Geldautomaten. Auch wenn sie Standard-Betriebssysteme wie Windows oder Linux ausführen.
Nikie
1

Ich vermute, Sie suchen nach Jobs, bei denen "eingebettet" "Computer in einer Box" bedeutet, im Allgemeinen einer, der eine bestimmte Aufgabe erledigt. Es ist sehr wahrscheinlich, dass die meisten Linux-Distributionen oder Microsoft-Betriebssysteme ausgeführt werden, aber es ist ziemlich vollständig und Sie können Standard-GUI-IDEs usw. verwenden. Der eingebettete Teil kommt wirklich, wenn das Gerät als Mehrkanal-Videorecorder, Medien-Streaming-Gerät oder Einbruchalarm ausgeliefert wird.

Heutzutage können Sie viel in einem 1-W-Gerät verarbeiten, sodass die Definition von Embedded entsprechend gewachsen ist. Aber noch vor 20 Jahren hatten wir batteriebetriebene Embedded-Geräte mit ziemlich normalem DOS und erstellten Programme für sie unter Verwendung der IDE des Tages (Symbol-Barcode-Scanner hatten beispielsweise Bibliotheken für C und Pascal, also verwendeten wir Turbo Pascal unter Win3.1 die ausführbaren Dateien erstellen). Wir haben aber auch "Industrie-PCs" ausgeliefert, auf denen DOS und dann unsere Software gestartet wurden, und die Eingabe war auf einige große wasserdichte Tasten beschränkt, die auf einer Edelstahlbox montiert waren. Das 15-Zoll-LCD hinter Glas in dieser Box bedeutete, dass wir viele Ausgabeoptionen hatten, aber das Anbringen einer Tastatur bedeutete das Öffnen der Box (in einer Lebensmittelfabrik). Diese können aus bestimmten Perspektiven als eingebettet betrachtet werden. Meistens hatte der Benutzer nur wenige Optionen zur Fehlerbehebung - aus- und wieder einschalten oder nicht.


quelle