• battery电池

系统会通过ECRAM获取电池电量、温度、电压、充放电功率、电池状态等信息。而ecram的信息是由battery通过smbus device总线驱动连接到ec的smbus总线上battery的spec给出相应的地址以及命令,ec通过相应的地址和命令获取相应信息。

充电过程:AC in &&battery in→ec→precharge mode预充电(小电流)→时间过长→battery dead &&停止充电&&向主机推送battery fail事件→否则会渐渐增大电流直到fastcharge mode快速充电,充满或温度过高停止充电。

放电过程:AC OUT && battery in →放电→电量小于critical low(紧急低电量),则系统处于s0时会发出关键事件给主机进机关机。电池温度过大进行降频处理。

ec导入function led检测,在不同状态下led会发不同的光或者闪烁。

电池事件:电池插入拔出EC发送BattChgEvent通知主机,主机读取ECRAM更新电池信息。电池电量达到battery warrning level时ec发送battwarnevent通知主机,主机会根据用户设定给出提示并选择调用低电量模式。电池达到battery low level会发送battlowevent通知,lowled灯会被点亮。当剩余电量接近于0时ec会发送battcrtevent,主机收到后进行shutdown 如果主机shutdown失败ec会emergency shutdown紧急关机。

EC通过smbus不断获取电池信息,因此电池信息能实时更新,有时候为了新增加函数function的debug会使用 debug tool工具暂停smbus然后植入数据到ecram验证相关函数时候需要,如果需要发送sci会直接将事件填入sci queue,驱动sci发送

  • IDLE &RESET空闲和复位

EC工作模式,IDLE主要在bios更新NVRAM域,reset主要在flash bios的时候。bios在post自检中会多次进入IDLE模式保存系统设置及硬件资源,而NVRAM包含很多区域,有些数据保存在CMOS,有些保存在ROM,很多时候BIOS和EC CODE共用一个rom,此时EC进入IDLE模式可避免抢占冲突

实现机制:BIOS更新NVRAM先给EC发送信号,EC接收信号到,关闭LPC总线的的写保护,EC保存寄存器内容关掉中断只保留唤醒源。然后返回0xFA给BIOS后进入IDLE模式,BIOS接收到后开始更新,如果EC此时没有及时进入状态系统会卡住,因此BIOS接收后最好再delay一会儿,更新完成给66port发送一个命令既可唤醒IDLE。

RESET实现机制:flash bios(重置BIOS)时,BIOS发cmd让EC进入RESET模式,原因是重置BIOS会修改默认参数,因此EC需要重新运行,RESET模式下EC会停掉fetch预取指,转为现取现用。而后EC关闭中断和写保护,并设置为最大散热转速(BIOS此时能耗较大)给BIOS发送0xFA应答后BIOS通过backdoor后门修改修改EC寄存器使EC的PC程序指针(8051架构)指向0起始位置停止EC运行,然后BIOS开始重置,重置完成后通过后门修改EC寄存器让EC reset复位到起始状态(PC指向初始代码段),此时EC会重新运行。

  • KBSMI和KBSCI系统管理和控制中断

SMI指System management Interruption系统管理中断,由设备或软件呼叫SMM功能时使用,令CPU进入SMM模式。SCI指系统控制中断,给支持ACPI(高级配置与电源接口)的操作系统提供管理与定制功能。

基本上进入APCI模式后就很少使用SMI,兵器SMI和SCI互斥,因此进入ACPI模式后EC只会发送SCI,通常EC是使用KBSMI和KBSCI两根线连接到南桥,EC可以配置两根线属性,决定中断方式(电压中断、边缘中断、脉冲中断)。

KBSMI#信号

EC一般在少数测试项才会使用SMI,原理是南桥的GPIO有些具有多功能可以配置成SMI、SCI,BIOS在初始化会将信息发送给相应的平台,EC发送SMI时该线被置位,南桥检测后通过SMI引脚发送给CPU,CPU切换到SMM模式后会宣告给相关引脚返回进入模式,此时可以通过返回引脚来确认SMI为EC触发,而后通过命令让EC读取SMI事件ID,并调用相关的解决方案

KBSCI#信号

Q_EVENT:指系统收到EC的SCI请求后,系统发送命令0x84给EC读取ECRAM值,这个值为Q_EVENT ID(Q:query查询,0x84:QEC:查询EC,因此该位查询EC事件)系统中,然后通过ASL指令(ACPI的语言)根据ID调用相关函数。

EC发出Q_EVENT的原因:如LID、AC/DC等物理状态改变时候。

// AC Status Changed

Method(_Q83)//定义函数(函数名_Q83,没有形参arg)

{
Store(0x83, DBG8)//将0x83赋值给DBG8

Store(0x00, Local0)//将0x00赋值给Local0局部变量0(声明局部变量)

Store(POWS, Local0)//将POWS的值读取到Local0

If(LEqual(Local0,1))//如果Local的值为1,则赋予ACPI表根目录下南桥PCI0总线EC口的ADP1.ACP口

{
Store(1,\_SB.PCI0.SBRG.EC.ADP1.ACP)


else{
Store(0,\_SB.PCI0.SBRG.EC.ADP1.ACP)

}

//通知相关设备更新信息
Notify(\_SB.PCI0.SBRG.EC.ADP1,0x80)
Notify(\_PR.P001,0x80)
Notify(\_PR.P002,0x80)

}

Device(EC)//EC驱动
{
Name(_HID,EISAID("PNP0C09"))//硬件名
Name(_GPE,0x06)//设置引脚
// KB_SCI
...
}
在EC驱动中设置向主机宣告EC的KBSCI在南桥的哪个引脚。SMI南桥和CPU有引脚接入,SCI则通过配置8259/APIC产生推断。BIOS在设置好ACPI_CNTL控制寄存器后将SCI INT信息存入ACPI FADT中,这样子系统就可以获得中断号,进而产生SCI处理中断。

GPE:除Q_EVENT归属EC,其他部分归属BIOS,指ACPI定义的一个通用事件命名空间general-purpose event namespace,与南桥的GP registers通用寄存器对应,包括GPE_STS和GPE_EN对应GPIO的状态和事件触发的电平/边沿触发两种,分别对应method的_L/_E系列的GPIO引脚,因此S0一旦GPIO变化并且SCI使能,就触发SCI。

  • Auto Detect自动检测

指BIOS和EC探测南桥上存在的设备,常见的有网卡wlan,蓝牙Bluetooth,相机camera,无线等等USB设备,接在USB引脚上,由EC控制使能信号,结束探测后按下热键可以执行相应的功能,比如网络不在时热键可能就是检索功能。该功能主要是为了适配不同设备的存在,否则可能会出现漏电,或者笔记本软件报错,也能保持设备前一次开关状态,这样子状态就不需要每次开机时候重新设置状态。

实现原理:上电时usb引脚上的连接状态会显示端口上存在设备,此时就可以检测出设备存在与否。具体步骤:BIOS读取EC的上次上电状态,BIOS发送命令让EC给设备上电,BIOS读取存在状态后向EC回填探测到的设备状态。最后EC根据状态送使能信号,保持设备起始状态。

我所学到的EC-3(个人学习总结,不能保证正确,欢迎大佬指正)相关推荐

  1. 大年初七,发paper、学Python...分享一下你的学习计划吧~

    今天是大年初七,今天是人日,上天造物顺序一鸡二狗三羊...七人!快快恢复元气,努力工作! 欢迎参与今天的话题讨论:发paper.学Python...分享一下你的学习计划吧~ 欢迎留言,参与今天的话题讨 ...

  2. 学python需要多久-零基础学习python,要多久才可以学好并且找到工作?

    原标题:零基础学习python,要多久才可以学好并且找到工作? 零基础的你想学习python肯定很关注学习python的最短时间是多久,怎样才能快速学习python等问题,今天就为大家详细地回答一下这 ...

  3. 零基础学python看什么书-零基础学python推荐几本python学习的书籍

    原标题:零基础学python推荐几本python学习的书籍 无论是否已经学习了一些其他的编程语言,在开始学习Python时,都应该先从Python的基本概念学起,这样在之后的编程实战中就能尽量减少因为 ...

  4. 学python数学要好吗_学习Python数学英语基础重要吗?

    提到Python编程语言,大家就会想编程语言肯定会涉及到的就是代码,很多人看到那满屏的英文字母就头疼,觉得自己不会英语,肯定学不好Python,但是不会英语到底能不能够学习Python呢,下面小编给大 ...

  5. c语言自学技巧,轻松学C语言,教给你学习技巧

    C语言轻松学,在这里教给你几个C语言学习技巧,让你更加快速的学习C语言,快速掌握这些让你不再迷茫. 1.你要记住,不管是什么语言,他都是为应用服务的,这里的应用最重要的就是测试方面,这点你是必须要明确 ...

  6. python人工智能要学什么_为什么学人工智能首推Python 需要学习哪些知识

    原标题:为什么学人工智能首推Python 需要学习哪些知识 为何学人工智能首推Python?需要学习哪些知识?简单地讲,人工智能就是图像处理,数据处理,语言处理等多技术融合,在我们生活中经常可见.比如 ...

  7. 前端开始学java_[Java教程]开启前端学习之路

    [Java教程]开启前端学习之路 0 2014-06-10 17:00:06 前言 第一次在博客园写博客,写写自己开启前端学习之路.应该是受邢师兄的影响吧,不得不说邢师兄人很好,学习也很认真,师兄的前 ...

  8. 测试学开发——第一课:java学习路程

    测试学开发--第一课:java学习路程

  9. 家人不支持自己学计算机,家人不支持我学习,感觉父母对我好像是很无所谓的?...

    之前,一直觉得学习好了或许父母对自己的关注就会多一点,后来发现学习再好,结果还是一样的. 好像怎么都不能让父母再多关注自己一些,就很难过. 后来才发现,每个人爱人的方式不同.有的人觉得爱就是满足你的需 ...

  10. 新手学java 学哪方面_初学者学Java应从哪些方面学习?

    原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...

最新文章

  1. PL/SQL三种集合类型的比较
  2. 解决依赖资源同名的问题
  3. leetcode409.Longest Palindrome
  4. Python Django 设置/更改响应头信息
  5. UTF-8编码规则(转)
  6. jmc线程转储_如何分析线程转储– IBM VM
  7. QMessagebox简单使用
  8. 【grpc】[Python] A file with this name is already in the pool
  9. Centos 启用网卡出现 no link present. Check cable
  10. gm220s路由器怎么设置_中国移动GM220-S光猫修改为桥接模式并启用IPV6
  11. bigemap如何添加第三方地图
  12. 5 Openstack-Ussuri-Placement部署-ubuntu1804
  13. 计算机win是什么键,win键是哪个键,电脑win键在哪
  14. 创建用户要给session权限,报错:user lacks CREATE SESSION privilege
  15. 盛迈坤电子商务:网店有哪些营销活动
  16. qq显示下线通知什么意思_qq下线通知是怎么回事
  17. 玻色量子CEO文凯博士出席GTIC 2022全球AI芯片峰会,解读光量子计算新进展
  18. Unity3D资源管理架构
  19. 如何缩小gif动图的体积?怎样快速压缩gif动图?
  20. 突破技术壁垒 自由收发Hotmail邮件

热门文章

  1. word2vec python实现_word2vec及其python实现
  2. linux配置邮件客户端
  3. springBoot上传文件
  4. Qt使用ChartDirector插件制作图表
  5. 认真与不认真的分别。
  6. 2014 年 DDoS 攻击超过 100Gbps 的闪电战公司
  7. 【软件工程期末复习题】
  8. python常用软件hon开发的著名软件_20个堪称神器的命令行软件(内附python教程免费分享)...
  9. SSO单点登录流程详解
  10. 显示https不安全的原因及解决办法