* Add new configuration ============================= /default-configs/arm-softmmu.mak CONFIG_HELIOSX_UART=y CONFIG_HELIOSX_TIMER=y CONFIG_HELIOSX_CORE=y CONFIG_HELIOSX_VIC=y ... * New board initialization ============================= /hw/arm/heliosx.c hx_init ... * UART device simulation ============================= /hw/char/heliosx_uart.c Simulates the memory mapped registers read/write operation static const MemoryRegionOps hx_uart_ops = { .read = hx_uart_read, .write = hx_uart_write, .endianness = DEVICE_NATIVE_ENDIAN, }; hx_uart_rx_interrupt qemu_set_irq(s->irq_rx, flags != 0); sysbus_init_irq(sbd, &s->irq_rx); sysbus_init_irq(sbd, &s->irq_tx); ... * Add machine initialization parameter ============================= /hw/core/machine.c Added parameter hxfile1 hxfile2, for loading customized uboot and linux image to machine memory * Interupt controller ============================= /hw/intc/heliosx_vic.c An legacy, customized interrupt controller. // set up gpio qdev_init_gpio_in(dev, hxvic_set_irq, 16); // set up irq, fiq sysbus_init_irq(sbd, &s->irq); sysbus_init_irq(sbd, &s->fiq); ... // invoke cpu interrupt qemu_set_irq(s->irq, set); // called when a gpio signal is asserted hxvic_set_irq * Timer ============================= /hw/timer/heliosx_timer.c qemu_bh_new(hx_timer_tick, s); hx_timer_tick() qemu_irq_raise(s->irq); ... * Start up and test script/app ============================= /hx_test/ qemu-system-arm -M versatilepb -m 128M -nographic -kernel test.bin * Option related ============================= /util/qemu-config.c and customize qemu start option hxfile1 hxfile2 /vl.c option related type qemu_ops_set() ... * Build Scripts ============================= /heliosx_build.sh /heliosx_config.sh /heliosx_run.sh ...
2016/09/24
Log of A Qemu Hacking Project
A Qemu hacking project's log
Simulating a proprietary ARM board with its unique interrupt and UART controller.
Subscribe to:
Post Comments (Atom)
Post Code on Blogger
Simplest way to post code to blogger for me: <pre style="background: #f0f0f0; border: 1px dashed #CCCCCC; color: black;overflow-x:...
-
Explain There is not interrupt PIN for PCIe interrupt. When device wants to raise an interrupt, an interrupt message is sent to host via ...
-
Configure Space Addressing One of the major improvements the PCI Local Bus had over other I/O architectures was its configuration mechanism...
-
What is LMA and VMA Every loadable or allocatable output section has two addresses. The first is the VMA, or virtual memory address. This ...
No comments:
Post a Comment