BIOS工程师眼中常用的EC知识点汇总:

EC的硬件架构

EC硬件结构上主要分为两部分:Host Domain和EC Domain

Host Domain就是通过LPC与CPU通信的部分(LPC部分需要先执行相关的初始化:比如decode 62/66  68/6c,设置LPC Serial IRQ mode to continus mode等,这样EC才能通过IO与PCH通信),可以看成ISA的设备卡;

EC Domain可以看成一个51的单片机。

BADRSEL寄存器是在EC初始化的时候设置的,决定了使用tool访问EC的信息时要通过 4E/4F

EC的代码框架

必要的初始化,然后进入一个while循环。

while循环里面有不同间隔的定时器回调函数,比如每1ms, 5ms, 10ms等就执行一次。在回调函数里面判断各种flag(flag由硬件中断或其他函数置起来,比如拔一下AC,按一下hotkey等),执行相应操作。

EC RAM space

比如定义RAM 0x0400用来与EC ASL code交互数据(参看:BIOS之ASL code常用知识点

比如定义RAM 0x0E00用做debug:在EC code里面通过调用RamDebug(dbgcode)来往0xE00的位置写debug code从而追踪EC code的执行。

EC Register Space

通过EC tool查看寄存器的值,从而判断寄存器的输入输出状态;通常用在通过EC的GPIO来Enable/Disable TP等device(Hotkey的实现原理)

下面的Datasheet和tool截图(GPIO的数据寄存器)表示:

offset 0A = ED (1110,1101)表示GPJ1,GPJ4的输出为低,GPJ0,2,3,5,6,7输出为高 - 每个寄存器(byte)对应一组8个pin,EC code通过调用SET_MASK(GPDRJ, BIT(6))来把GPDRJ:bit6置起来即把GPIO GPJ6拉高。

EC code与BIOS code交互

上面提过EC code与EC ASL code之间通过EC RAM Space(62/66)的交互(参看:BIOS之ASL code常用知识点

现在看一下BIOS通过60/64,62/66与EC通信:首先PCH端的LPC要初始化相应的端口

BIOS demo code:

1.判断输入buffer是否为空,为空就往64 port写数据(命令):

2.判断输出buffer是否有数据,有就从60 port读数据:

EC code里面的处理:

Hook_64Port(cmd)检测cmd,调用不同的处理函数,然后调用Data_To_Host(data)把数据返给BIOS,BIOS可以从60 port读到这个值。

cmd被BIOS写到64 port,实际上是写到了寄存器KBHIDIR里面,EC返回的data也是被写到寄存器KBHIKDOR里面。

对IO口的操作最底层也是操作寄存器:

P80

一般来说,BIOS可以通过往port80写值来记录代码的运行,往port80写的值会通过LPC总线写到EC的RAM区域:

Power

power sequence:

power sequence描述的是EC为系统不同的模块上电的顺序,比如按power button开机,就执行S5_to_S0的power sequence(包括比如:检查SLP_S4#的信号是否已经被PCH拉高,把PCH的SYS_PWROK拉高表示上电OK等等)。

power信号:

1. 比如系统进S4,PCH会把SLP_S4#拉低来告诉EC系统进S4了。

2. 比如系统进S0 idle,PCH会把SLP_S0#拉低来告诉EC系统进MS了,EC会开启power灯闪烁。

3. PCH把SLP_S4#拉高,表示从S4唤醒,EC需要给系统各模块重新上电(当然EC可以加一下条件,比如检测到Lid close就不给系统上电)

ASL code里面的EC device

参看:BIOS之ASL code常用知识点

通过EC烧写BIOS ROM

通过EC烧写BIOS ROM的原理就是把ROM当成EC的外接存储芯片来烧录,所以在设计原理图的时候需要把SPI ROM同时接到PCH和EC。

BIOS备忘录之EC常用知识点的更多相关文章

  1. BIOS备忘录之IIC(touchpad)设备

    简述BIOS中对IIC device的支持,以touchpad为例. 信息收集 收集平台的硬件信息: 1. IIC controller number(PCH一般包含多个controller,我们使用 ...

  2. DB2_SQL_常用知识点&实践

    DB2_SQL_常用知识点&实践 一.删除表中的数据(delete或truncate) 1 truncate table T_USER immediate; 说明:Truncate是一个能够快 ...

  3. JAVA常用知识点及面试题总结

    1. String.StringBuffer.StringBuilder三者区别? (1)三者在执行速率上的比较: String<StringBuffer<StringBuilder 原因 ...

  4. HTML常用知识点代码演示

    1 HTML部分常用知识点 <!-- 版本声明 --> <!DOCTYPE html> <!-- 唯一根元素 --> <html> <!-- 对网 ...

  5. Java 常用知识点

    Java 常用知识点 1.日期格式化 SimpleDateFormat Date date=new Date(System.currentTimeMillis()) ; SimpleDateForma ...

  6. Less常用知识点

    上篇文章介绍了如何安装Less,我们将所有东西都写在.less里面,最后通过命令将.less转换成.css文件,就可以放入到项目里用了.今天了解一些less常用知识点. 1.变量:声明两个变量,一个是 ...

  7. YII2常用知识点总结

    YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...

  8. CSS3常用知识点

    CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa& ...

  9. javaScript常用知识点有哪些

    javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...

随机推荐

  1. vue2.0 在微信端如何使用本地IP访问项目

    我们会遇到这样的需求,在PC端开发vue脚手架项目,希望在微信端随时浏览页面(如果打包再发布到服务器又太麻烦),怎么办? 思路很简单:保证手机和电脑在同一个IP下,用同一个IP访问项目,这样就可以了: ...

  2. 在VS中为C/C++源代码文件生成对应的汇编代码文件(.asm)

    以VS2017为例 然后重新生成工程,在工程目录中就会有对应的汇编代码文件.

  3. JPA唯一索引更新删除的问题

    本来的功能是更新,我的做法是先删除再新增.表设置了字段A和字段B的唯一主键,先删除这个字段再新增一一模一样的值(包含字段A和字段B)时会报唯一主键的值重复了,百度了下,没找到原因,于是就不删除记录了, ...

  4. JavaSE assert断言的学习

    在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语 ...

  5. 11.13git和redis

    2018-11-13 15:46:40 git完结 redis完结, 还剩一点路飞项目!!!做完回学校!!!! 越努力,越幸运!永远不要高估自己! 关于 redis具体使用可以参考: http://w ...

  6. hdu 2097 sky数(进制转换)

    Sky数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. eclipse主题之-------DevStyle

    最佳因为经常熬夜  eclipse自带的背景 白色 太伤眼了 换了其他颜色但是 总感觉 差点什么    所以就去eclipse自带的插件下载中心 下载了  DevStyle 其实 有很多的 主题插件的 ...

  8. 使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题

    1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我 ...

  9. ubuntu安装sublime-text

    按照网上的教程, wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - sudo apt ...

  10. css学习_css浮动

    1.文档流介绍 网页布局的核心就是利用css来摆放盒子, 把盒子摆放在合适的位置. css的定位机制有以下3种(网页布局一般需要3种搭配使用): a.普通流(标准流) b.浮动 1.浮动只有左右. 2 ...