WSN中的盲调启示录

近来在实验室里负责一块 Wireless sensor network node 的代码调试,因为所采用的Atmel产的ATmega168单片机在Debugwire方式下在线仿真调试常常出现芯片锁死的Bug(从此这块单片机不能再启动,连熔丝位也读不出来,之前已经被我锁死了4块了,导师那个心痛啊~),所以导师交代要用盲调(只能用仿真器连接电路板、烧写HEX文件到Flesh的办法来调试)。

不过这样下来,Debug成了非常人肉的任务,因为代码运行到中途时候的变量数值再也无法通过PC来跟踪查看,都不知道程序跑到哪儿去了。。。所以,无比郁闷的我只能在我认为代码可能会跑偏的地方加点SET_RLED之类的功能,来判断程序实际的走向。

尽管如此,有些地方还是需要看中间变量,譬如一处Timer设置出的系统时钟用来延时的代码段,延时的时间总和实际的时间间隔有偏差,无奈的我也无法知晓系统当时的时刻是多少,所以也无法精确更正。

今天和导师讨论其这个问题了,他的一席话给我极大的启示:既然做的就是WSN的一个node上的代码,而且Send和receive的基本功能也已经能跑了,干嘛不在需要看数据的地方Send一个包到另一个通过串口与PC相连的WSN node上呢,然后不是通过串口调试工具查看变量的数值了吗?

哎,我真是脑袋被猪踢了,这个方法真不错,赶紧来试试~~

对了,试之前得上Blog记录下,这个方法以后也忘不了~~   

My first articles in the blog!!  

<========================}-0

你可能感兴趣的:(ws)