OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 浅谈工程师的调试法宝(二)---半主机的巧妙应用

共2条 1/1 1 跳转至

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

菜鸟
2017-08-16 13:13:16    评分

摘要

在上一次文档中,我们阐述了如何使用printf函数在串口终端上打印输出,这种调试方法能在一定程度上满足我们的调试要求。但是有的时候串口资源已经被占用或为了节约开发时间不使用串口,这时我们就需要一个不依赖于MCU外设的调试方法。今天就向大家介绍一个非常经典的调试工具-半主机(semihosting)。

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

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

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

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


#include <stdio.h>


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

1.jpg

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

2.jpg



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

3.jpg


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

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

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

文章来自周立功单片机




关键词: 工程师     调试     主机     巧妙    

专家
2017-08-17 08:21:52    评分
2楼

期待楼主的SWO引脚的巧妙应用。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]