This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

canopen源码移植-canfestival,不知Timer设置是否正确,有bug,希望有别人移植的共享

因为要用到CANopen,看协议太枯燥,移植了canfestival的开源代码,使用RM57L作为CANopen slave,初步可以使用:

1、uart串口波特率115200kbps, 可以看到debug msg,貌似运行还是正常的,但是打开一个Timer作为Heartbeat后,一段时候会死机。

但是usb仿真器连接的时候,不会死机。单独运行的话,就会死机,原因正在找,主要对这个机制还不是太清楚。

2、可以使用canopen协议仿真器来调试,基本上所有的消息,命令SDO,PDO,远程帧啥的都可以。

ps:其他人是否有移植好的代码希望可以共享一下,非常感谢!

rm57_can_canopen.zip
  • 你好,

    在第一点中你提到不连接仿真器会“死机”。这个“死机”的表现具体是什么呢?MCU不工作了还是只有CAN通讯出问题了?

  • 不是,整个程序无响应。

    仿真的时候也出现过这种现象,当出现这种“死机”现象时候,暂停仿真,中断向量表跳转至prefetchEntry或者是underEntry。

    请问,在CCS中,调试能否在异常的时候,查到寄存器值,来进行程序最后的位置定位?

  • 这种现象不叫“死机”,是一种异常。

    prefetchEntry:当CPU取指时访问了非法地址,就会跳到这个异常中断中

    underEntry:当CPU读到一个未定义的指令(实际上很可能就是访问到了不是放程序的区域),就会跳到这个异常中断中

    出现这种异常时,如果连接着仿真器,就查看CP15寄存器组下记录下对应异常来源的地址,以方便分析。

    另外,请问你是否有使用MPU功能?如果用了,是怎么配置的?