{STM32F2XXUsartState *s =STM32F2XX_USART(obj);sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->irq);memory_region_init_io(&s->mmio, obj, &stm32f2xx_usart_ops, s,TYPE_STM32F2XX_USART,0x400);sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmio); } 函数做的工作如下 初始化设备的irq,保...
static void stm32f2xx_usart_init(Object *obj) { STM32F2XXUsartState *s = STM32F2XX_USART(obj); sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->irq); memory_region_init_io(&s->mmio, obj, &stm32f2xx_usart_ops, s, TYPE_STM32F2XX_USART, 0x400); sysbus_init_mmio(SYS_BUS_DEVICE(ob...
*/ sysbus_add_io(sbd, 0xcf8, &s->conf_mem); sysbus_init_ioports(sbd, 0xcf8, 4); sysbus_add_io(sbd, 0xcfc, &s->data_mem); sysbus_init_ioports(sbd, 0xcfc, 4); } 4.5 中断和其他设备初始化 在i440fx 的初始化中,我们得到了初始化好了北桥、南桥,以及南桥上的 ISA BUS,本节内容...
在某个总线下面创建设备,比如在系统总线上创建设备,我们可以:sysbus_create_simple(驱动的名字,IO地址,IRQ编号)。 创建dts或者acpi入口,这个都有标准函数,比如qemu_fdt_add_subnode()。 做完这个动作,用这个虚拟机运行你的Linux,对应的设备就能被发现到。 这是静态的,动态的可以通过在命令行用-device来分配,这个读...
sysbus_init_ioports(sbd, MCH_HOST_BRIDGE_CONFIG_DATA,4); } 和 staticvoidq35_host_initfn(Object *obj){ memory_region_init_io(&phb->conf_mem, obj, &pci_host_conf_le_ops, phb,"pci-conf-idx",4); memory_region_init_io(&phb->data_mem, obj, &pci_host_data_le_ops, phb,"pci-co...
qemu_irq ioapic_irq[24] } static void pc_init1(...) { struct GSIState * gsi_state; ... gsi_state = g_malloc0(sizeof(*gsi_state)); if (kvm_ioapic_in_kernel()) { kvm_pc_setup_irq_routing(pcmc->pci_enabled); pcms->gsi = qemu_allocate_irqs(kvm_pc_gsi_handler, gsi_state...
struct TypeInfo { const char *name; const char *parent; size_t instance_size; void (*instance_init)(Object *obj); void (*instance_post_init)(Object *obj); void (*instance_finalize)(Object *obj); bool abstract; size_t class_size; void (*class_init)(ObjectClass *klass, void *data)...
sysbus_init_irq(sbd, &s->irq); s->cs_lines = g_new0(qemu_irq, s->num_cs); ssi_auto_connect_slaves(dev, s->cs_lines, s->spi); for (i = 0; i < s->num_cs; ++i) { sysbus_init_irq(sbd, &s->cs_lines[i]); }4...
fw_cfg_io_realize的功能是调用memory_region_init_io来分配FW_CFG_CTL_SIZE两个端口并调用sysbus_add_io将其加入到系统中,如果fw_cfg实现了DMA功能,还会分配和添加DMA对应的端口。从fw_cfg_init_io_dma里面可以知道,由于fw_cfg的基端口为0x510,所以fwcfg这个MemoryRegion的端口范围就是0x510~0x511。如果开启...
sysbus_init_irq(dev, &s->mci_irq);qemu_macaddr_default_if_unset(&s->conf.macaddr); s->nic = qemu_new_nic(&net_xgmac_enet_info, &s->conf, object_get_typename(OBJECT(dev)), dev->qdev.id, s); qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a);s->...