如何使用自定义外设和内存映射创建QEMU ARM计算机?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用自定义外设和内存映射创建QEMU ARM计算机?相关的知识,希望对你有一定的参考价值。
我正在为Cortex-M3 cpu编写代码,我正在使用qemu-arm
二进制文件执行单元测试。现在一切正常。但我想知道如果我能够使用qemu-system-arm
测试整个系统?我的意思是,我想为qemu编写自定义“机器”,我将在其中定义所需的内存映射,最后一些软件模仿所需的外设,是否有这样的模块的一些例子?我发现这方面的信息很少。我已经在qemu源代码树的hw
目录中阅读了一些源代码,但它几乎都没有注释,我仍然不确定我是否理解如何将新机器添加到qemu以及如何将外围设备附加到地址空间?
要添加自己的机器,至少需要创建一个源文件,其中包含机器的参数和外围设备。之后,在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。
您可以使用Jumper Virtual Lab进行模拟,查看来自ARM mBed的this blog帖子。
以上是关于如何使用自定义外设和内存映射创建QEMU ARM计算机?的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )
Android 逆向ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )