Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1024418
  • 博文数量: 238
  • 博客积分: 2842
  • 博客等级: 少校
  • 技术积分: 2765
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-16 00:20
个人简介

stdlf

文章分类

全部博文(238)

文章存档

2013年(6)

2012年(13)

2011年(82)

2010年(89)

2009年(48)

我的朋友

分类:

2011-07-04 22:23:58

在此将以DeskTop platform来说明(Notebook platform power-on sequence 牵涉到 EC,可参考讨论区中 "power on sequence" 文章);还有,所叙为rough flow,详细的时序图依据design会有些许不同.

[Power-On sequence]

- AUX power ok
- Main power ok
- PCI reset
- SB state-machine runs...
- NB state-machine runs...
- CPU power-Good ok
- CPU reset
- 1st code-read by CPU ( <- BIOS entry point,
CPU 会抓取 FFFFFFF0h 处的 BIOS code 来执行)

*
当然CPU一次抓取的BIOS data不仅仅是几个Byte ! 而是一堆的data(Ex. 64 bytes);之后会从中 extract FFFFFFF0h处的 data,然后来执行.

补充: 为什么CPU 发的第一个位置不会只有FFFFFFF0h? 而是多抓很多个? 范例中为什么是64 bytes?
原因在于 cache的支持. cache不是细分为单一byte , 而是以block(many bytes)为单位. 这个block的大小的名词就是 cache line size. 也就是要填入cache一次要写入的bytes. 例如 cache line size 16 bytes. 那么一次就要读16 bytescache.
CPU 一但发生cache miss(第一次开机一定是cache miss)的状况时.就会通过host bus 对外取得资料. 这时就会产生burst read cycle来达成fill cache line的需求. 所以由CPU cache line size的大小就可以知道CPU一次会抓多少的 bytes. P4以后CPU cache line size 64 bytes, 所以CPU 就会产生一个 burst length 8 memory read cycle. 所以CPU 发出的位置就需往下减.然后在读取的数据中可以包含到 FFFFFFF0h以后的数据.

自此,CPU便循着 CPU->NB->SB->ROM path,循序地至BIOS ROM中抓code,执行 fetch->decode->calculate->store...自此开始便是BIOS POST stage starts...


[
有可能遇到的问题是] debug code = "00" or "FF" (意即BIOS常用的 Port80 card所显示出的 "code" ) !!!

*
此时,强烈建议:请在BIOS entry point Port 80(value可自行定义),因为,即使BIOS有跑到,但因为距离 1st Port80 code仍有一小段程序代码;若系统 hang在此其间,Port80仍是没有 code,因此,BIOS一开始进来便先 out Port80 将有助于判定: system hang before BIOS entry point or NOT !!! )

# Assume system hang 'before' BIOS entry point,
可能的原因有:
- incorrect power sequence:
sequence spec,规范讯号间的相对关系与 assert/deassert的时间,violate spec有可能导致 system hang;此时需要 H/W or board designer来量测
- incorrect power-on frequency:
有发生过因为 Power-On CPU frequency错误而不开机者.请用 scope量测
- incorrect chipset behavior:
意即上述的 power-on sequence中有关于 NB/SB state-machine部分,有可能这部分的行为不正常,因此需要 H/W designer clarify

*
曾听说,某家chipset需要BIOS image include 几个 bytes config NB/SB registers;这些 settings也会影响 power-on chipset behavior;因此,这几个 byte 若是错的,也有可能 system hang

补充:很多chipset(or 曾经)有这个功能, SiS, NV, VIA, Intel. 以前有个词叫ROMSIP就是指这玩意儿... 即使在现今的intel platform也有预留这东东.

#Assume system hang 'after' BIOS entry point
=>
这就是BIOS engineer的时间了, debug...(尽管,有些 issue board or H/W造成的...)

*
此时的 debug方式,若有 辅助工具的(Ex. P debug card) 就用,没有的就用Port80 card !

[Summary]:
没进入到 BIOS entry point....不要找我....真的没办法 >_<

*
关于 BIOS entry point,请参考 讨论区中 "追踪BIOS code 的进入点" 文章 !!!

[Power Button开始的动作]

一般Power Btn 都是EC 控制(或称PCU),如果你说要知道Power Btn之后的动作就是问EC 工程师就对啦。
我印象中好像是Power btn按下后-->EC 侦测到动作(应该是KBC EventEC BIOS或是EC BIOS自己每隔一段时间去检查有没有Event..KEC Spec,纯猜测...)-->EC 检查目前系统状态(不同时间点按下Power Btn , EC可能会做一些动作,因此要判断),检查的时候主要会去检查南桥ICH接到EC的讯号线,判断Sx state-->如果是正常开机,则开始供电--->系统上电后,CPU会从起始地址开始读取BIOS第一条指令(至于CPU何时收到重置讯号可能要看一下其它Spec...)

另外印象中EC BIOS有分成两种形式,因为EC Controller可能里面的记体器容量会不足,或是说节省成本故意做成那样,所以 EC BIOS 会是包在SBIOS或是放在EC Controller里面两种格式。

如果真的要K流程,应该是去看EC SpecICH Spec...

EC 收到power event (power button的动作后...), 会根据目前系统的状态来决定是否要开某些电源...For example, 当系统处于s3(suspend)的状态时, user按下power button, EC 会发一个讯号给南桥, 然后EC wait for SUSB and SUSC 的讯号assert. 然后开 main power的电(我指的是非suspendpower)...但是详细的动作应该各家都不太一样才对. 而且这些spec都是各公司的knowhow

张贴者: Harrison Hsieh 7:36 下午

标签: BIOS相关

4 意见:

Davidoff 提到...

最近本人在解决计算机主机问题,救是主机关机后内建网络卡会无法OFF,个人认为是BIOS中的问题,所以上网搜寻BIOS相关知识,看到大大您的部落格,所以顺道询问您有没有相关专业见解,感谢

四月 29, 2008 8:32 下午

Harrison 提到...

可能是有支持WAKE UP FROM LAN吧,你有关闭过吗?

五月 12, 2008 4:22 上午

Tdruk 提到...

ROMSIP这个东西很有意思,不知道哪里可以找到相关数据呢?
以前有遇到过一个问题,BIOS ROM有数据跟没数据时CPU的动作不一样,没数据的时候CPU不会发出读BIOS ROM的动作,不知道这个behavior是不是所谓的ROMSIP呢?

一月 05, 2009 7:17 下午

匿名提到...

想讨论一下Power on sequence
Desktop: PWRBTN#
由南桥control,SUS power提供时,按一下放电让其asserted, then SB issue SUSB# signal to ATX power to let ATX power on, 然后PWRGOOD signal ready, 之后由SB issue PCIRST#-->NB issue CPURST#, then CPU go to the first instruction fetch 0xFFFF_FFF0h,
如此想请教NotebookPower Good是谁发的??
另外我认为S5 state, KBCKBC command是怎么发的? 我认为只会是普通的level trigger来发signal,
谢谢!

四月 05, 2009 4:37 上午

阅读(2023) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~