BIOS 初始化零星记录

来源:互联网 发布:疯狂联盟龙升级数据 编辑:程序博客网 时间:2024/05/16 06:19

内存初始化
Intel 平台的内存初始化主要是对内存控制器的初始化,主要是由MRC CODE 完成,MRC CODE 首先detect 插在内存插槽上的内存的各种参数,这个动作时通过读取内存SPD来完成的,内存SPD参数包含了内存的各种参数值包括大小型号,类型,还有timing值等等,MRC code 读出这些之后填入内存控制器,从而实现内存控制器和内存之间的最佳timing值。
   内存的初始化分3种情况
   1 cold boot, warm boot, and S3 resume
   未完........... 

SB PEI 的初始化

IchBaseConfig
    IchHpet.Base    = ICH_HPET_BASE_ADDRESS;
    IchHpet.Enable  = 1;
    LpcIfEnable
    南桥的初始化中一下几个地址是需要填的
   RcbaBaseAddr;
   GpioBaseAddr;
   PmBaseAddr;
   Port80Route
   Clear all GPIO Status
    Enable the upper 128-byte bank of RTC RAM
    Set Coprocessor Error Enable(CEN)
    Disable the Watchdog timer expiration from causing a system reset
    Halt the TCO timer
    Force to set the boot dest from SPI BIOS
    Set ICH Interrupt Routing 
    Program the GPIO routing
    Disable all Pm Function
    PeiConfigureAzalia
AtaInit
    Check SATA Class code
     Enable SIDE Controller
IchMemoryCallbakInit
     Build Memory Mapped IO Resource which is used to build E820 Table in LegacyBios
     AhciInit
     BuildResourceDescriptorHob
         0. Switch Sata controller to AHCI mode
          1. Disable PCI Command access
          3. Enable PCS
          4. Enable PCI Command memory access
          5 Port x Hot Plug
          6 AHCI_BAR Set 0

Below is DXE SB Init~~~~~~~~~~~~~
.....................