-- -------
dl7M_tln.a: [10]
XShttio.o 8 8 8
abort.o 6
exit.o 4
low_level_init.o 4
printf.o 40
putchar.o 32
xfail_s.o 64 4
xprintfsmall_nomb.o 1'281
xprout.o 22
-----------------------------------------------
Total: 1'461 8 12
shb_l.a: [13]
dwrite.o 30
exit.o 20
iarttio.o 124
iarwrite.o 34
iarwstd.o 32
write.o 16
-----------------------------------------------
Total: 256
3.4 从反汇编文件看Semihosting实现
最后我们再从工程反汇编文件角度看一下 Semihosting 机制是不是如第二小节原理里介绍得那样,先借助 IAR 小工具 ielfdumparm.exe 将工程可执行文件 hello_world.out 转换成反汇编文件 hello_world.dump。
ielfdumparm.exe --source --code .\hello_world.out -o .\hello_world.dump
然后使用任意文本编辑器打开这个反汇编文件 hello_world.dump,在里面搜索 BKPT 指令,确实能够看到插入了多处软中断指令用于触发 Semihosting,并且软中断指令前都装载了 R0 寄存器,痞子衡截取的片段里 R0 装载的值是 5,从 ARM 文档里查询,这对应了 SYS_WRITE 访问请求。
至此,IAR下调试信息输出机制之半主机(Semihosting)痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。