Betriebssysteme Der Windows Embedded Compact 7 Bootloader
In unserem Beitrag beschreiben wir verschiedene Boot-Möglichkeiten, um WinEC7 zu laden und zu initialisieren. Außerdem stellen wir Ihnen verschiedene Tools vor, mit denen ein Bootloader entwickelt, getestet und debugged werden kann. Die verwendete Testhardware ist ein X86-Entwicklungssystem mit einer Intel-CPU.
Anbieter zum Thema
Der Bootloader ist ein kleines zusätzliches Programm, dass die Target-Hardware initialisiert und das Betriebssystem „Windows Embedded Compact 7“ in den Speicher lädt. Der Ladevorgang wird mit einem Sprung auf die Betriebssystem-Start-Routine abgeschlossen.
Der Bootloader ist einzigartig für jede Hardware-Plattform. Es gibt auch Geräte, die ohne einen Bootloader auskommen. Dabei befindet sich das Betriebssystem auf dem Flash und wird nach einem PowerOnReset ohne zu laden gestartet.
Aus Geschwindigkeitsgründen wird das WinEC7 vom Flash in den RAM geladen und dann gestartet. Mit dem Platform Builder 2008 lässt sich der Bootloader entwickeln. Während der Entwicklungsphase kann das WinEC7-Image über die verschiedenen Kabelverbindungen wie Ethernet, Universal Serial Bus (USB) oder seriellen Bus geladen und getestet werden. Der Bootloader kann das Betriebssystem auch von den verschiedenen lokalen Speichermedien wie Compact Flash oder Festplatte ins RAM laden.
Normalerweise wird der Bootloader aus dem Board Support Package (BSP) heraus verwendet, um Entwicklungszeit zu sparen. Die BSPs werden von den OEMs der verschiedenen CPU-Hersteller zur Verfügung gestellt. Der Bootloader sollte Debug oder Fehlermeldung ausgegeben können. Fehlermeldungen werden typischerweise über eine serielle Schnittstelle mit einer Übertragungsrate von 38400 Baud, ohne Parität, mit acht Datenbits und einem Stoppbit ausgegeben. Anzumerken ist, dass bei der Bootloader-Entwicklung die Support-Bibliotheken von Microsoft genutzt werden sollten.
Für x86-basierende Geräte befindet sich das Erste-Programm im BIOS und initialisiert die Hardware des Systems. Danach sucht das BIOS nach bootfähigen Speicher und lädt das Programm auf dieser Partition. Das x86-BIOS enthält somit den Bootloader.
Wo sich der Boot Loader im Programmspeicher befindet
Der physikalische Speicher RAM/ROM/Flash wird durch die MMU (Memory Management Unit) in den Adressbereich des Betriebssystems "gemapped" und liegt oberhalb der virtuellen Adresse 0x80000000. Diese Adressenzuteilungen werden mit der boot.bib Datei definiert und festgelegt. Somit liegt der Boot-Loader in einem reservierten Adressbereich und kann dann alle anderen Programmteile (nk.bin) laden.
Im Bild 3 ist zu erkennen, das WinEC7 insgesamt 32.000 Anwendungen mit einer virtuellen Größe von je 2 GByte unterstützt. Die Aufteilung des Speichers wird in der config.bib definiert und befindet sich im Verzeichnis "C:\WINCE700\platform\CEPC\files".
Aufgaben und Anpassen eines Bootloaders
Speicherzuordnungen: Die erste Aufgabe bei der Anpassung bezieht sich auf die Definition der Speicherzuordnungen für den Bootloader. Die Standard-BSPs in WinEC7 definieren die Speicherkonfiguration in einer ."bib-Datei" im Boot-Loader-Verzeichnis, C:\WINCE700\Platform\CEPC\Src\Boot loader\Eboot\boot.bib.
StartUp-Einsprungspunkt: Der StartUp-Einsprungspunkt des Bootloaders muss sich im linearen Speicher an der Adresse befinden, an der die CPU beginnt (PowerOnReset), um Programmcode auszuführen, damit die Hardware initialisiert werden kann. Erfolgt die Anpassung auf einem Referenz-BSP für den gleichen Prozessor, muss der meiste Programcode für die CPU und den Speichercontroller nicht geändert werden.
Die StartUp-Routine ruft die Main-Funktion des Bootloaders auf. Basiert der Bootloader auf BLCOMMON wird die Funktion BootLoaderMain aufgerufen, um den Downloadtransport zu initialisieren, indem die OEM-Plattformfunktionen aufgerufen werden.
Artikelfiles und Artikellinks
(ID:24233120)