原创 今天发现了IAR7.30B的“疑似BUG”

2008-11-9 17:28 5501 6 9 分类: 软件与OS

  一周过去了,我自己制作的基于CC2431和CC2591的无线传感器网络硬件节点的射频部分都已经调试完毕,射频电路工作正常!通过外接CC2591后CC2431的无线通信距离能够扩展到约600米的距离,远远大于没有射频前端的距离(朋友测试说单纯CC2431的无线通信距离只有约50米)。


  今天上午准备用半天时间调试板子上的高精度数字温度传感器TMP275,它是SMBUS接口形式,和I2C总线协议很类似,由于以前有过丰富的开发I2C的经验,所以我觉得应该很容易调试吧!谁知道竟然调试了一天的时间,而最终发现问题竟是由于IAR编译环境本身的BUG所致,真是叫我默默无语两眼泪了……


  整个过程是这样的,我将以前写的I2C程序略作修改后成功移植到CC2431上,下载调试时在主机发送TMP275的地址后就收不到应答!反复阅读程序确定没有问题之后,我用示波器查看了一下SCK和SDA引脚上的信号,结果发现两个信号都不是很规则,一个不像正常的时钟,一个也不是我要发送的数据。怎么回事呢?莫非是我对CC2431的IO口操作不正确?再次阅读了一边CC2430的手册,发现也没什么呀,就那么几个寄存器嘛,使用是很简单的!那么问题到底处在了哪里呢?


  最后,我决定写个最简单的控制一个IO口输出50%占空比方波的程序!程序代码如下:


void delay(void)


{


    uint8 i;


   for(i = 200; i > 0; i--);


}


 int main( void )

 system_init();


for(;;)


{


P1_3 = 1;


delay();


P1_3 = 0;


delay();


}


return 0;


}


其中 system_init();函数已经将P1_3端口设置为输出方向的通用IO。但是就是上面一个很简单的函数,用示波器查看引脚波形后,居然不是50%占空比的方波。在P1_3引脚输出的波形的高电平持续时间很短,而且有毛刺出现。而P1_2引脚上居然也可以看到和P1_3一样的波形,只是少了毛刺。这个奇怪的现象我一直不能理解,后来在一个朋友的帮助下终于找到问题的根本那就是IAR本身编译的结果有问题。如果将delay函数改成如下形式:


#define delay() { uint8 i; for(i = 200; i > 0; i--);}


  那么再次编译下载后,P1_3引脚就能输出正常波形了,而P1_2引脚将没有波形。这就说明IAR7.30B在编译调用软件延时函数时发生了错误。后来,我又在Z-Stack1.43的源码中查找了一下,发现里面所有涉及到软件延时的部分都是用#define宏定义来实现的,没有像delay()一样的延时函数。所以,我估计开发Z-Stack的工程师应该也是遇到过这样的问题,只不过他们用#define将这个IAR的Bug给掩饰过去了,并且还没有告诉我们!


        看来IAR的产品也不是很稳定的,难怪他们要那么频繁的升级,原来有一部分原因就是在修正bug啊!以后在开发中,如果遇到百思不得其解的不可思议的问题时,大家可以怀疑一下我们的编译器了,毕竟开发环境也是产品,也是可能存在缺陷的!


 


 


 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1196937 2008-11-20 11:03

谢谢,如果有需要深入交流的问题可以加我的QQ--44244577,注明个人姓名和原因,否则不予通过!欢迎交流!

用户1196937 2008-11-11 20:34

是的,我和朋友一起测量的,然后在google earth上大约测量了一下距离,600米应该没问题

用户1433108 2008-11-10 10:46

沙发! 真的能达到600米啊,强悍啊,我的CC2431一搬空旷情况下90米左右,普通情况下也是50米左右。
相关推荐阅读
用户1196937 2010-08-22 14:51
电影《唐山大地震》的原型———小说《余震》
...
用户1196937 2010-08-09 23:19
skyeye的问题及解决方法
第一次用skyeye,从网上下到了它的testsuit,可是执行时确总是出现各种问题,先将解决方法描述如下:1. skyseye的正确命令格式如下(用skyeye -h查看):#skyeye -hSk...
用户1196937 2010-08-08 21:38
【转载】Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍作者:北南南北来自:LinuxSir.Org提要:Linux 磁盘分区表、文件系统的查看、统计的工具很多,有些工具是多功能的,不仅仅是查...
用户1196937 2010-08-08 19:29
Fedora 11和Ubuntu 9.10安装vmware tools 解决文件共享的问题(转)
转帖原文:用vmware workstation 6.0安装了fedora 11。由于要解决屏幕分辨率和文件共享的问题,就尝试安装 vmware tools。但是每次编译都有很多错误。鼠标移动是没有问...
用户1196937 2010-08-04 23:05
Fedora11下编译Skyeye1.3.0中的问题描述及解决方法
最近因为工作需要,自己找来skyeye的源码编译了一下,编译过程中遇到了不少问题,在google的帮助下都一一解决了,这里记录一下,希望能对需要的人有所帮助。按照源码中INSTALL文件提示的步骤编译...
用户1196937 2010-07-19 22:52
Stay Hungry, Stay Foolish -苹果总裁史蒂夫乔布的演讲
Stay Hungry, Stay Foolish 求知若饥,虚心若愚 Steve Jobs于2005年对斯坦福毕业生演讲全文今天,很荣幸来到各位从世界上最好的学校之一毕业的毕业典礼上。我从来没从大学...
我要评论
3
6
关闭 站长推荐上一条 /3 下一条