EC 二

4>.EC/HOST access
对笔记本来说,EC是可以对HOST开放的,(网上peterhu有讲过的back door)开放的的内容也包括 on chip rom/ram 里面的内容.当然首先你要打开控制寄存器也就是清掉HOST WAIT.,呵呵..Winbond里的机制是.EC里有一个HOSTACCESS CONTROL register.由它来设定一个host address window window size两个值,当这它mapped core internal RAM HOST 可以存取这两个块内的内容.当然它们总共的大小不能超过4KB一次.(这里也就是mailbox相关的概念)(这一块感觉怪怪的,有错请指正).
Mailbox很有用,当然 base code 里面是没有MBX的内容的,DS里面也很少的相关的说明.以后也会补上MBX的部分.但对大多数人来说用不着.
EC ,也可以access to host modules,它是通过”core acces to host modules”bridge.它是使用一个间接的mapping 机制.(当然 HOSTEC并不是完全开放的,只是一些模组).
当要读写一对EC开放的register,core 指明logical device offset.下图是LDN


CORE index里写入read CMD,然后就可以读到相应的DATA.winbond里是 set read start bit, wait this bitclear,data准备好了,就可以读DATA了写也差不多.只是BIT位不同.大家也可以试试.
CIR举例:07INDEX,再写03(CIR LDN )DATA选中CIR,选中后就可以accessb,写入30H Logicaldevice control register, 置最低位为1打开 CIR,然后就可以任意存取数据来CFG相位的module.(当然还有更细节的关注点)
outportb(index,07);
outportb(index,03);03 是指CIR LDN
outportb(index,30);
outportb(data,01);

outportb(indexxx);xx为你想CFGvalue
当然你也可以去读
Inportb(data);

5>.booter program


Winbond 775x 是有一个2Kon chip ROM,这里面放的内容就是Booter应该和ITE里面的BBK部分功能相近,主要还是要看firmwarecode做了哪些内容.
Winbond 775booter 主要有三个功能
1.
接电后的初始化,(initialization 部分寄存器)
2.
前面有提到过的Flash up data,还有相应的 recovery checksum,checksignature,
3.
EC firmware 的控制权一般都放在这里.
第一部分里已经说过 CORE address 是从02 0000H开始的,而开始呢,就会有一个booter CFG datafile, basecode里叫 header.c
它占用前面的100H空间.
BOOT 支持有两种启动方式,不外乎冷启动和热启动.
冷启动有.1.Vcc PWRUP.2.VCC_POR input 3.watchdog cold reset,4.debugger coldreset
热启动有.
Watchdog and debugger 两种
Watchdog debugger 做这一行大家肯定都知道,这两种RESET是相应register里相应的被置位了.
Winbond coldreset 详细步骤.
1.
检查signature,不正确的话就转到recovery
2.
检查header 文件完整性也就是CHKSUM,不正确转到recovery
3.
header.c里面的cfg data写入相应的 register.(包括HOST base address,core clk,flashcfg,flash firmware value,shared memory device.
4.
这时再checksum一次,并进行相应的设置,不正确转到recovery
5.
现在只有一步了,也就是jump20 0000h.到这里已经跑到booter.
WARM RESET.就只用做15.OK.
补充一点,当跑完BOOTER后跑其它的EC bios,这时会继续初始化其它的部分,当全部初始化完成后,要把相应的reset type 位清掉.LPC必须打开,并允许HOST access EC 通过LPC.
6>.RUN code form internal RAM

Winbond 4Kinternal RAM,mailbox用到它,两个mailbox windows可以把它全部都用掉呵呵.只是可以

还有呢.CORE 可以在里面跑code.,一般呢,code 是直接在external flash里面run .但有的时侯呢.比如说host flash BIOS/EC的时候,这时FAN要转,有些LED要闪或者亮.怎么做??当然是从falsh rom里把相关的code copy进来在RAM里面跑,送出相应的PWM值等.

怎么样copyRAM,当然是在MAKEFILE里面分配啦,1.修改LINKER section.把它指向RAM区域.2,加入copy to RAMCODE.

抄来的一个小断:

MEMORY{

RAM:ORIGIN=0x10000,LENGTH=0X800
/*2K RAM*/只用前2K

Boot_flash:ORIGIN=20000,LENGTH=0x100

FLASH:ORIGIN=0x21000,LENGTH=0x100000 //1Mflash rom.机器上只用1M

}

SECTIONS{
….

}

我这里就不一一写了,makefile里有相关的内容,看懂了就好改和加了我还没搞懂
7>.POWERSEQUENCE

有的文章已经说过了powerseq是为ACPI服务的,它在EC里也算是一个重要功能吧.各家的 powersequence 是各不相同的.外行要了解这一块的可以先把sleep5个状态哪些地方有点弄清楚,拿个机型的POWER sequence看看.
开机时序,时在前序在后,先后哪个电后上哪个电,几乎所有的机型差别很小吧,…. 有文章说理论上把所有的电一股脑的打开,理论上也是可以开机的这句话我也认同(不知道台试机是不是这样子做的),当然.NOTEBOOK里面是不可能有机器这样子做的.时序不对可能造成机器不稳定,甚至完全不能开机其中原因有很多,我能想得到的是可能EC它在不停的外理冲突而发出的中断,或者在等它根本等不到的信号.
如果电路是自己家公司的电子工程师设计的,他又不完全是一抄了事的,找他给你讲一遍就OK.记得我以前不懂的时候,开机时序,S5->S0,关机时序,S0->S5.基本来说这也是一个最傻笨的方向了.呵呵.
下图是基本要由EC来做的信号和开机相关的NB,SB,CPU部分.别家给我的发出来让大家看看.


,不太会玩论坛.图片不会发...

你可能感兴趣的:(EC 二)