Wie erstelle ich einen QEMU ARM-Computer mit benutzerdefinierten Peripheriegeräten und Speicherkarten?

8

Ich schreibe einen Code für die Cortex-M3-CPU und führe Unit-Tests mit qemu-arm binary durch. Jetzt funktioniert alles gut. Aber ich frage mich, ob ich das ganze System mit qemu-system-arm testen kann? Ich meine, ich will benutzerdefinierte "Maschine" für qemu schreiben, wo ich gewünschte Gedächtniskarte und schließlich einige Software-Imitation von gewünschten Peripheriegeräten definieren werde, gibt es einige Beispiele solcher Module? Ich habe sehr wenig Information darüber gefunden. Ich habe Quellcode in hw Verzeichnis in qemu Source Tree gelesen, aber es ist fast alles unkommentiert, und ich bin immer noch nicht sicher, ob ich verstehe, wie man neue Maschine zum qemu hinzufügt und wie Peripherie an den Adressraum anfügt?

    
mucka 04.05.2016, 13:15
quelle

1 Antwort

11

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

Nehmen wir als Beispiel das Entwicklungs-Board Olimex STM32 P103: Code des Entwicklungskits Olimex STM32 P103 . 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 hinzu, die mit GPIO A Pin 0 verbunden ist. In Zeile 130 haben wir die Maschinenbeschreibung "Olimex STM32 p103 Dev Board". In Zeile 131, die Maschine init Funktion: stm32_p103_init. Ein weiteres Beispiel für eine vollständigere Maschine: Pebble-Maschinencode .

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

    
ViniCoder 21.07.2016, 19:49
quelle

Tags und Links