Difference between revisions of "Proj-2011-2012-qemu"
Line 15: | Line 15: | ||
== Qemu == |
== Qemu == |
||
Voir [[Qemu]] |
Voir [[Qemu]] |
||
+ | |||
+ | == Fichiers == |
||
+ | Afin d'émuler la carte STM32L-Discovery les fichiers suivant on été ajoutés au dossier src/hw : |
||
+ | * '''stm32.c''' pour décrire la carte dans son ensemble |
||
+ | * '''stm32_gpio.c''' pour les gpio |
||
+ | * '''stm32_button.c''' pour les boutons |
||
+ | * '''stm32_led.c''' pour les led |
||
+ | * '''stm32_rcc.c''' pour le module RCC (ce module n'est que très partiellement émuler et donc non fonctionnel) |
||
== Composants émulés == |
== Composants émulés == |
||
− | === Processeur === |
+ | === Processeur et Mémoire === |
Le processeur utilisé par la carte est un processeur Cortex-M3 r1p1 ([http://infocenter.arm.com/help/topic/com.arm.doc.ddi0337i/DDI0337I_cortexm3_r2p1_trm.pdf doc]) déjà supporté par Qemu. |
Le processeur utilisé par la carte est un processeur Cortex-M3 r1p1 ([http://infocenter.arm.com/help/topic/com.arm.doc.ddi0337i/DDI0337I_cortexm3_r2p1_trm.pdf doc]) déjà supporté par Qemu. |
||
Line 23: | Line 31: | ||
MemoryRegion *address_space_mem = get_system_memory(); |
MemoryRegion *address_space_mem = get_system_memory(); |
||
pic = armv7m_init(address_space_mem, flash_size, sram_size, kernel_filename, cpu_model); |
pic = armv7m_init(address_space_mem, flash_size, sram_size, kernel_filename, cpu_model); |
||
+ | où pic est un tableau de qemu_irq (voir [[Qemu#Assemblage]]) correspondant aux fils d'entrer dans le processeur. |
||
− | |||
+ | Dans notre cas les taille des différentes mémoires sont : |
||
− | === Mémoire === |
||
*RAM: 16 KBits |
*RAM: 16 KBits |
||
*Flash: 128 Kbits |
*Flash: 128 Kbits |
||
Line 32: | Line 40: | ||
Fonctions disponibles |
Fonctions disponibles |
||
− | *Sortie basique pin par pin. La sortie est |
+ | *Sortie basique pin par pin. La sortie est réalisée grâce aux chardev proposés par Qemu. Ainsi, lorsque qu'une pin change d'état, un message contenant le nouvel état est envoyé via le chardev. |
− | |||
− | |||
== Glossaire des acronymes == |
== Glossaire des acronymes == |
Revision as of 10:48, 25 April 2012
Projet Qemu et cartes ARM Cortex-M3
Enseignant:
- Olivier Richard
Etudiants:
- CLAVELIN Aurélien
- EID Timothée
- MERCIER Michael
Le but de ce projet est de d'ajouter le support de la carte STM32L-Discovery dans le logiciel de virtualisation Qemu. Il fait suite au projet de l'année dernière (fiche projet) basé lui aussi sur Qemu mais portant sur la carte Stellaris Luminary Lm3s6965.
Qemu
Voir Qemu
Fichiers
Afin d'émuler la carte STM32L-Discovery les fichiers suivant on été ajoutés au dossier src/hw :
- stm32.c pour décrire la carte dans son ensemble
- stm32_gpio.c pour les gpio
- stm32_button.c pour les boutons
- stm32_led.c pour les led
- stm32_rcc.c pour le module RCC (ce module n'est que très partiellement émuler et donc non fonctionnel)
Composants émulés
Processeur et Mémoire
Le processeur utilisé par la carte est un processeur Cortex-M3 r1p1 (doc) déjà supporté par Qemu.
Pour initialiser celui-ci, il est nécessaire d'utiliser la fonction
MemoryRegion *address_space_mem = get_system_memory(); pic = armv7m_init(address_space_mem, flash_size, sram_size, kernel_filename, cpu_model);
où pic est un tableau de qemu_irq (voir Qemu#Assemblage) correspondant aux fils d'entrer dans le processeur. Dans notre cas les taille des différentes mémoires sont :
- RAM: 16 KBits
- Flash: 128 Kbits
GPIO
L'émulation des GPIO est gérée par le fichier stm32_gpio.c.
Fonctions disponibles
- Sortie basique pin par pin. La sortie est réalisée grâce aux chardev proposés par Qemu. Ainsi, lorsque qu'une pin change d'état, un message contenant le nouvel état est envoyé via le chardev.
Glossaire des acronymes
Vous trouverez le glossaire ici