使用芯片F28M35H52C1,需要在C28核代码中植入擦写程序,擦写区域是C28的全部FLASH,用的是F021_API_C28x_FPU32.lib库函数,并且在程序中使用pragma将操作FLASH的代码都指定到了ram区。但是在F021_API_C28x_FPU32.lib库函数中调用了rts2800_fpu32.lib库中的LL$$OR,并且无法用pragma将rts2800_fpu32.lib指定到ram区,在擦写rts2800_fpu32.lib所在区域的FLASH时就会产生错误。以前用F28335时也做过类似的代码,也是使用的TI提供的FLASH库函数,就没有这种问题。请问怎么解决?
Hank Zhao:
你在CMD文件中自定义一个段,然后在后边跟上 “ { -l rts2800_fpu32.lib < ***.obj > (.text) } ”,“***.obj” 可以替换为“LL$$OR”,就可以将“LL$$OR”,函数单独放到你指定的这个自定义段中。
使用芯片F28M35H52C1,需要在C28核代码中植入擦写程序,擦写区域是C28的全部FLASH,用的是F021_API_C28x_FPU32.lib库函数,并且在程序中使用pragma将操作FLASH的代码都指定到了ram区。但是在F021_API_C28x_FPU32.lib库函数中调用了rts2800_fpu32.lib库中的LL$$OR,并且无法用pragma将rts2800_fpu32.lib指定到ram区,在擦写rts2800_fpu32.lib所在区域的FLASH时就会产生错误。以前用F28335时也做过类似的代码,也是使用的TI提供的FLASH库函数,就没有这种问题。请问怎么解决?
andy zhang1:
回复 Hank Zhao:
请问是这样么?
GROUP { ramfuncs { -l F021_API_C28x_FPU32.lib}
{ -l rts2800_fpu32.lib } ” } LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart), LOAD_SIZE(_RamfuncsLoadSize), RUN_START(_RamfuncsRunStart), PAGE = 0
这个方法我们试过,这样修改后程序就不能正常运行了
使用芯片F28M35H52C1,需要在C28核代码中植入擦写程序,擦写区域是C28的全部FLASH,用的是F021_API_C28x_FPU32.lib库函数,并且在程序中使用pragma将操作FLASH的代码都指定到了ram区。但是在F021_API_C28x_FPU32.lib库函数中调用了rts2800_fpu32.lib库中的LL$$OR,并且无法用pragma将rts2800_fpu32.lib指定到ram区,在擦写rts2800_fpu32.lib所在区域的FLASH时就会产生错误。以前用F28335时也做过类似的代码,也是使用的TI提供的FLASH库函数,就没有这种问题。请问怎么解决?
Hank Zhao:
回复 andy zhang1:
是的,你把F021_API_C28x_FPU32.lib调用到的那个函数单独搬移到GROUP中试试,不搬移整个rts2800 library。