电机控制器选用TI TMS28xx DSP,包括boot-loader与应用软件两个部分。其中boot-loader包括下列内容:
- RAM自检
- 应用程序有效性检查
- UDS命令处理
- FLASH操作
下面分别说明DSP上电后整个软件运行流程及程序刷新过程。
DSP复位后,将根据外部硬件配置选择boot-to-flash模式【参考8】:跳转到boot-loader入口,接着进行RAM自检。若自检成功并且监测到有有效的应用软件(检查应用软件完整性),将跳转到应用软件;不然,则进入boot-loader模式,等待刷新有效的应用软件。
当跳转到应用软件后,若有程序刷新请求,应用软件将擦除软件完整性标识字(实际是所在的整个扇区),然后触发软件看门狗复位。复位后,检测应用软件完整性信息,跳转到boot-loader模式。(到底应在应用程序中擦除完整性标识字还是跳转到boot-loader再擦除?TBD)
程序刷新结束后,外部Tester调用UDS服务,触发DSP软件看门狗复位。或进入死循环,等待硬件看门狗或软件看门狗复位。
图1 DSP软件执行流程
DSP的刷新网络层基于15765-2,应用层基于15765-3及UDS(14229):当CAN模块接收到外部工具发送的UDS消息后,传递给网络层;网络层分析处理后,认为接收到有效的UDS命令再传递给应用层处理;应用层处理完毕,响应消息再通过网络层调用CAN驱动发送给外部工具。
应用层接收到有效的刷新数据后,调用TI的FLASH驱动库完成FLASH的编程。
在进入Boot-loader后,应周期性的调用网络层发送接收CAN消息及调用看门狗服务。
另外,由于FLASH编程时间较长,其运行时间有可能超过看门狗的溢出时间。所以在调用FALSH编程函数后,应使能一个定时器中断,在该定时器中断服务中调用看门狗服务。
图2 程序刷新示意图