Other Parts Discussed in Thread: TMS320F28335, TMS320F28069,
在用TMS320F28335或者TMS320F28069这一类具有FPU的控制器做电机算法时,我会使用Fast RTS,以28069的FOC控制为例,工程配置如下:
图1. TMS320F28069 使用Fast RTS链接配置
1.将Fast RTS库置于标准RTS库之前
2.勾选Search libraries in priority order
编译完成后,从.map文件中可以看到sin及cos函数使用的是Fast RTS库中的函数,如下图所示:
图2. TMS320F28069 Fast RTS编译结果
最近在使用TMS320F28075做PMSM的FOC控制,该处理器具有TMU(type0)
图3. TMS320F28075具有TMU
如果在配置的时候取消TMU支持,还是按照图1那样在28075上使用Fast RTS,编译的时候会报告如下警告:
图4.28075上使用Fast RTS报告的警告
Fast RTS运行需要访问FPUmathTables,如28069TRM文档中的描述如下:
图5. 28069手册中描述FAST RTS需要访问FPUmathTable
我在28075的数据手册及TRM文档中,都没有检索到FPU math table的相关信息
问题1. 是不是28075的Boot ROM中没有FPUTABLES,因此在28075上不能使用Fast RTS,而应该使用TMU
问题2. 是不是TMU和Fast RTS都是对sin、cos等函数的优化,因此做浮点运算时应该在没有TMU的处理器上使用Fast RTS,在具有TMU的处理上使用TMU
问题3. 对同样功能的函数,Fast RTS和TMU二者相比,效率上有区别吗?
对于28069,可以通过.map文件确认是否使用了Fast RTS;但是对于TMU,从.map文件中无法确认,这是不是因为,在TMU的支持下,三角函数运算就是一条指令,
问题4. 对于28075,是否使用了TMU,是不是可以通过Disassembly进行确认,如下图所示:
图6.确认使用了TMU