伺服控制,我把电流环算法放在了CLA中,其余的位置,速度和通信等程序全都在CPU中
CCS属性中的优化等级: Optimization Level(-opt_level,O)选择 2-Global Optimizations ,Speed vs.size trade-off 选择 3
程序一直正常运行,但有一天,当我在CLA中加入了一句无足轻重的语句之后,比如:
long china, 注意,我只是定义了一个根本没有用到的变量,或者 我在原先正确的程序中更换了某两句话的前后顺序(逻辑上这两句话谁先谁后都行)
CLA运行一段时间就会崩溃,系统提示电流控制错误。
不是不能运行,是1-5min内必然报错
针对以上现象,我做了下面的尝试:
(1)检查CMD空间,对照map文件也检查了,也试过直接使用官方cmd文件,没有效果
(2)CPU和CLA之间的互传空间都充足
(3)使用最新CCS10.4与最新编译器版本20.2.5
都无果。
直到最后我想起来优化等级的事情,我把 Optimization Level(-opt_level,O)选择 0,其他什么都没有动,就正常了!
我想问:
(1)这种情况如何解释?
(2)这个现象就比较烦人,优化程序开高后,也不是不能运行,是一段时间就报错。而且你不知道在CLA中哪里加了一句话,多了一个空格,就会引爆这颗定时炸弹。
(3)我把优化等级降下来后,实测程序一遍运行下来耗时将增加8us,这是我不希望的。我想咨询一下,有没有一种操作可以把主CPU和CLA中的优化等级分开,分别设置?
在CPU中我使用较高的优化等级以提升程序速度,在CLA中使用较低的优化等级,甚至不优化以提升运行可靠性?