我正在为Cortex-M3 cpu编写代码,我正在使用qemu-arm
二进制文件执行单元测试。现在一切正常。但我想知道如果我能够使用qemu-system-arm
测试整个系统?我的意思是,我想为qemu编写自定义“机器”,我将在其中定义所需的内存映射,最后一些软件模仿所需的外设,是否有这样的模块的一些例子?我发现这方面的信息很少。我已经在qemu源代码树的hw
目录中阅读了一些源代码,但它几乎都没有注释,我仍然不确定我是否理解如何将新机器添加到qemu以及如何将外围设备附加到地址空间?
答案 0 :(得分:25)
要添加自己的机器,至少需要创建一个源文件,其中包含机器的参数和外围设备。之后,在qemu / hw / arm /下的Makefile.objs中添加一个条目。 STM32 P103 machine entry
我们以Olimex STM32 P103开发板为例:Olimex STM32 P103 Development Board code。在第105行和第106行中,我们有flash_size和ram_size。在第114和115行中,代码添加了一个连接到GPIO A引脚0的LED。在第130行中,我们有机器描述,“Olimex STM32 p103开发板”。在第131行,机器初始化函数:stm32_p103_init。另一个更完整的机器示例:Pebble machine code。
关于外围设备,考虑到stm32案例,它们在每个家庭代码中被实例化。 stm32f1系列:stm32f1xx.c,stm32f2系列:stm32f2xx.c,stm32f4系列:stm32f4xx.c。外设本身在驱动程序中实现,驱动程序通常具有提示名称:stm32f2xx_adc.c,stm32f2xx_crc.c等。添加新外围设备的补丁示例:Addition of ADC to STM32。
答案 1 :(得分:0)
您可以使用Jumper虚拟实验室进行仿真,请从ARM mBed中查看this blog帖子。
答案 2 :(得分:0)
为了后代,早在 2014 年,v3wwg 通过对现有机器 Stellaris 进行更改,创建了一种新的 arm 机器。
找到这篇文章的其他人可以通过阅读他在 [PRJC forum][1]
上的帖子并查看对他的 qemu fork 所做的提交来跟踪他的工作:https://github.com/ve3wwg/teensy3_qemu/commits/master