当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 任何拥有笔记本电脑的人都会察觉,当依靠电池供电时,其便携设备的行为与使用交流主电源供电时不同——显示屏变暗、处理器的时钟变慢、系统只要有可能就会转入待

 任何拥有笔记本电脑的人都会察觉,当依靠电池供电时,其便携设备的行为与使用交流主电源供电时不同——显示屏变暗、处理器的时钟变慢、系统只要有可能就会转入待机或睡眠状态。PDA用户也发现,在停止使用一段时间后显示屏将变暗,设备甚至进入睡眠状态。蜂窝电话用户也已经注意到,背景光和按键照明在完成拨号之后会熄灭。事实上,这些可见行为的背后是软硬件技术和节电机制在发挥作用。

全速运行、待机和睡眠等宏观行为利用CPU的固有能力通过降低工作电压或时钟频率来节省功耗。除了全面地改变系统状态外,大多数设备用户察觉不到的是,实际的电源管理也能够逐渐地改变系统状态,这种情况在一秒之内可以发生数百次。

任何动态电源管理策略的基础都是调整便携式设备中一个或多个处理器内核的工作电压和频率,此外,在高集成度的PowerPC、ARM和基于x86的系统中经常包含一个DSP或智能基带处理器。的确,诸如英特尔的Strongarm和XScale处理器、TI的OMAP处理器系列以及IBM的PowerPC 405LP和Transmeta Crusoe等CPU都提供内核电压和频率的动态调节功能。不过,现代的嵌入式处理器具有非常高的电源效率,以至于CPU并不总是最主要的耗能器件,其它高耗能的器件包括高性能存储器、彩色显示器和射频接口等。因此,如果动态电源管理系统只能调节处理器内核的电压和频率,那么它的用途将有限。

一个真正有用的动态电源管理方案应该可以采用与CPU内核运行相协调或相独立的方式,支持对一系列电压和时钟的快速调节。

DPM架构

两个现有的电源管理方案分别来自于PC和笔记本电脑领域:一个是传统的高级电源管理(APM)方案,它目前仍然使用在许多基于Linux的便携设备中,但在基于微软操作系统的笔记本电脑和手持设备中已经被逐步淘汰;另一个是高级配置和电源接口(ACPI)方案,它是英特尔、东芝和其他一些公司支持的现行标准。在PC、笔记本电脑、服务器、甚至刀片式通信设备等商业硬件中,类似ACPI的系统是人们的首选,但它强烈依赖于流行的x86/IA-32 BIOS 架构。

嵌入式系统通常没有类似于PC中的BIOS,而且通常不具备那么高的机器抽象水平,能够把操作系统与低层次的设备和电源管理活动隔离开来。与其它瞄准电池供电应用的操作系统类似,在嵌入式Linux中,电源管理活动需要对操作系统内核和设备驱动程序进行特殊的干预。不过,需要重点强调的是,虽然低层次的动态电源管理是驻留在操作系统内核中,但电源管理策略和机制是来源于中间件和用户应用代码。

接口和API

理想的电源管理系统应尽可能对更多软件堆栈层达到几乎完全透明的程度。事实上,这是Transmeta公司在其Crusoe架构中所遵循的路线,而且已经成为基于BIOS的现有电源管理方案追求的目标。然而,具备手持设备设计经验的开发人员证实,系统内部各部分之间需要某种程度的直接合作,具体描述如下:

内核接口

在面向Linux的DPM架构中,内核中的DPM子系统负责维持整个系统的电源状态,并把DPM系统的不同电源管理模块联系在一起。如果内核的任何其它部分需要与DPM直接对话(尽管这种情况相对较少),那么最好把DPM看成是为驱动程序、中间件和应用程序提供服务的元素。

驱动程序接口

支持DPM功能的设备驱动程序比默认的驱动程序更了解系统状态:它们在外部事件的驱使下通过设定不同的状态来反映或遵循那些操作机制,或者通过来自内核 DPM子系统的调用来反映或遵循那些操作机制。为了实现更精确的机制决策,驱动程序API也允许驱动程序注册与它们接口或由它们管理的那些设备的基础操作特征。

应用程序API

应用程序可以分为三类:

*电源管理知会型(PM-aware)应用程序

*在电源管理知会“包裹器”中的传统应用程序

*不带有电源管理的传统应用程序

电源管理知会型应用程序能够利用机制管理器提供的API,建立其基本的约束条件,并强迫电源管理机制发生与其执行需求相匹配的变化。不直接带有电源管理能力的传统应用程序能够被“包裹”在代码或补丁中,以达到较高的效率,但它们也能够根据更大范围的默认机制管理,按默认的行为运行。

在嵌入式Linux DPM下的实际机制包括以下API,如dpm_set_os()(内核)、assert_constraint()、remove_constraint ()和set_operaTIng_state()(内核和驱动程序)、set_policy()和set_task_state()(经系统的用户级调用)以及/proc接口。

对实时性能的影响

迄今为止,调整CPU电压和频率对系统的实时性能而言依然是一个重大挑战。任何参数的改变都将导致系统不稳定,重新锁定锁相环和其它动态时钟机制也需要相应的时间,这两个因素将使系统的响应出现长延时(有时达到数十毫秒),在此期间,CPU既不能执行计算操作,也不能对外部事件(中断)做出响应。

TI的 OMAP、英特尔的Xscale和IBM的PowerLP等嵌入式处理器能够在十几毫秒的延时内调整频率,在数十毫秒的延时内改变电压,而且所有这些动作都不会中断系统的操作,从而允许实现更大胆和更精确的节电机制。例如,在处理MPEG视频帧或IP语音包的过程中可以降低电压和频率。

实时性能面临的一个更普遍的挑战是,如何在睡眠模式期间对中断做出响应。虽然通过编程,大多数片上外围元件在收到中断之后都可以唤醒系统,但开发者必须谨慎地定义用于唤醒设备的机制,并把整个系统的延时和存储器类别考虑在内,以确保处理中断的执行时间和用户空间对事件的响应(优先延时)。

向嵌入式Linux发展的趋势

理想情况下,用户既无需知道也无需关心支撑其手持设备的底层操作系统。现在,设备制造商对操作系统有了更多的选择余地。虽然微软一直非常重视品牌,但 Windows系列操作系统进入手持设备市场(如蜂窝电话)的规模却落后于Symbian和Brew,也落后于嵌入式Linux。设备制造商转向 Linux的原因之一是可以利用标准的电源管理技术替代专有技术,这样既能达到更快的上市时间,同时又能满足终端用户和运营商的技术需求。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

多数受访粉丝认为,AI驱动的功能会对他们观看体育赛事的方式产生重大影响 超过半数的受访者希望通过AI技术获得对过去、现在和未来体育赛事的评论和分析 移动体育应用...

关键字: IBM AI 应用程序 移动

CPU亲和度通过限制进程或线程可以运行的CPU核心集合,使得它们只能在指定的CPU核心上执行。这可以减少CPU缓存的失效次数,提高缓存命中率,从而提升系统性能。

关键字: Linux 嵌入式

在万物互联的M2M(机器对机器)通信时代,终端设备的能效优化已成为决定其应用广度的核心要素。据行业数据显示,超过70%的M2M场景(如环境监测、智能物流)依赖电池供电,且设备部署后往往难以进行维护充电。传统静态电源管理方...

关键字: M2M 动态电源管理

在Linux系统性能优化中,内存管理与网络连接处理是两大核心领域。vm.swappiness与net.core.somaxconn作为关键内核参数,直接影响系统在高负载场景下的稳定性与响应速度。本文通过实战案例解析这两个...

关键字: Linux 内存管理

对于LLM,我使用b谷歌Gemini的免费层,所以唯一的成本是n8n托管。在使用了n8n Cloud的免费积分后,我决定将其托管在Railway上(5美元/月)。然而,由于n8n是开源的,您可以在自己的服务器上托管它,而...

关键字: 人工智能 n8n Linux

在Linux系统管理中,权限控制是安全运维的核心。本文通过解析/etc/sudoers文件配置与组策略的深度应用,结合某金融企业生产环境案例(成功拦截98.7%的非法提权尝试),揭示精细化权限管理的关键技术点,包括命令别...

关键字: Linux 用户权限 sudoers文件

Linux内核中的信号量(Semaphore)是一种用于资源管理的同步原语,它允许多个进程或线程对共享资源进行访问控制。信号量的主要作用是限制对共享资源的并发访问数量,从而防止系统过载和数据不一致的问题。

关键字: Linux 嵌入式

在云计算与容器化技术蓬勃发展的今天,Linux网络命名空间(Network Namespace)已成为构建轻量级虚拟网络的核心组件。某头部互联网企业通过命名空间技术将测试环境资源消耗降低75%,故障隔离效率提升90%。本...

关键字: Linux 云计算

在Linux内核4.18+和主流发行版(RHEL 8/Ubuntu 20.04+)全面转向nftables的背景下,某电商平台通过迁移将防火墙规则处理效率提升40%,延迟降低65%。本文基于真实生产环境案例,详解从ipt...

关键字: nftables Linux

在Linux设备驱动开发中,等待队列(Wait Queue)是实现进程睡眠与唤醒的核心机制,它允许进程在资源不可用时主动放弃CPU,进入可中断睡眠状态,待资源就绪后再被唤醒。本文通过C语言模型解析等待队列的实现原理,结合...

关键字: 驱动开发 C语言 Linux
关闭