This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28035: CLAsin,在将程序正常烧写到flash中时,返回值正常。但是通过串口升级方式将程序烧进去后CLAsin与CLAcos返回值不正常。但是CLAdiv,CLAsqrt是正常的。

Part Number: TMS320F28035
Other Parts Discussed in Thread: UNIFLASH, C2000WARE

   。bootload中只是执行了一条跳转指令而已。为什么什么导致CLAsin,CLAcos不正常。而其他CLA math函数是正常的。如果不用bootlad升级,直接将应用程序烧进去就全是正常的。

  • 已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 你好,发现了一些线索。我用仿真器直接把APP烧到F28035,然后用uniflash读出FLASHB(存放了CLAMath的表格),发现是正常的。然后先烧BOOTLOAD再用串口把APP进去。然后用uniflash读出FLASHB,发现FLASHB是空的。我首先以为是我的升级程序做错了。后面发现不是,CCS自动生成的HEX里面根本没有FLASHB的数据。CCS有BUG?为什么把FLASHB的数据扔掉了。FLASHB是放在page1的。

  • 点CCS上那只虫子,生成了一个.out,一个.hex。分别用uniflash烧到芯片中。然后用uniflash读出来。.out烧的读出来后FLASHB正常,HEX烧完读出来FLASHB全是FF。

  • 你好,问题解决了,但是疑问没解决。我把CLARAM1挪到PAGE0,存放CLAMath表格的FLASHB也挪PAGE0。就正常了。PAGE1的FLASH不会出现在HEX是什么原因?出现这个问题的原因是FLASHB放在了PAGE1然后表格数据只有.out文件中有,HEX中没有。改完后FLASHB的数据也出现在了HEX。PAGE0放程序,PAGE1放数据啊。我的CMD文件是从C2000Ware拷的,TI自己也是把CLARAM1跟FLASHB放PAGE1。
    求解惑,精神错乱了。感谢

  • 你能确认你是否按照正确的步骤设置了你的示例吗。请参阅此文档。

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/1039/8372.CLAProjectStructureUG.pdf

    您是否也可以尝试使用C2000Ware中提供的CLA示例,看看在通过串行端口闪烁时是否观察到相同的行为。

  • https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/550845/why-lost-data-in-flash-during-converter-out-to-hex-use-lab5b/2014744#2014744
    你好,我找到了类似的问题。说是如果有多个page,page0会写到.hex中,其他page会生成类似xx.i10的文件,所以如果某个扇区放在了page1存放了正弦表格。这个表格并不会出现在.hex文件。这问题真够冷门的,费了好多功夫才找到10年前的帖子有人遇到同样问题。但是TI一直没改。

  • 当你说page1 FLASH没有出现在HEX中时,你是在说二进制图像吗?您能否确认如何生成十六进制文件,以及是否在所有闪存库中生成。听起来HEX的生成并没有捕获.out中存在的表数据。仔细检查HEX,确保图像中存在所有内存和数据。

  • 你好,我确认生成hex的设置是正确的,公司已经这样用了很多年了,第一步使能hex生成的选项勾选,第二步,设置数据宽度为16,第三步选择生成格式intel hex。且这个问题很容易复现,很早的一些帖子也提到这个问题。比如FLASHB放在page1,然后把一个正弦表,或者其他常量数组放到FLASHB。然后编译生成.out跟hex。用uniflash分别把.out跟.hex烧进MCU。然后分别计算校验和就可以复现。或者直接打开hex查看数据就能发现,hex是有数据地址的,FLASHB的数据肯定不会出现在HEX中。十年前的贴子就有人解释过,就是不同page的FLASH会放到不同的文件中,page0放.hex文件,page1放.i10后缀的文件,并且会有警告:“自动生成了i10文件”。
    解决办法也很简单,c2000ware中的cmd文件是默认有两个page:page0,page1。然后c2000ware中的F28035  CLA例程中的CMD文件(我就是拷贝的这个cmd)中FLASHB就是放在了page1。只要删掉page1,所有地址全放在page0,问题就解决了。
    就E2E论坛里有好多人在问了,比如”自动生成xxx.i10警告“"CLAmath唯独CLAsin不能用其他函数正常",就是这个原因。但是知道这个问题的人好像很少。