keil 优化器 惹得祸?

chenpeng1210   2008-11-6 10:33 楼主
事情是这样的,我使用keil编写代码,目的是对flash进行擦写读的操作。调试的时候是分阶段调试的。就是先调试擦,在调试写和读。现在各个操作可以分别独立运行了。但是在整合到一起的时候出了问题。问题是:
1、擦操作使用keil的优化器为0或者1。
2、写和读用的优化器是8,而且写和读只能在8下运行。
我将1复制到2的工程里。但是1在优化器8方式下不能工作。而2只能在优化器8下工作。这就形成了一个矛盾。两个不兼容,不能一起执行。请大家帮忙看看。谢谢

另:我已经将优化器调成0了,也不行。读和写的操作只能工作在优化方式8下。很奇怪啊。

回复评论 (5)

你的分析不是很令人信服, 估计与优化没有直接的关系。

如果不优化都没法工作,估计还是代码的问题。调试时候CPU的行为和正常运行时有较大的差异。
具体的不好说, 你可以看看相关文档。
点赞  2008-11-6 12:42
这个不成功,多半是代码的耦合问题

呵呵

还有就是变量的存放空间,在多处访问的变量间用volatile声明一下

然后,还可以看看多个模块点的接口应用模式

然后再重新修正设计,看看
点赞  2008-11-6 13:48
优化肯定会有影响,我为这事折腾了两天,本来我的代码空间只剩下了几十个字节,又要增加新功能,于是选了 9 和 favor size,结果代码不能在两种极相似的芯片上兼容,这两种芯片一种带国密算法,一种不带,带来的影响不是能不能调用这个算法,而是芯片根本就不工作。
点赞  2008-11-6 20:28
学习
点赞  2008-11-7 15:20
不知道,以前和你遇到的问题差不多。后来莫名其妙好了。郁闷中,估计是代码的写法。

真要想要节省点空间,你还可以把那个global register coloring 勾选。但是结果怎么样还要好好测试之后才能定下来。

用的是STC的片子。
点赞  2009-6-22 17:01
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复