我正在为 Cortex-M3 cpu 编写代码,并且正在使用以下命令执行单元测试qemu-arm
二进制。现在一切都很好。但我想知道我是否能够使用测试整个系统qemu-system-arm
?我的意思是,我想为 qemu 编写自定义“机器”,我将在其中定义所需的内存映射,并最终定义所需外围设备的一些软件模仿,是否有此类模块的一些示例?我发现这方面的信息很少。我读过一些源代码hw
qemu 源代码树中的目录,但它几乎全部未注释,我仍然不确定我是否理解如何将新机器添加到 qemu 以及如何将外设附加到地址空间?
为了添加您自己的机器,您至少需要创建一个源文件,其中包含您机器的参数和外围设备。之后,在 qemu/hw/arm/ 下的 Makefile.objs 中添加一个条目。STM32 P103机器入门 https://github.com/pebble/qemu/blob/master/hw/arm/Makefile.objs#L19.
我们以 Olimex STM32 P103 开发板为例:Olimex STM32 P103 开发板代码 https://github.com/pebble/qemu/blob/master/hw/arm/stm32_p103.c。在第 105 行和第 106 行中,我们有 flash_size 和 ram_size。在第 114 行和第 115 行中,代码添加了一个连接到 GPIO A 引脚 0 的 LED。在第 130 行中,我们有机器描述“Olimex STM32 p103 Dev Board”。第131行,机器初始化函数:stm32_p103_init。另一个更完整的机器示例:卵石机代码 https://github.com/pebble/qemu/blob/master/hw/arm/pebble.c.
关于外设,考虑stm32的情况,在每个系列代码中实例化它们。 stm32f1系列:stm32f1xx.c https://github.com/pebble/qemu/blob/master/hw/arm/stm32f1xx.c,stm32f2系列:stm32f2xx.c,stm32f4系列:stm32f4xx.c。外设本身在驱动程序中实现,该驱动程序通常具有暗示性名称:stm32f2xx_adc.c、stm32f2xx_crc.c 等。添加新外设的补丁示例:STM32添加ADC https://github.com/beckus/qemu_stm32/commit/e8fb69b8d72d7cb8c533e93954c5270dcb57e0e4.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)