5731|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

调试你的嵌入式软件 [复制链接]

除了调试嵌入式系统的高级工具,许多嵌入式的项目能够完美地使用诸如发光二极管(LED)、串口和示波器这样的简单设备调试。 

串行口


许多嵌入式的主板都具有一个RS232串行口,它允许你将调试信息传送到PC工作站上标准的COM口上。如果你的嵌入式对象还有剩余的内存空间,你就可以使用标准的puts()、printf()或者相等同的函数来发送有用的调试信息。

如果你正在使用Windows工作站,你就只需要运行一个终端仿真器程序来显示来自的嵌入式对象的调试信息。一个比较好的程序是HyperTerminal,它是Windows操作系统自带的。我觉得一个更好的(免费)程序是Tera Term(Pro)。

发光二极管
一个简单的状态LED在某些系统上可能被当作奢侈品,但是它能够极为有效地帮助调试。(至少我会认为没有什么别的东西能够提供类似的功能。)

除了看到LED在代码某个点处开始发光或者闪烁所带来的提示之外,你还可以使用长或者短闪烁来表示大量的错误和状态报告——这只需要一点点想象力。这不是艺术的表现,但是很多嵌入式系统的开发人员只有一两个或者稍多的LED来调试小型嵌入式系统。

示波器
示波器可能是基本调试辅助工具中最强大的一个,而且它不仅仅只能够用于调试硬件。

一个基本的模拟示波器就足够了,但是有数字示波器会更好。好的示波器会有两个或者更多的频道,再加上一个额外的外部触发脉冲输入频道,这个频道带有综合触发系统和延迟扫描。示波器能够让你看到你的程序对外部端口和外设的访问,并能够监测软件的活动。

下面是在你调试嵌入式软件的时候应用示波器的几种方法:

对你需要观察的针对活动的事件使用一个空余的外部输出插脚,或者用这个插脚来显示活动的情况。 

在函数开始的时候设置插脚,再在结束的时候拿掉它,以测量函数的执行时间。你可以以类似的方式检测中断的潜伏时间。 

如果CPU卡在了循环里,那么就要检查地址总线的状态,以大概地查看CPU卡在哪个地方了(当然,这要假设你正在使用外部内存)。 

检测中断路,以查找阻塞的中断,或者检测外设未正常初始化而导致的中断缺失。 

大多数调试工具都无法在系统初始启动的时候提供任何帮助,但是你可以在系统周期性复位的时候使用示波器,用以观察地址和数据总线的活动,以追踪CPU在复位之后的活动进展。
不要节约
最后,不要在高质量的调试工具上节约。尽管这些基本的工具都是极其有用的,但是更加昂贵和综合的工具如果能够节省你数周昂贵的调试和工程努力,那么它们就总是物有所值的。

最新回复

其实你可以写个 之一 之二的兄弟 1292  详情 回复 发表于 2017-11-13 14:21
点赞 关注

回复
举报

7815

帖子

56

TA的资源

裸片初长成(中级)

沙发
 
其实你可以写个 之一 之二的兄弟

1292
 
个人签名

强者为尊,弱者,死无葬身之地

 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表