TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335: 如何将rts2800_fpu32_fast_supplement.lib的库函数指定到特定位置运行

Part Number:TMS320F28335Other Parts Discussed in Thread: C2000WARE

用TMS320F28335建立的工程,烧录到flash,编译时指定link order的顺序fast库在标准库之前,编译后的.map文件中有如下片段

可以看到,使用了fast库中的div_f32。但是从这个编译结果看,我认为div_f32可能是在flash中运行的。

:\ti\c2000\C2000Ware_3_04_00_00\libraries\math\FPUfastRTS\c28\docs中的《FASTRTS_SW_LIB_UG》文档17页有如下描述:

这里介绍了如何将fast库函数加载到flash中并在RAM中运行的方法,这和将MainISR加载到某段FLASH并在RAM中运行的处理看起来有些类似。

问题1.由于是在编译的map中才看到使用了fast库的某函数,这里提到的ramfuncs如何定义呢?也就是说,我的C代码中并没有直接使用div_f32.

问题2.如何修改官方提供的F28335.cmd使标准库和fast库是使用的函数加载到flash但是在RAM中运行呢?

Green Deng:

找到一个第三方网站有介绍库函数搬移的,你可以参考一下:https://cxyzjd.com/article/finhaz/104345392

简单来说,如果

{--library=rts2800_fpu32_fast_supplement.lib (.text)}

{}中的部分就是会搬移到ram中运行的部分,如上设置就是把整个库搬移到ram中

而要将库中的部分文件搬移到ram中,那么只要将需要搬移的部分加到库名称的后面就可以了,比如要搬移atan_f32的话就是

{

–library=rts2800_fpu32_fast_supplement.lib<atan_f32.obj> (.text)

}

,

user78960159:

您好 感谢帮助 可能是我昨晚看的不仔细 如您所说 fastFPU文档中的示例代码是没有问题的

我又试了一下,修改前的F28335.cmd片段如下,我先把增加的代码注释掉

这时的编译处的.map文件如下

可以看到,div_f32.obj位于Flash SectorA,大小为0x19,此时RAML0_L3的使用的空间大小为0xC75

将F28335.cmd的注释取消

得到的最终编译结果片段如下

div_f32.obj加载到Flash SectorD,RAML0_L3使用空间大小变为0xC8E = 0xC75 + 0x19,从而实现了div_f32加载到Flash最终搬移到RAM中。

您提供的第三方链接同样对我很有帮助,我之前确实没有注意过Main_ISR定位到“ramfunc”,但是Main_ISR中的子函数还是会停留在Flash中运行的问题。

还是有几个问题想请假一下您:

问题1. 我在做开发时,会使用如controlSUIT–>math库中的宏函数(如PI、斜坡、SVPWM等),如果是Main_ISR中的宏函数,当Main_ISR定位到“ramfunc”后,其中的这些宏函数,会在RAM中运行吗?还是固化代码以后在Flash中执行?

问题2.标准运行支持库、fast运行支持库、或者定点的IQmath库,是只有代码中用到的这些库中的函数才会加载到Flash或者RAM中吧

问题3.如果是在支持FPU的C2000处理器如28335做开发,rts2800_fpu32.lib和rts2800_fpu32_fast_supplement.lib应该是必选的两个库,且后者的link order要优先,如果想使用math库的宏函数,需要#include "IQmathLib.h"且是不是应该要设置为FLOAT_MATH。

做了这些配置后,IQmath_fpu32.lib还需要添加到工程中或者Link吗?我看到如HVPM_Senforless的Project Explorer中有这个库文件,但是删掉以后也没有编译报错。

我目前的理解是IQmath_fpu32.lib不需要,因为使用了两个rts2800的浮点运行库,且IQmathLib.h选择为FLOAT_MATH后,其中的函数也就都是浮点类型了,在两个支持库的处理下应该生成浮点指令吧

,

user78960159:

问题1自己答复下

MainISR中的宏函数会随着MainISR一起搬移到RAM中运行 

宏函数的使用有以下几点用意

1.标准函数通用化,可能会微调,调试不方便,没法单步调试

2.空间换时间,没有栈操作,但是代码量会大些

3.固化代码后,宏函数会随着调用它的函数被搬移到RAM运行而一起搬移过去,方便一些,不用在CMD中link

大家觉得呢

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335: 如何将rts2800_fpu32_fast_supplement.lib的库函数指定到特定位置运行
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1