Created
July 5, 2012 06:45
-
-
Save xatier/3051858 to your computer and use it in GitHub Desktop.
qemu/hw/stm32.c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void stm32l152rbt6_init(ram_addr_t ram_size, const char *boot_device, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename, const char *cpu_model) { | |
//Préparation de la mémoire | |
MemoryRegion *address_space_mem = get_system_memory(); | |
uint16_t flash_size = stm32_board.f_size; //128KBits | |
uint16_t sram_size = 0x0010; //16 KBits | |
//Initialisation du processeur (+ mémoire) | |
qemu_irq* pic = armv7m_init(address_space_mem, flash_size, sram_size, kernel_filename, cpu_model); | |
stm32l_sys_init(0x1FF00000, pic[28], &stm32_board); //FIXME: Vérifier l'implémentation de la sys memory | |
//Structures GPIO | |
static const uint32_t gpio_addr[NB_GPIO] = { | |
0x40020000, //GPIO_A | |
0x40020400, //GPIO_B | |
0x40020800, //GPIO_C | |
0x40020C00, //GPIO_D | |
0x40021000, //GPIO_E | |
0x40021400 //GPIO_H | |
}; | |
// static const int gpio_idIrqNVIC[NB_NVIC_IRQ] = {6,7,8,9,10}; | |
DeviceState* gpio_dev[NB_GPIO]; | |
//Création du bouton | |
DeviceState* button = sysbus_create_simple("stm32_button", -1, NULL); | |
//Création des leds | |
DeviceState* led_dev6 = sysbus_create_simple("stm32_led_blue", -1, NULL); | |
DeviceState* led_dev7 = sysbus_create_simple("stm32_led_green", -1, NULL); | |
//Initialisation du GPIO_A | |
gpio_dev[GPIO_A] = sysbus_create_varargs("stm32_gpio_A", gpio_addr[GPIO_A], NULL); //, pic[gpio_idIrqNVIC[0]], pic[gpio_idIrqNVIC[1]], pic[gpio_idIrqNVIC[2]], pic[gpio_idIrqNVIC[3]], pic[gpio_idIrqNVIC[4]], NULL); | |
qemu_irq entreeBouton = qdev_get_gpio_in(gpio_dev[GPIO_A], 0); | |
qdev_connect_gpio_out(button, 0, entreeBouton); | |
//Initialisation du GPIO_B | |
gpio_dev[GPIO_B] = sysbus_create_varargs("stm32_gpio_B", gpio_addr[GPIO_B], NULL); //, pic[gpio_idIrqNVIC[0]], pic[gpio_idIrqNVIC[1]], pic[gpio_idIrqNVIC[2]], pic[gpio_idIrqNVIC[3]], pic[gpio_idIrqNVIC[4]], NULL); | |
qemu_irq entreeLED6 = qdev_get_gpio_in(led_dev6, 0); | |
qdev_connect_gpio_out(gpio_dev[GPIO_B], 6, entreeLED6); | |
qemu_irq entreeLED7 = qdev_get_gpio_in(led_dev7, 0); | |
qdev_connect_gpio_out(gpio_dev[GPIO_B], 7, entreeLED7); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment