因为之前做过TI的DSP芯片TMS320F280049的项目,现在想芯片替代,所以需要把代码迁移至TMS320F280039上。
1.芯片区别:TMS320F280049是100MHZ CPU, 两路都是CAN,而TMS320F280039是120MHZ CPU ,CANA是普通CAN ,CANB可配CANFD。
2.时钟区别:为了与前面的项目匹配,继续使用100MHZ时钟,进行系统时钟降频。所以CAN,串口,定时器的时钟不必重新配置。
如果开发IAP和APP,需要注意两个软件之间的时钟是否一致,否则在跳转APP时候会出现非法中断!!!
还有个小细节,example里面的delay us 函数有个宏,默认使用的是120MHZ时钟的,需要和系统时钟匹配。
3.C2000Ware flash API库:TMS320F280049是COFF格式,而TMS320F280039据说以后只更新EABI格式,现在还是有COFF格式的,在cmd里面定义一下就好了。
4.CMD文件里面需要区分: EABI格式函数不用加下划线_!而COFF需要加下划线!所以在迁移CMD文件里面需要特别注意,加载flash lib 文件时,Ramfunsloadstart Ramfunsloadsize 这几个需要删去下划线!否则会报错undefined symbol!
5.另外编译器需要配置一下,因为TMS320280039和TMS320F280034具有一些CLA /VCU区别,所以如果继续使用280049的CRC等OBJ文件,这里需要配置一样。
6.还有,编译器compiler选择项里面有个设置stack大小的!因为280039的example使用了8字节对齐而280049是4字节对齐,所以注意这里是否继续使用同样大小的堆栈?!例如49使用0x200,而39需要改成0x300。如果在代码里面有固定数组需要使用较大的RAM空间,注意内存是否会溢出!溢出在调试调用flash API时候直接报错,而flash里面只有部分数据正确。
解决方法就是查看编译后的map文件,stack地址长度是否与固定数组大小重叠了,重叠需要另外开辟RAM空间存放。
7.TMS320F280039比较重要的更新是增加了secure boot模块,对于芯片加密开始是比较重要的,否则用仿真器就可以读出芯片信息了。后续会深入讨论这个问题。