打印
[N32G45x]

提高代码在flash中的执行效率

[复制链接]
366|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sy12138|  楼主 | 2022-10-10 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#每日话题# #技术资源#今天给大家分享以下如何提高代码在flash中的执行效率


在电机控制算法、加密算法等应用场景,会希望代码可以高效率执行。一般提高代码执行效率有以下几种方法:
  • 代码编写优化。编码时注意代码简洁高效,需要高效率的地方使用汇编编写。
  • 编译器优化。编译器优化等级设置最大优化,同时选择优化代码执行时间。
  • 提高芯片系统主频。
  • 使用芯片提高代码执行效率的功能。

前三种是比较通用的方法,现在介绍一下第四种方法:使用N32G45x的内置功能,提高代码在flash中的执行效率
实现这种方式用到的功能有:
  • flash中的指令预取
  • iCache
其中指令预取主要适用于:程序中地址连续执行,程序无间断运行,中间未发生子程序调用、跳转等情形;而指令缓存器iCache主要适用于主程序循环执行,代码量小于iCache的容量;

接下来就是重点了,在不同应用场景下指令预取和iCache该如何组合使用呢?
  • 使能指令预取,使能iCache
      使用场景:代码量大于iCache容量,有较多反复执行的字段,跳转指令多,函数内连续指令执行多
   2. 除能指令预取,使能iCache
      使用场景:主程序小于iCache容量,程序反复执行

   3. 使能指令预取,除能iCache
      使用场景:程序中地址连续运行,中间无跳转或很少跳转
在系统初始化中一般都是默认打开了指令预取和iCache
FLASH->AC |= (uint32_t)(FLASH_AC_ICAHEN | FLASH_AC_PRFTBFEN);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

404

帖子

12

粉丝