[软件资料] 通过优化代码提高MCU运行效率

[复制链接]
60|1
forgot 发表于 2025-10-9 16:59 | 显示全部楼层 |阅读模式
编译器优化
熟悉并合理使用编译器优化选项,如GCC的 -O2, -Os。
-O2:侧重于速度优化。
-Os:侧重于代码大小优化,有时对缓存更友好,反而更快。
将常用函数声明为 inline,减少函数调用开销。
使用 const 和 volatile 关键字,帮助编译器进行更好的优化。

数据类型选择
使用与MCU字长匹配的数据类型。在32位MCU上,int 和 uint32_t 的处理效率通常最高。
避免在32位MCU上频繁使用8位char类型进行算术运算,因为可能需要符号扩展和截断。
谨慎使用浮点数,如果必须用,尽量用float而非double,并考虑使用定点数运算替代。

算法与数据结构
选择时间复杂度低的算法。
根据访问模式选择数据结构。频繁查找用哈希表,有序数据用二叉树等。
查表法:对于复杂的数学计算(如sin, log),或者协议解析,预先计算好结果存于数组中,用空间换时间。

内存访问优化
充分利用缓存:如果MCU有Cache,尽量保证代码和数据的局部性,即让相关的数据在内存中连续存放。
避免内存碎片:在动态内存分配受限的系统中,尽量使用静态分配。
对齐访问:保证数据在内存中的地址按照其类型自然对齐,非对齐访问在某些架构上非常慢甚至会导致异常。

函数设计
减少函数调用深度。
参数尽量少,通常4个以内可以通过寄存器传递,效率更高。

AdaMaYun 发表于 2025-10-10 13:19 | 显示全部楼层
参数尽量少,通常4个以内可以通过寄存器传递,效率更高
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2115

主题

14686

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部