[技术求助] 都有哪些方法降低软件功耗啊

[复制链接]
1673|54
| 2018-2-13 11:09 | 显示全部楼层
用查表的方法代替实时的计算,尽量减少CPU的运算量。特别是在没有硬件浮点处理单元的MCU进行浮点处理时,直接用MCU进行浮点处理将会消耗大量的时间。将一些运算的结果预先算好,放在Flash中,用查表的方法替代实时的计算,减少CPU的运算工作量,可以有效地降低CPU的功耗。很多微处理器都有快速有效的查表指令和寻址方式,用于优化查表算法,这种处理方法在离散余弦变换和AD数据采集中能够了带来可观的效率提升。
| 2018-2-13 11:12 | 显示全部楼层
对于不可避免的实时计算,应注意计算的精度,算到精度够了就应立即结束,避免“过度”的计算。在精度允许的情况下,使用简单函数代替复杂函作近似运算,也是减少功耗的有效方法
| 2018-2-13 11:14 | 显示全部楼层
尽量使用短的数据类型,如尽量使用字符型的8位数据代替16位的整型数据。
| 2018-2-13 11:19 | 显示全部楼层
还有就是尽量使用分数运算而避免浮点运算
| 2018-2-13 11:23 | 显示全部楼层
用移位运算代替乘除运算。采用MCU计算乘除也是非常耗时的,如果采用左移和右移的办法来实现乘除法运算,将会减少运算时间,注意,除法的移位计算只能针对除数比较特殊的情况。
| 2018-2-13 11:27 | 显示全部楼层
采用快速算法。在搜索算法中,使用二分搜索法和分段查找算法的效率是不同的,从理论上可以估算,在1024个测量值的查找中,二分搜索最坏情况下10将可以查找到结果,顺序搜索最坏可能需要1024次。这在测量数值更多的情况下更为突出,一个高效率的查找算法有助于减少程序的运行功耗。
| 2018-2-13 11:29 | 显示全部楼层

数字信号处理中的运算,采用FFT和快速卷积等,可以节省大量运算时间
| 2018-2-13 11:33 | 显示全部楼层
一个程序使用中断方式还是查询方式,对于很多应用来说并不是那么重要,但在软件低功耗设计特性上却相差甚远。能用中断就用中断,不要用采询方式
| 2018-2-13 11:35 | 显示全部楼层

采用定时器,在程序中可以采用软件延时,但是,如果系统的定时器资源充裕,在需要定时的场合,最好采用硬件定时器,当定时器到定时后,向MCU发出中断请求信号。
| 2018-2-13 11:38 | 显示全部楼层
用宏代替子程序。在程序执行过程中,读RAM需要比读Flash更大的功耗,宏是在编译器预处里阶段进行替代,而在子程序的调用中MCU需要进行现场保护。在一次子程序调用中,因为CPU进入子程序时会首先将当前的CPU寄存器压栈,返回时出栈,这样最少有两次的RAM操作。对于程序设计来说,调用一个子程序还是一个宏,在程序写法上并没有什么不同,但宏会在编译时展开,CPU只是顺序执行指令,避免了调用子程序,唯一的问题是增加了代码的长度(代码量)。但现在的单片机的Flash一般都够用。
| 2018-2-13 11:41 | 显示全部楼层

总的指导思想就是让cpu少工作,多休眠。
| 2018-2-13 11:44 | 显示全部楼层
精简代码,减少执行代码指令,让cpu完成相同的工作执行更少的代码,降低功耗
| 2018-2-13 11:48 | 显示全部楼层
你是说执行的次数吗?
| 2018-2-13 11:51 | 显示全部楼层

使用汇编语言还可以的。
| 2018-2-13 11:55 | 显示全部楼层
将运算的结果预先算好,放在Flash中,尽量减少CPU的运算工作量
| 2018-2-13 11:57 | 显示全部楼层

软件功耗,软件有什么功耗呢?
 楼主 | 2018-2-13 12:00 | 显示全部楼层

嗯,预料中的结果,先结贴吧,多谢大家啦
| 2018-2-14 21:02 | 显示全部楼层
选择低功耗的MCU
| 2018-2-14 21:02 | 显示全部楼层
尽量降低器件的工作频率
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表