迅维网

查看: 3768|回复: 19
打印 上一主题 下一主题

关于POST过程和CPU首地址的个人理解!~

[复制链接]
跳转到指定楼层
1#
发表于 2015-6-3 00:08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 北京 来自 北京

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 confucian 于 2015-6-3 11:55 编辑

最近刚从迅维学完手机回来,暂时没找到事做,闲着无聊想着研究下BIOS合成,分离。走遍各大论坛,查阅了大量资料后,发现BIOS合成没学会,反而对POST过程及CPU首地址有了更深刻的理解,经过整理作为前一阶段学习总结和大家分享一下!不当之处请各位看官指正,一起学习,共同进步!
1、  CPU寻址模式:
    实模式(real mode )20位寻址,A20#信号就是这个模式的标志,在 实模式下,物理地址=段地址*16+偏移地址 。


   Big Real Mode(32位寻址,介于实模式和保护模式之间,也正因为有此模式,才使得CPU在POST阶段能有超过1M的寻址能力)


  保护模式:32位寻址,此模式可以粗略理解为在操作系统下CPU的寻址方式。具体的可以百度,此模式不在本章讨论范围!~


关于首地址FFFF_FFF0HX86架构CPU复位后会将CSFFFF 0000  EIPFFF0; X86地址结构比较复杂,已经不是物理地址*16+偏移地址这么简单了。关于CPU首地址FFFFFFF0 见新的IA32&64手册,第8 CHAPTER 8PROCESSOR MANAGEMENT ANDINITIALIZATION
而早前的8086 CPUreset后会把指令段寄存器CSFFFF,指针寄存器IP:0000。这是设计CPU时的内部结构决定的,CPU规定在任何时刻都从CSIP指向的地址,取代码执行!~也就是说8086 CPU 复位后会从FFFF0000(物理地址FFFF0H)处取指令。而这个地址必定指向BIOS ROM。即使CPU升级到X86架构,为了向下兼容,在POST前仍沿袭这种方式。这个用IDA反汇编BIOS.bin文件可以看到FFFF0处就是BIOS第一条 far jmp指令。换句话说,你想找BIOS第一条指令,就用IDAFFFF0000


现在问题来了,首地址究竟是FFFF FFF0H还是FFFF0H呢??大家都知道0~FFFFFFFFH表示的是4G的空间:FFFF FFF0H则表示4G最高位地址减去16字节!0~FFFFFH表示的是1M的空间:FFFF0H则表示1M最高位地址减去16字节。而我们的BIOS ROM 有的仅为512K,最大的仅为8M,还有2M4M的!那以上的首地址是如何定位BIOS 里第一条指令的?


这里就需要依靠南北桥去解码了,而解码后的地址必为 BIOS ROM最高位地址减16字节,即2M/4M BIOS的地址为1FFFF0/3FFFF0。这也就是为什么BIOS都是从文件的后面开始执行的的原因!~   


由此可见,首地址这个概念对于不同器件有不同理解:
对于CPU来说是FFFF FFF0H(有资料说CPU在执行第一条转跳指令之后,就会进入实模式寻址,这个要实物验证才知道)

对于内存来说是FFFF0H(当然,在刚开始寻址的时候内存还没初始化,但是等BIOSbootblock模块执行完后,把BIOS COPY到内存里时,那在内存里首地址就为FFFF0H

对于BIOS来说是 ROM的最高地址减16字节!


关于转跳指令:因为不管首地址是FFFF FFF0H还是FFFF0H或者是1FFFF0/3FFFF0,剩下的都只有16字节的空间,根本不足以放POST的代码,所以必须得有一条指令去给CPUCSIP寄存器重新赋值,让CPU转跳到能真正取得POST代码的地方,而这个地址必定在1M的范围内(多数BIOSE05B这个地址),只有这样CPU才能进入实模式寻址!~~

PSOT过程:

CPU取到第一条指令转跳到E05BH之后,接下来会做什么呢??此章以award BIOS 分例(awrad已和Phoenix 合并
PS:CPU进入实模式寻址,A20#低电平(未经验证)

1、首先会初始化CPU,更新CPU微码。大家都知道,在设计产品的时候或多或少都有留有BUG,早期的intel CPU是没有CPU微码的,所以一旦发现产品出现BUG就要大量回收。。后来为了弥补这些损失,设计人员想出用微码来确决BUG。让CPU在初始化之后先自我修复一下。(没有CPU微码有时会出现一会奇怪的问题,这也是有人说有的4代换CPU后要刷BIOS。当然也有可能是EFI文件的问题,这个还要深入研究一下)

2、初始化芯片组(南北桥)的寄存器

3、初始化EC

4、record_CPU_type_COMS:这里不太明白,看字意好像是记录CPU的COMS类型??

5、如果没重新进入SLP x,就接着初始化内存:意思大概就是此时南桥仍然在S0状态,就初始化内存。在此之前南桥会通过SMB总线读取内存信息,此时示波器打SMB有波形了

6、基本内存检测,并把BIOS copy进内存:此时用示波器打内存AD线开始有波形了,如果POST在此中断,你会发现波形一闪而过(闪一下就没了)

7、解压BIOS:  BIOS在内存里不是一次解压完的,,而是用到哪个模块再解压哪个模块

8、此时bootblock模块执行完毕,开始POST(上电自检) ,此时内AD线有大量波形,正常跳变2-3次变成一个有规律,并且相对简单的波形,表示自检 过显卡了(当然也要看示波器的时基怎么调的)




评分

参与人数 3下载分 +25 收起 理由
月饼 + 10 凑热闹,加分
YLL + 10 赞一个!
huhaju + 5 赞一个!

查看全部评分

2#
发表于 2015-6-3 07:50:00 | 只看该作者 来自: 四川 来自 四川
没看的懂哦,啥意思

点评

再看看,重新编辑过了  详情 回复 发表于 2015-6-3 09:51
回复 支持 反对

使用道具 举报

3#
发表于 2015-6-3 09:41:30 | 只看该作者 来自: 广东广州 来自 广东广州
再接再厉。。。

点评

多谢杨老师鼓励~!  详情 回复 发表于 2015-6-3 09:42
回复 支持 反对

使用道具 举报

4#
发表于 2015-6-3 09:42:58 | 只看该作者 来自: 北京 来自 北京
YLL 发表于 2015-6-3 09:41
再接再厉。。。

多谢杨老师鼓励~!

回复 支持 反对

使用道具 举报

5#
发表于 2015-6-3 09:51:26 | 只看该作者 来自: 北京 来自 北京
luobr1988 发表于 2015-6-3 07:50
没看的懂哦,啥意思

再看看,重新编辑过了

回复 支持 反对

使用道具 举报

6#
发表于 2015-6-3 09:54:29 | 只看该作者 来自: 湖北武汉 来自 湖北武汉
逛了各大论坛都无法学会BIOS合成?有这么困难吗,我记得当时老师只教了不到半小时就学会了

点评

方向走错了!~~逛着逛着就去研究BIOS内部结构~!害得我还拿汇编语言学了一遍(只学了一半)!~~  详情 回复 发表于 2015-6-3 09:57
回复 支持 反对

使用道具 举报

7#
发表于 2015-6-3 09:57:52 | 只看该作者 来自: 北京 来自 北京
windlovetao 发表于 2015-6-3 09:54
逛了各大论坛都无法学会BIOS合成?有这么困难吗,我记得当时老师只教了不到半小时就学会了

方向走错了!~~逛着逛着就去研究BIOS内部结构~!害得我还拿汇编语言学了一遍(只学了一半)!~~感觉研究BIOS,对硬件底层的认识会更深刻

回复 支持 反对

使用道具 举报

8#
发表于 2015-6-3 10:34:52 | 只看该作者 来自: 福建泉州 来自 福建泉州
没有多大实际意义,我也看了好多这样的资料,在维修中意义不是很大,因为你要找的故障基本就是那几个东西

点评

感觉了解一下对,有复位不跑码,或者跑码中断,跑码不显或者死机类故障。还是有点实际意义的!~而且让你对一些CPU,和桥里的信号有更深的理解。因为这些信号工作的时候都是有一定的逻辑关系,不是说你翻译一下datash  详情 回复 发表于 2015-6-3 10:40
回复 支持 反对

使用道具 举报

9#
发表于 2015-6-3 10:40:50 | 只看该作者 来自: 北京 来自 北京
huhaju 发表于 2015-6-3 10:34
没有多大实际意义,我也看了好多这样的资料,在维修中意义不是很大,因为你要找的故障基本就是那几个东西

感觉了解一下对,有复位不跑码,或者跑码中断,跑码不显或者死机类故障。还是有点实际意义的!~而且让你对一些CPU,和桥里的信号有更深的理解。因为这些信号工作的时候都是有一定的逻辑关系,不是说你翻译一下datasheet就能看明白的!~
感觉pci规范,和ACPI有空的时候看看中文版的,大概了解一下很好!~

点评

是 的,以前有这个热情去研究这些,现在没有热情了,修多了,人变懒了  详情 回复 发表于 2015-6-3 10:51
回复 支持 反对

使用道具 举报

10#
发表于 2015-6-3 10:51:24 | 只看该作者 来自: 福建泉州 来自 福建泉州
confucian 发表于 2015-6-3 10:40
感觉了解一下对,有复位不跑码,或者跑码中断,跑码不显或者死机类故障。还是有点实际意义的!~而且让你 ...

是 的,以前有这个热情去研究这些,现在没有热情了,修多了,人变懒了

点评

现在想研究一下,CPU具体会在收到什么信号的情况下会关闭FSB。。从目前获得的资料来说,CPU的工作状态不对,会关闭FSB。宕机也会关闭FSB。。。但搞不清楚是宕机才关闭FSB,还是关闭FSB才宕机。  详情 回复 发表于 2015-6-3 11:01
呵呵,我现在也是没事做,闲得蛋疼研究下,就当做充充电吧。。  详情 回复 发表于 2015-6-3 10:55
回复 支持 反对

使用道具 举报

11#
发表于 2015-6-3 10:55:37 | 只看该作者 来自: 北京 来自 北京
huhaju 发表于 2015-6-3 10:51
是 的,以前有这个热情去研究这些,现在没有热情了,修多了,人变懒了

呵呵,我现在也是没事做,闲得蛋疼研究下,就当做充充电吧。。

回复 支持 反对

使用道具 举报

12#
发表于 2015-6-3 11:01:18 | 只看该作者 来自: 北京 来自 北京
huhaju 发表于 2015-6-3 10:51
是 的,以前有这个热情去研究这些,现在没有热情了,修多了,人变懒了

现在想研究一下,CPU具体会在收到什么信号的情况下会关闭FSB。。从目前获得的资料来说,CPU的工作状态不对,会关闭FSB。宕机也会关闭FSB。。。但搞不清楚是宕机才关闭FSB,还是关闭FSB才宕机。

点评

对于这些研究不是我们这些一般的维修人员可以研究透的,对于总线本身而言应该不存在关闭不关闭吧,应该是正常不正常  详情 回复 发表于 2015-6-3 17:41
又一位大神横空出世了,我等顶礼膜拜啊  详情 回复 发表于 2015-6-3 11:10
回复 支持 反对

使用道具 举报

13#
发表于 2015-6-3 11:10:14 | 只看该作者 来自: 中国 来自 中国
confucian 发表于 2015-6-3 11:01
现在想研究一下,CPU具体会在收到什么信号的情况下会关闭FSB。。从目前获得的资料来说,CPU的工作状态不 ...

又一位大神横空出世了,我等顶礼膜拜啊

点评

呵呵,话不是这样说!~一般大神都不会拿这些来出讨论,只有我们这种学得半懂不懂的,才想拿出来讨论一下 !~~ 话说我到大神境界也藏着掖着了~!!  详情 回复 发表于 2015-6-3 11:15
回复 支持 反对

使用道具 举报

14#
发表于 2015-6-3 11:15:19 | 只看该作者 来自: 北京 来自 北京
152916623 发表于 2015-6-3 11:10
又一位大神横空出世了,我等顶礼膜拜啊

呵呵,话不是这样说!~一般大神都不会拿这些来出讨论,只有我们这种学得半懂不懂的,才想拿出来讨论一下
!~~

话说我到大神境界也藏着掖着了~!!

回复 支持 反对

使用道具 举报

15#
发表于 2015-6-3 11:44:10 | 只看该作者 来自: 江苏常州 来自 江苏常州
赞一个  学习了

回复 支持 反对

使用道具 举报

16#
发表于 2015-6-3 17:41:39 | 只看该作者 来自: 福建泉州 来自 福建泉州
confucian 发表于 2015-6-3 11:01
现在想研究一下,CPU具体会在收到什么信号的情况下会关闭FSB。。从目前获得的资料来说,CPU的工作状态不 ...

对于这些研究不是我们这些一般的维修人员可以研究透的,对于总线本身而言应该不存在关闭不关闭吧,应该是正常不正常

回复 支持 反对

使用道具 举报

17#
发表于 2015-6-16 07:39:19 | 只看该作者 来自: 贵州 来自 贵州
研究这个真没实际意义,等你修机器的时候 都用不上,

回复 支持 反对

使用道具 举报

18#
发表于 2015-6-16 08:04:30 | 只看该作者 来自: 越南 来自 越南
分析的不错太详细了, 谢谢分享 很有用

回复 支持 反对

使用道具 举报

19#
发表于 2015-6-16 08:47:07 来自迅维网APP | 只看该作者 来自: 江苏南京 来自 江苏南京
看不懂写得啥

回复 支持 反对

使用道具 举报

20#
发表于 2015-7-1 08:01:29 | 只看该作者 来自: 广东广州 来自 广东广州
研究精神可嘉
也欢迎多多发表研究作品
不过我也当年学晕了,觉得对维修意义不大,所有很快忘记了
什么A20#,什么跳转,还用单步卡根据每一步研究跑到什么地址位出错。。。唉全部忘光了

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复