开源Cortex-M模拟器QEMU的使用方法

版权声明:本文为博主原创文章,转载请保持文章完整,保留作者信息。 https://blog.csdn.net/zoomdy/article/details/50582557

开源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开发板

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)

猜你喜欢

转载自blog.csdn.net/zoomdy/article/details/50582557