#每日话题# #技术资源#今天给大家分享以下如何提高代码在flash中的执行效率
在电机控制算法、加密算法等应用场景,会希望代码可以高效率执行。一般提高代码执行效率有以下几种方法:
- 代码编写优化。编码时注意代码简洁高效,需要高效率的地方使用汇编编写。
- 编译器优化。编译器优化等级设置最大优化,同时选择优化代码执行时间。
- 提高芯片系统主频。
- 使用芯片提高代码执行效率的功能。
前三种是比较通用的方法,现在介绍一下第四种方法:使用N32G45x的内置功能,提高代码在flash中的执行效率
实现这种方式用到的功能有:
其中指令预取主要适用于:程序中地址连续执行,程序无间断运行,中间未发生子程序调用、跳转等情形;而指令缓存器iCache主要适用于主程序循环执行,代码量小于iCache的容量;
接下来就是重点了,在不同应用场景下指令预取和iCache该如何组合使用呢?
使用场景:代码量大于iCache容量,有较多反复执行的字段,跳转指令多,函数内连续指令执行多
2. 除能指令预取,使能iCache
使用场景:主程序小于iCache容量,程序反复执行
3. 使能指令预取,除能iCache
使用场景:程序中地址连续运行,中间无跳转或很少跳转
在系统初始化中一般都是默认打开了指令预取和iCache
FLASH->AC |= (uint32_t)(FLASH_AC_ICAHEN | FLASH_AC_PRFTBFEN);
|