我用的一个很简单的收发程序,就是节点2给节点1循环发packet

一、cooja下仿真,两个节点不能正常交互,input函数不能正常触发,cc2420也没有触发;打印节点信息,突然发现节点2没有发beacon。尝试了好几次,发现是节点2的interval有问题。测试rand()函数。发现contiki有封装好的random.c,可以直接使用。

contiki下实现pmac程序调试过程(一)_第1张图片

二、节点2发100个packet,节点1竟然收到322个。查看打印信息,节点2每发送一次,节点1收到2-3次。

contiki下实现pmac程序调试过程(一)_第2张图片再次打印信息,上层发packet到48竟然停止了,底层重复调send_data,怀疑是ack检测有问题,导致不停地退避重新发送,检查程序,发现没有检测到ack的话忘了return。。。。

节点收包还是有问题,将每个packet编号,打印信息发现每个packet收到三次左右,后发现是csma重传导致,检查程序,发现pmac向上层返回状态字时逻辑错误。。。。修改后收发正常。contiki下实现pmac程序调试过程(一)_第3张图片