it-swarm.com.de

So erstellen Sie eine QEMU ARM Maschine mit benutzerdefinierten Peripheriegeräten und Speicherkarten?

Ich schreibe einen Code für die Cortex-M3-CPU und führe Unit-Tests mit qemu-arm binary durch. Im Moment funktioniert alles einwandfrei. Aber ich frage mich, ob ich das ganze System mit qemu-system-arm testen kann? Ich meine, ich möchte eine benutzerdefinierte "Maschine" für qemu schreiben, in der ich die gewünschte Speicherzuordnung und eventuell eine Software-Nachahmung der gewünschten Peripheriegeräte definiere. Gibt es einige Beispiele für ein solches Modul? Ich habe nur sehr wenige Informationen darüber gefunden. Ich habe einen Quellcode im Verzeichnis hw des QEMU-Quellbaums gelesen, aber fast alle sind unkommentiert. Ich bin mir immer noch nicht sicher, ob ich weiß, wie ich der QEMU eine neue Maschine hinzufügen und wie Peripheriegeräte an den Adressraum anhängen sollen.

17
mucka

Um Ihre eigene Maschine hinzuzufügen, müssen Sie mindestens eine Quelldatei erstellen, die die Parameter und Peripheriegeräte Ihrer Maschine enthält. Fügen Sie danach einen Eintrag in Makefile.objs unter qemu/hw/arm/hinzu. STM32 P103 Maschineneingang .

Nehmen wir als Beispiel das Olimex STM32 P103 Development Board: Olimex STM32 P103 Development Board-Code . In den Zeilen 105 und 106 haben wir flash_size und ram_size. In den Zeilen 114 und 115 fügt der Code eine LED-Verbindung zu GPIO A Pin 0 hinzu. In Zeile 130 haben wir die Maschinenbeschreibung "Olimex STM32 p103 Dev Board". In Zeile 131 die Maschineninitialfunktion: stm32_p103_init. Ein weiteres Beispiel für eine vollständigere Maschine: Pebble-Maschinencode

Bei Peripheriegeräten werden sie in jedem Familiencode instanziiert, wobei der Fall stm32 berücksichtigt wird. stm32f1 family: stm32f1xx.c , stm32f2 family: stm32f2xx.c, stm32f4 family: stm32f4xx.c. Das Peripheriegerät selbst ist in einem Treiber implementiert, der normalerweise einen suggestiven Namen hat: stm32f2xx_adc.c, stm32f2xx_crc.c und so weiter. Beispiel eines Patches zum Hinzufügen neuer Peripheriegeräte: Hinzufügen von ADC zu STM32 .

20
ViniCoder

Sie können Jumper Virtual Lab für die Simulation verwenden, check-out dieses Blog post von ARM mBed.

0