CCS编译优化与volatile
来源:互联网 发布:linux怎么解压rar文件 编辑:程序博客网 时间:2024/06/08 06:10
开发环境:CCS3.1,DM642开发板
在保存几百K的数据参数时,因为擦写Flash的时间较长,擦写过程中没能喂看门狗而导致系统重启,写数据失败。于是我考虑改写Flash的擦写函数,在擦写过程中加入喂狗函数。我在bsl源码中找到了EVMDM642_FLASH_write()和EVMDM642_FLASH_erase(),拷贝到我的工程,修改了函数名,编译后用仿真器加载Debug版测试通过,而后将Release版烧写到DSP上测试,却发现根本没有擦写过一个字节。
参考了张进东的博客“CCS优化编译引起的问题”,才知道编译优化引起的问题。但是将整个工程的Opt Level设为None还是比较可惜的,因为Opt Level = File确实对程序的执行速度优化了。解决方法有两个:
1. 对函数中所有变量加volatile(推荐)
例如将
*((Uint8 *)EVMDM642_FLASH_BASE+0xAAA) = 0xaa;
改为
*((volatile Uint8 *)(EVMDM642_FLASH_BASE+0xAAA)) = 0xaa;
2. 将函数放入单独的文件中,将该文件的“File Specific Options –> Compiler”的Opt Level设为None
- CCS编译优化与volatile
- CCS编译优化与volatile
- volatile与编译器优化
- volatile,编译优化,const变量
- IAR踩坑:优化与volatile
- CCS编译链接库文件与头文件
- ccs代码优化
- CCS 之优化
- ccs下编译opencv
- CCS 编译出错
- ccs编译.lib
- volatile与barrier指令阻止过度优化
- volatile与编译器代码优化浅析
- Volatile与编译器代码优化浅析
- CCS与Matlab
- CCS 3.3 编译 DM365 ubl
- CCS编译生成二进制文件方法
- 关于volatile关键字在编译过程中的优化
- 继承HibernateDaoSupport实现DAO(spring整合hibernate)
- makefile
- 慎用TCP的选项SO_LINGER
- TCP检测连接非正常中断
- MyEclipse中消除frame引起的“the file XXX can not be found.Please check the location and try again.”的错误
- CCS编译优化与volatile
- Singleton模式小探
- 调用dll文件的方法
- webwork+spring 配置异常---持续更新
- Oracle层次化查询(递归查询)
- 最想念的季节
- 数据库连接串
- DEMO:拼图游戏
- Java反射机制练习题