硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1336|回复: 2
收起左侧

[embOS] SEGGER博文,RTOS低功耗问题

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-11-18 08:36:53 | 显示全部楼层 |阅读模式
文章主要谈到了两点,一个是如果程序里面有等待的地方,推荐设为定期查询或者Delay函数等待,将CPU权释放,不让CPU一直干活
  1. //
  2. // Wait until data is ready
  3. //
  4. while (NAND_FLASH_BUSY);    // Keep reading the busy signal until data is ready
复制代码


还有一个是空闲任务里面设置新的主频时间,这里他们举了一个Zynq例子(SEGERR的JLINK PRO,J-Trace,Flasher等都是Zynq做的)。

降低主频来降低功耗。这种方式,我觉得有个麻烦的地方,空闲任务里面你降低了主频,那么唤醒后就要重新恢复时钟的繁琐问题,还有就是帖子里面谈到的降低主频就意味着降低对外部环境的响应变慢。

Saving power in embedded systems – Reducing idle CPU speed - SEGGER Blog


  1. OS_Idle(void) {
  2.   for (;;) {                  //  Endless loop. Only way out is via interrupt and RTOS scheduler.
  3.     HW_CPU_SetIdleSpeed();    //  Implemented in a hardware layer, usually only a single write to an sfr to change the clock divider
  4.     __wfi();                  //  Wait for interrupt. Execution continues after the interrupt.
  5.   }
  6. }
复制代码


回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2021-11-20 15:49:44 | 显示全部楼层
低功耗设备就是这样做的,我开发nordic蓝牙芯片,任务都处于阻塞状态,进入IDLE模式,关闭HSE,使用LSE 32.768kHz进行任务计时,中断或定时到达后,立刻切换HSE时钟执行,结束后再次进入IDLE状态。这样能做到很低的功耗。至于响应时间,那要看具体做什么方面的应用了,追求低功耗的设备响应时间都要求不搞,us--ms级的足够了。追求极致的响应速度的,恐怕也不会太在乎功耗。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2021-11-20 17:18:21 | 显示全部楼层
xiangxiaowei 发表于 2021-11-20 15:49
低功耗设备就是这样做的,我开发nordic蓝牙芯片,任务都处于阻塞状态,进入IDLE模式,关闭HSE,使用LSE 32. ...

是这样的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 03:16 , Processed in 0.236184 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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