2008-09-19 4 views

Antwort

13

Vor der Version 6.0 VxWorks nur unterstützte Kernel für Aufgaben Ausführungsumgebung und nicht unterstützte Prozesse, die die traditionelle Anwendung Ausführungsumgebung auf OS wie Unix oder Windows. Aufgaben haben einen Einstiegspunkt, bei dem es sich um die Adresse des Codes handelt, der als Aufgabe ausgeführt werden soll. Diese Adresse entspricht einer C- oder Assembly-Funktion. Es kann ein Symbol namens "main" sein, aber sind C/C++ - Sprachannahmen über die main() - Funktion, die in der Kernelumgebung nicht unterstützt werden (insbesondere die traditionelle Behandlung der Parameter argc und argv). Darüber hinaus führen alle Tasks vor VxWorks 6.0 Kernel-Code aus. Sie können sich den Kernel als gemeinsames Repository von Code vorstellen, das alle miteinander verknüpft ist, und dann sehen Sie , dass Sie nicht mehrere Symbole mit demselben Namen ("main") haben können, da dies Namenskollisionen verursachen würde.

Jetzt ist dies nur korrekt, wenn Sie Ihren Anwendungscode mit dem Kernel-Image verknüpfen. Wenn Sie Ihren Anwendungscode herunterladen möchten, akzeptiert der Modullader das Laden mehrerer Module mit einer Main() Routine. Das letzte "Hauptsymbol", das in der Symboltabelle des Systems registriert ist, ist jedoch das einzige, auf das Sie über die Zielshell zugreifen können. Wenn Sie Aufgaben starten möchten, die den Code eines der ersten geladenen Module ausführen, müssen Sie die Adressen der vorherigen main() Funktion verwenden. Dies ist möglich, aber nicht praktisch. Es ist weit mehr praktisch, verschiedene Namen zu den Einstiegspunkten von Aufgaben (möglicherweise wie "xxxStart", wo "xxx" ist ein Name sinnvoll für was die Aufgabe soll tun).

Beginnend mit VxWorks 6.0 unterstützt das Betriebssystem eine Prozessumgebung. Diese Mittel, unter vielen anderen Dingen, dass Sie eine traditionelle Haupt haben können() Routine und dass seine argc und argv Parameter richtig gehandhabt werden, und dass der Anwendungscode wird in einem Kontext (Benutzerkontext) Ausführung, die anders ist aus dem Kernel-Kontext, so dass die Isolation zwischen Anwendungscode (die flockig sein kann) und Kern Code (der nicht flockig sein soll). PAD

Verwandte Themen