【我所认知的BIOS】->反汇编BIOS之Bootblock(9)

本文详细介绍了BIOS在初始化内存之前的流程,包括8259中断控制器、Power Management、PCI-E的初始化,并解析了内存初始化函数CT_Memory_Init的结构。在内存初始化后,BIOS会进入Intel的MRC进行内存检测和设置。文章通过反汇编代码展示了BIOS如何逐步配置系统,为后续的内存初始化和程序执行做准备。
摘要由CSDN通过智能技术生成

【我所认知的BIOS->反汇编BIOSBootblock(9)

-- Memory initial 函数

By Lightseed

06/24/2010

1BIOS的主流程

为什么会有bootblock和非bootblock这么一说呢?其实就是因为有没有真正的内存可以用的区别。这个章节里我们一起来看看经过之前那些章节的讨论后,BIOS在初始化memory之前会做的一些动作。(稍微比较琐碎点,看起来比较枯燥。)Memory initial这个函数里面,会再做一些前期的准备工作。比如8259的中断控制器的初始化,PCIE的初始化,等等然后进入到intel提供的MRC里面去。那么这节就讲讲这个函数里面具体接触的东西。

1 BIOS主流程

2CT_Memory_Init整个函数的架构

_F000:36E0 CT_Memory_Init:                         ; CODE XREF: _F000:E377j

 

Call Power_Managment_init;伪代码

 

_F000:370C Power_Managment_init_Exit:              ; CODE XREF: _F000:8850j

 

Call PCIExpressInit      ;伪代码

 

Call Memory_INIT       ; There are too many registers which intel do not release, so I have not plan to comment it.

                                                  ; We usually call these code "MRC", it means memory refrence code. As I know, Award and AMI

                                                  ; MRC are the same.

                           ;中间省略N

Call     IGDDetect         ; 伪代码

 

Ret

上面是memory initial的整个函数反汇编出来的代码。架构也很清晰,正如之前说的那些,8259初始化好了后,继续Power management的初始化,然后再是PCIE的初始化,然后是真正进入到intelMRCdetect和初始化内存。一条线,比较简单。

3、关于南桥那面Power management的初始化

_F000:3709这行中可以看出,在8259初始化好了以后,程序就会进入到初始化power management的函数里去。那我们来看看这个函数里面具体都做了什么。

_F000:8834 Power_Managment_init:                   ; CODE XREF: _F000:3709j

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值