打印

探讨探讨MCU系统里低功耗的问题

[复制链接]
1899|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Simon21ic|  楼主 | 2015-11-5 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当然,这里只是软件里的低功耗处理,可能会碰到的一些问题是:

1. 各种芯片的低功耗设计都不同,没有同一个的功能逻辑定义
    这个不像SPI等接口,功能逻辑定义都是一样的
2. 应用软件实现低功耗
    应用里,可能有多个任务多个功能,如何协调

一些前提:
要实现低功耗,那势必系统构架不能有类似1ms死循环延时这类的代码
芯片会支持不同的低功耗等级,不同的低功耗模式下,会有不同的外设使能
应用上,应用也可能会需要判断进入哪种低功耗模式

相关帖子

沙发
keer_zu| | 2015-11-5 16:55 | 只看该作者
1. 选低功耗的mcu
2. 外设的休眠与唤醒管理
3. 程序的休眠与唤醒管理


后面请大家补充

使用特权

评论回复
板凳
Simon21ic|  楼主 | 2015-11-5 17:57 | 只看该作者
keer_zu 发表于 2015-11-5 16:55
1. 选低功耗的mcu
2. 外设的休眠与唤醒管理
3. 程序的休眠与唤醒管理

说这个,只是因为最近和别人讨论过一次,他们的做法:
任务需要具备低功耗查询的接口,然后系统在发现没有任务就绪的情况下,询问每个任务最高可以接受的低功耗等级,然后使用最合适的等级休眠。
当然,应用代码也需要当前状态,判断外设是否需要运行。

使用特权

评论回复
地板
keer_zu| | 2015-11-6 08:14 | 只看该作者
Simon21ic 发表于 2015-11-5 17:57
说这个,只是因为最近和别人讨论过一次,他们的做法:
任务需要具备低功耗查询的接口,然后系统在发现没 ...

功耗敏感设备的设计是个技术活

使用特权

评论回复
5
Simon21ic|  楼主 | 2015-11-6 12:50 | 只看该作者
yyy71cj 发表于 2015-11-6 09:48
MCU系统低功耗涉及了软硬件等很多方面,程序控制只是一部分。希望楼主能全面来个解析…… ...

硬件上要考虑的东西就很多了,上拉下拉都要考虑
甚至会考虑用IO口控制上下拉,以避免漏电流

不过这里主要讨论软件吧,毕竟是软件相关的子论坛

使用特权

评论回复
6
keer_zu| | 2015-11-6 13:57 | 只看该作者
其实不同的低功耗产品,侧重点合适实施办法都不也一样的。

使用特权

评论回复
7
Simon21ic|  楼主 | 2015-11-6 17:38 | 只看该作者
本帖最后由 Simon21ic 于 2015-11-6 17:48 编辑
keer_zu 发表于 2015-11-6 13:57
其实不同的低功耗产品,侧重点合适实施办法都不也一样的。

是的,需求确实都不同的,不过软件上,确实有不同的实现方式。
之前说了我的一个朋友那边的实现方式,就是询问每个任务可以接受的休眠等级,然后综合计算出最优的修休眠等级。
比如,任务A开启了AD转换,那么任务A可以接收的休眠等级中,就不能关闭AD。其他任务,可以接受的休眠等级都不相同。

但是,问题是,任务A要知道哪个休眠等级是对于自己来说最适合的,这就会碰到一个问题。
任务需要知道自己是运行在哪个处理器上,因为不同的处理器,低功耗的设计部分可能都不同。
然后,他们的构架中,也具备芯片外设的抽象层,相当于stm32的库,当然,功能更强而已。
我自己的构架中,也同样具备芯片外设的驱动库,不同的芯片,SPI等这类标准外设都已经抽象为一个同一个的接口了。
这种好处就是换芯片就和换衣服一样(前提是目标芯片的驱动都已经开发好)

在这个基础上,我们软件中低功耗的实现,需要应用层介入的部分就很少了。
原理是,既然底层驱动是和芯片相关的,那么低功耗部分也是在底层驱动里,就可以知道芯片目前已经使用了那些资源。
这样,进入低功耗模式的时候,可以自动进入最优的低功耗模式。
比如前面那个例子,如果高层应用开启了ADC(通过调用底层的通用ADC接口来实现),那么底层代码就能够知道ADC已经开启,这样,就可以选择当前芯片在当前资源使用情况下的最优的休眠等级。
而应用层里的各个任务,完全不需要关心这些细节,只要在适合的时候使用资源,在适合的是否关闭资源就行。

这个的好处是,低功耗对于应用来说,几乎透明,开发的代码,自然就是符合低功耗要求的。
当然,这个也只是一种方法而已,欢迎大家介绍其他的方法。

使用特权

评论回复
8
Simon21ic|  楼主 | 2015-11-6 19:42 | 只看该作者
本帖最后由 Simon21ic 于 2015-11-6 19:45 编辑
yyy71cj 发表于 2015-11-6 18:31
软件依赖硬件,软件与硬件也不是一刀切的关系,只要能把问题阐明清楚,该说还是得说的,例如什么样的工艺 ...

你的意思是,不能从软件角度讨论低功耗?
限定同一个硬件,不同的软件,功耗也会不同的。所以,一些软件构架做低功耗,都只是从软件角度来说的。
这里不是关于软件的论坛吗?
另外,这个不是一刀切的问题,一个问题,可以从不同角度去分析,从芯片工艺的角度,那就是一些LP的工艺。
还可以从硬件角度分析,还有软件角度。
如果说到工艺,我推荐一个芯片,那可能还会被误以为打广告呢。

使用特权

评论回复
9
keer_zu| | 2015-11-9 08:32 | 只看该作者
yyy71cj 发表于 2015-11-6 23:01
看来这瓜田李下,很难说话呀

什么是瓜田李下?和花前月下有啥区别?:L

使用特权

评论回复
10
keer_zu| | 2015-11-11 09:40 | 只看该作者
yyy71cj 发表于 2015-11-9 17:37
有!瓜田李下是什么事都不能做,做了唯恐出错;花前月下是什么事都能做,不做唯恐出错…… ...

精辟;P

使用特权

评论回复
11
keer_zu| | 2015-11-13 08:38 | 只看该作者

使用特权

评论回复
12
keer_zu| | 2015-11-16 08:40 | 只看该作者
yyy71cj 发表于 2015-11-14 08:37
是啊,经常一不小心,就睡晚了

彼此

使用特权

评论回复
13
keer_zu| | 2015-11-16 08:47 | 只看该作者
yyy71cj 发表于 2015-11-16 08:44
同是天涯攻城虱,各行其路多珍重

不是写代码很晚,最近苏州上班,老是被群租隔壁小两口半夜吵醒。:L

使用特权

评论回复
14
keer_zu| | 2015-11-16 17:47 | 只看该作者
yyy71cj 发表于 2015-11-16 17:45
现在的年轻人都这么猛了???

年轻,就是任性,不服不行。:lol

使用特权

评论回复
15
keer_zu| | 2015-11-17 08:22 | 只看该作者
yyy71cj 发表于 2015-11-17 07:16
要不你也把老婆带上,弄点大动静让人家听听?

老了,不比当年了,余哥应该有体会,年龄不饶人啊。

使用特权

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

本版积分规则

266

主题

2597

帖子

104

粉丝