开源Cortex-M模拟器QEMU的使用方法
QEMU是开源、跨平台、支持多种目标架构的模拟器,包括Cortex-M架构。开源Cortex-M模拟器QEMU支持两款开发板,分别为Stellaris LM3S811EVB和Stellaris LM3S6965EVB。
原文:http://blog.csdn.net/zoomdy/article/details/50582557
mingdu.zheng at gmail dot com
QEMU主页
http://wiki.qemu.org/Main_Page
安装QEMU
这里给出Ubuntu下的安装命令。
sudo apt-get install qemu
这会安装好多个不同架构的qemu,如qemu-system-i386、qemu-system-arm等,如果只需要安装某个架构的qemu,那么可以使用下面的命令。
sudo apt-get install qemu-system-arm
仅安装ARM架构的QEMU模拟器。
QEMU模拟lm3s811evb开发板
qemu-system-arm -machine lm3s811evb -kernel firmware.elf
-machine lm3s811evb:指定模拟的开发板。
-kernel firmware.elf:指定目标固件程序文件,必须是ELF格式的。
调试QEMU中运行的目标固件程序
QEMU集成了GDB Server,在QEMU模拟器中执行的程序可以通过GDB进行源码级调试。
qemu-system-arm -machine lm3s811evb -kernel firmware.elf -S -gdb tcp::9000
-S:启动时立刻停止执行,等待GDB连接。
-gdb tcp::9000:开启GDB Server,监听端口为9000,注意tcp和9000之间是两个冒号。
GDB连接QEMU
arm-none-eabi-gdb firmware.elf
(gdb)target remote localhost:9000
(gdb)b main
(gdb)c
QEMU支持的两款Cortex-M开发板
-
lm3s811evb Stellaris LM3S811EVB
开发板简介:http://www.ti.com.cn/cn/lit/ml/spmt196b/spmt196b.pdf
MCU资料:http://www.ti.com.cn/product/cn/lm3s811
开发板光盘下载:http://www.ti.com.cn/tool/cn/EKC-LM3S811-CD -
lm3s6965evb Stellaris LM3S6965EVB
开发板简介:http://www.ti.com.cn/cn/lit/ml/spmt127b/spmt127b.pdf
MCU资料:http://www.ti.com.cn/product/cn/lm3s6965
开发板光盘下载:http://www.ti.com.cn/tool/cn/EKC-LM3S6965-CD
QEMU模拟的lm3s811evb外设列表
地址范围 | 外设 |
---|---|
0x00000000-0x0000FFFF | On-chip Flash 64K |
0x20000000-0x20001FFF | Bit-banded on-chip SRAM 8K |
0x22000000-0x23FFFFFF | Bit-banded alias of 0x20000000-0x200FFFFF |
0x40004000-0x40004FFF | GPIO Port A |
0x40005000-0x40005FFF | GPIO Port B |
0x40006000-0x40006FFF | GPIO Port C |
0x40007000-0x40007FFF | GPIO Port D |
0x40008000-0x40008FFF | SSI0 |
0x4000C000-0x4000CFFF | UART0 |
0x4000D000-0x4000DFFF | UART1 |
0x40020000-0x40020FFF | I2C0->SSD0303(OLED Controller) |
0x40024000-0x40024FFF | GPIO Port E |
0x40030000-0x40030FFF | Timer 0 |
0x40031000-0x40031FFF | Timer 1 |
0x40032000-0x40032FFF | Timer 2 |
0x40038000-0x40038FFF | ADC0 |
0x400FE000-0x400FEFFF | System control |
0x42000000-0x43FFFFFF | Bit-banded alias of 0x40000000-0x400FFFFF |
0xE000E000-0xE000EFFF | Cortex-M3 Peripherals(SysTick, NVIC, MPU and SCB) |
QEMU模拟的lm3s6965evb外设列表
地址范围 | 外设 |
---|---|
0x00000000-0x0003FFFF | On-chip Flash 256K |
0x20000000-0x2000FFFF | Bit-banded on-chip SRAM 64K |
0x22000000-0x23FFFFFF | Bit-banded alias of 0x20000000-0x200FFFFF |
0x40004000-0x40004FFF | GPIO Port A |
0x40005000-0x40005FFF | GPIO Port B |
0x40006000-0x40006FFF | GPIO Port C |
0x40007000-0x40007FFF | GPIO Port D |
0x40008000-0x40008FFF | SSI0 -> SSD0323(OLED Controller) and SDCard(SPI mode) |
0x4000C000-0x4000CFFF | UART0 |
0x4000D000-0x4000DFFF | UART1 |
0x4000E000-0x4000EFFF | UART2 |
0x40020000-0x40020FFF | I2C0 |
0x40024000-0x40024FFF | GPIO Port E |
0x40025000-0x40025FFF | GPIO Port F |
0x40026000-0x40026FFF | GPIO Port G |
0x40030000-0x40030FFF | Timer 0 |
0x40031000-0x40031FFF | Timer 1 |
0x40032000-0x40032FFF | Timer 2 |
0x40033000-0x40033FFF | Timer 3 |
0x40038000-0x40038FFF | ADC0 |
0x40048000-0x40048fff | Ethernet Controller |
0x400FE000-0x400FEFFF | System control |
0x42000000-0x43FFFFFF | Bit-banded alias of 0x40000000-0x400FFFFF |
0xE000E000-0xE000EFFF | Cortex-M3 Peripherals(SysTick, NVIC, MPU and SCB) |