wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商嵌入式系统能耗优化,移动互联网和物联网等产业的快速发展,使嵌入式系统的能耗管理技术成为研究和用热点。能耗管理策略和案已经成为嵌入式系统软硬件设计中的一项重要内容。本文将分析嵌入式系统的能耗模型和能管理技术,wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商讨论嵌入式系统能耗管理方法。
嵌入式系统能耗估计
如图7.1 所示,嵌入式系统包括处理器和板上器件。系统工作时总能耗是处理器能耗与板上所有器件的能耗之和。
根据能量计算公式,能量 E 与功率 P 和时间 T 的关系如下:
E= P x T (8.2)
器件功率 P 由静态功率 Ps和动态功率 Pd组成,动态功率通常远大于静态功率。处理器或其他器件上电后处于不工作状态时的功率为静态功率。例如,串口没有数据传输、存储芯片没有被访问,以及处理器处于睡眠状态时的功率就是静态功率。处理器运行程序和器件处于工作状态时增加的功率称为动态功率。总功率表示如下:
P= Ps + Pd (8.3)
为了有效管理嵌入式系统的能耗,处理器内核通常支持多级功率模式。例如S3C2410 ARM 处理器支持正常(Normal)、低速(Slow)、空闲(Idle)三种工作状态正常状态功率大,空闲状态时只有静态功率。wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商处理器内部外设和板上器件通常支持静态和动态两种工作状态。如果处理器能够控制板上器件的供电和工作时钟,则可以管理系统中处理器芯片以外的器件的功耗状态。
程序运行期间,处理器可能处于正常运行状态、低速运行状态或者空闲状态,外部器件也可能处于静态和动态工作状态。设某程序运行时间为 Ttotal,处理器的静态以耗为Pcs,处理器K 个动态功耗状态的功耗为 Pkcd,系统中 N 个外部芯片的静态功耗为Pnps、动态功耗为 Pnpd。如果程序运行期间处理器处于k状态的时间为Tkc,第n器件处于动态状态的时间为Tnp,则系统运行程序时总的能耗 Etotal如下;
Etotal=Ttotal x (Pcs + Pnps ) + (Tkc x Pkcd) + (Tnp x Pnpd) (8.4)
式(8.4)中,一项是系统的静态能耗,一项是处理器的动态能耗,第三顺是处理器外部器件的动态能耗。
从式(8.4)可见,优化系统能耗的途径是减少程序运行时各芯片动态工作的时间,以及降低芯片的动态功耗。
嵌入式系统能耗优化
减少器件动态工作时间和动态功耗是程序中优化系统功耗的主要途径。在程序运行过程中,wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商处理器根据任务中的计算负担以及所需要使用外设和外部器件的情况,选择自身工作时的功耗模式,控制外设和外部器件的工作状态。
1.处理器能耗优化
(1)工作频率调整
数字电路的功耗与时钟频率成正比。降低处理器的工作频率,可以降低处理器的功率。处理器的时钟控制和管理单元提供了改变工作频率及管理处理器内各部分时钟的手段。例如,处理器通过查询方式访问慢速外设时,可以降低处理器的工作频率,这样能减少处理器功耗,但不影响程序运行的结果。
(2)工作电压调整
数字电路的功耗与工作电压的平方成正比。降低处理器的工作电压,能够降低其功率。wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商GD32VF103 处理器的时钟控制和管理单元提供了改变工作电压的方法一些其他处理器也可以通过程序调整工作电压。当处理器计算负担比较轻时,降低处理器工作电压,可以降低系统的动态和静态能耗。
(3)睡眠(Sleep)状态管理
如图 8.7 所示为某处理器不同功耗的状态图。系统复位后,处理器进入正常(Normal)功耗状态,功率大。如果在正常状态时将控制位IDLE BIT 置1,则处理器进入空闲状态。如果在正常状态时将控制位 SLEEP_BIT 置1,则处理器进人睡眠状态。外部中断唤醒处理器,从空闲状态或睡眠状态回到正常状态。由于在睡眠状态下关闭了更多内部功能单元,所以能够把处理器从睡眠状态下唤醒的中断源数目较少。
当处理器需要等待时,通过设置处理器内部特殊寄存器,或使用处理器的专有指令,可以使处理器进入空闲或睡眠状态,减少处理器动态运行的时间,降低能耗。
目前,主流嵌入式处理器都拥有多个功耗状态,但不同处理器的状态数量和管理方法有所差别。
(4)内部功能设置
处理器内部集成了总线控制器、定时器、中断控制器、ROM、RAM 以及多种外设。wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商处理器内部时钟管理单元为各功能模块提供驱动时钟。关断所选定功能单元的驱动时钟,可以使该功能单元进入静态功耗模式。另外,一些处理器内置电源管理单元,能够控制内部功能单元的供电状态。
在程序运行时,处理器利用内部时钟控制器或电源管理单元,停止处理器内部未被使用功能单元的驱动时钟或供电,降低处理器的动态功率,降低系统能耗。
IDLE_BIT=1
---> (IDLE)
<----
INT,EINT,RTC
(RESET)
SLOW(SLOW_BIT=1) --->
<--- NORMAL(SLOW_BIT=0 <--- EINT RTC
---> (SLEEP)
SLEEP_BIT=1
图8.7 处理器功耗状态图
2.外部芯片能耗优化
(1)电源控制
在系统电路板上芯片的电源输入端与电源之间连接开关器件,wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商通过处理器 I/O引脚控制芯片的供电状态。程序运行时,关断系统板上所有不需工作芯片的电源,使这些芯片的功耗为零,降低系统能耗。
(2)片选管理
一些外部芯片,例如存储器、ADC、DAC 以及通信接口等,具有片选引脚。当该引脚有效时,器件被选通,进人工作状态。当该引脚无效时,器件进入静态功耗状态将外部芯片的片选端与处理器的 I/O引脚相连,在不能控制外部芯片电源的情况下,通过片选信号使未工作的芯片进入静态功耗状态,降低系统能耗。
(3)访问控制
存储器和通信接口等芯片的功耗与被访问状态和传输状态有关。在没有数据访同时,SRAM 的功耗远低于动态功耗。wifi ble二合一芯片esp32 c2量产乐鑫方案深圳代理商在没有数据传输时,网络接口芯片的功耗同样远低于其动态功耗。因此,在程序中优化对存储器、通信接口等设备的访问方式,以及减少访问时间和次数,能够降低系统能耗。在示例 8.12(a)中,将长度为 L的数组array 成员值进行累加,然后把总和存人内存的 ptotal 位置。在(a)中,每一次循环需要读、写内存各 1次。如果将(a)改成(b),循环过程中将累加结果保存在寄存器中,循环结束后 1次性地将数据写人内存。修改后的程序减少了读/写内存的次数从而降低了程序执行过程中的 SRAM 的能耗。
示例8.12: 改进存储访问。
(a)
for(i = 0;i< L;i++)
{
*ptotal +=*array++ ;
}
---------------------------------------------------------------------
(b)
register int temp = * ptotal;
for (i = 0;i<L;i++)
{
temp +=*array ++;
}
* ptotal = temp;
3.程序优化
在 之前介绍的一些常用程序优化方法中,那些既减少程序执行时间,又减少程序中所使用存储空间的方法,同样能够降低程序执行过程中处理器的能耗。