浅谈工程师的调试法宝(二)---半主机的巧妙应用

来源:互联网 发布:全球贸易预警数据库 编辑:程序博客网 时间:2024/05/15 16:11

半主机是在调试ARM设备时,主机电脑可以与设备进行输入输出通信的一个机构。这个机构可以直接调用C语言库中类似printf和scanf的函数。这个机构的好处在于允许用户使用主机电脑的输入输出设备,方便了工程师们的软件开发过程。


Semihosting 是通过设置软件中断(SWI)来实现的。调用了适当的软件中断和易于操作的软件中断的向量。关于半主机的实现原理,感兴趣的读者可以自行查阅资料,本篇文章重点介绍如何将半主机模式应用到实际的软件开发过程中。


我们测试是使用飞思卡尔公司的FRDM-KE06开发板,如图 1所示。关于飞思卡尔系列的更多的开发板资料,请访问http://www.zlgmcu.com/Freescale/。

图 1 KE06开发板


打开IAR工程,在主函数文件起始处包含stdio.h文件,如下所示。


#include


在主函数中,我们调用printf函数打印一些与芯片有关的信息,编译完成之后,对工程按照图 2所示配置。

图 2 IAR工程配置


点击OK,进入Debug模式之后,按照如图 3所示,打开Terminal I/O窗口。

图 3 打开Terminal窗口


当我们点击全速运行之后,我们可以在Terminal I/O窗口看到如图 4所示的信息。

图 4 虚拟串口打印信息


可以看到,相关的芯片信息已经通过semihost打印出来了,并且也可以获得用户输入的字符哦。是不是很酷?


当我们高高兴兴地看着打印出来的信息时,发现字符输出的速度很慢,查阅资料才明白,在半主机模式下,输出字符的速度大概是10ms每个字符!


God!多么好的一个调试工具,但是字符输出的速度也太慢了吧。那么有没有一种调试方法和semihost一样不占用MCU外设资源,并且字符输出速度也很快呢?当然有,敬请大家关注《浅谈工程师的调试法宝(3)之SWO引脚的巧妙应用》。


原文出处:http://maker.zlgmcu.com/portal.php?mod=view&aid=1877

原创粉丝点击