- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                 PAGE   1
 PAGE   1
基于SEP0611的电源管理驱动设计方案
摘要:休眠模式是削减嵌入式系统功率消耗的一种运行模式。一般来说,系统处于休眠模式时,不执行任何功能,在肯定时期内没有用户恳求产生,因此它可以限度地削减其不必要的功耗。在文章中,硬件平台采纳东南高校自主研发的SEP0611嵌入式微处理器,软件平台采纳Linux2.6.32内核,设计并实现了电源管理驱动。在SEP0611电源管理驱动中,使系统进入休眠模式的代码负责保存芯片状态、自刷新DDR;使系统退出休眠模式的代码负责使得DDR退出自刷新状态、恢复芯片状态,以使系统返回正常模式。通过在测试板上让系统进入休眠并唤醒系统、同时测试系统休眠前后各路电路的电流值,从而验证了该驱动的精确?????性。    0 引言     系统休眠是嵌入式系统除关机外省电的一种状态。休眠(Suspend, STR (Suspend To RAM )) ,又称为挂起或者挂起到内存,会将目前的运行状态数据存放在内存,并关闭硬盘、外设等设备,进入等待状态,此时除了内存仍旧需要电力维持其数据,整机其余部分耗电很少。     恢复时处理器从内存读出数据,回到挂起前的状态,恢复速度较快。一般在电池无故障且布满电的状况下可以维持这种状态数天之久。     1 SEP0611和电源管理单元硬件设计     SEP0611是东南高校自主研发的一款基于UniCore32内核的32位高性能、低功耗RISC微处理器,是定位于手持播放设备、卫星导航产品的高性能处理器。主要分为五个部分:系统与时钟掌握、外设接口、多媒体系统、GPS系统和存储系统。系统与时钟掌握部分包含了电源管理单元(Power Management Unit, PMU)的设计。     PMU包括时钟掌握和功耗掌握两部分。功耗掌握主要负责在各个工作模式下的切换,进入低功耗模式后的唤醒,以及系统的复位掌握。系统工作模式主要分为三种:正常工作模式、挂起模式、休眠模式。     2 Linux APM技术         图1 Linux APM技术架构图     图1是APM技术在Linux中的架构图。用户通过用户态的APM接口或策略向BIOS申请休眠恳求,BIOS设备接收到用户层的休眠恳求后会调用内核低功耗层的接口函数,从而实现系统进入休眠的一系列操作;在接收到唤醒信号后内核低功耗层会执行唤醒操作,与此同时低功耗层也会调用外设驱动的电源管理接口让设备跟随系统实现唤醒。SEP0611无BIOS,系统唤醒后会回到bootloader执行。     3 系统休眠的内核层分析与驱动设计     Linux系统休眠内核层是整个休眠部分的。它将接受上层休眠命令,并通过驱动层使外围设备进入相应的suspend状态等,在得到唤醒信号后将恢复状态连续运行。它包括了体系结构无关的部分:当前进程的冻结/释放,管理外围驱动;也包括了体系结构相关的部分:让处理器进入/退出休眠,DDR进入自刷新指令序列,系统状态保存/恢复等。本小节由休眠预备,休眠进入和休眠退出,完成唤醒三部分组成。     3.1 休眠预备     在本文中,将suspend_prepare函数、suspend_devices_and_enter函数中的大部分内容划分为休眠预备部分。     suspend_prepare函数的主要作用如下:     (1) 用一个全局变量保存好掌握台。     (2) 执行pm_notifier_call_chain函数,该函数调用notifier_call_chain函数来通知大事(将休眠)的到达。     (3) 冻结进程,这通过freeze_processses函数实现。     在suspend_devices_and_enter函数中执行剩余的休眠预备工作:     (1) 调用suspend_ops-ii++)     i2s_regs[i] = *p_regs++;     clk_disable(i2s_info.clk);     return 0;     这段代码主要实现:保存音频设备硬件寄存器;禁止音频设备时钟。          3.2 休眠进入和休眠退出     完成了进入休眠的预备工作,接下来就是进入休眠。     suspend_enter是休眠进入函数,该函数将调用suspend_ops-ii++)     *p_regs++ = i2s_regs[i];     kfree(i2s_regs);     i2s_regs = NULL;     return 0;     这段代码主要实现:     (1) 使能音频设备时钟;初始化音频相关的GPIO口;恢复
                您可能关注的文档
最近下载
- 驱鸟模块考核试题含答案.doc VIP
 - 2015恒星结构与演化2018introduction.pdf VIP
 - 破伤风的临床表现及护理.pptx
 - 2025兴业银行总行国际业务部交易银行部招聘考试备考题库及答案解析.docx VIP
 - 技术作品(产品)说明书及其编写课件-高中通用技术必修《技术与设计1》.pptx
 - 人教版(2024新版)九年级上册化学:第六单元 课题2《碳的氧化物》教案教学设计.docx VIP
 - 2025兴业银行福建总行国际业务部交易银行部招聘若干人备考题库及答案解析.docx VIP
 - 2025年《卵巢恶性肿瘤诊断与治疗指南(第四版)》要点.pdf VIP
 - 抗病毒药和抗真菌药.ppt VIP
 - 竞选学习委员ppt.pptx VIP
 
原创力文档
                        

文档评论(0)