[我所知道的BIOS]-[Chipset Config] 5

news/2024/7/7 15:56:07 标签: assembly, access, header, function, system, table
转自: http://biosengineer.blogspot.com/2007/09/bios-chipset-config.html

一旦正確的頻率供給給system後, BIOS便依據既定的POST table(類似行程表)來做事. 首先,與chipset最為相關的便是 [chipset config stage]. 意即,在此階段BIOS必須對 chipset registers填入正確的值,俾使其正常運作. 一般而言,要config下列的 devices:
- NB(還記得前面有提過北橋內部約可分 4 blocks; "有些" blocks 需要 在此 program...)
- SB(即 PCI-ISA bridge)
- ACPI registers
- USB registers
- SATA registers
- PATA registers
...

* 在此所謂的 registers指的是: PCI config registers(除了ACPI registers以外). PCI spec所定義的 PCI config registers 00~3Fh 為 PCI header part,這個範圍的registers並不是此階段的主要工作(當然還是會touch,只是不多),而是稍後BIOS PCI kernel的事情.此階段將 focus on :offset 40h以後的 registers,因為,這些是 device specific的部分,是 chipset自己加function/feature之處 !!!

* ACPI registers通常透過 IO 來存取
Ex. // assume ACPI Base is 800h,要 access ACPI Reg55h
mov dx, 855h
in al, dx ; <- al = ACPI Reg55h's value

* 上述所列的 devices多為 PCI device,也都有唯一的PFA(PCI Function Address,即 bus#,device#,func#),也因此,只要對 device 下 PCI configuration read/write便可以 config device registers.

Ex. 假設: set SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
=> 簡單的 assembly can be:

mov eax, 80002750h
mov dx, 0cf8h
out dx, eax

mov dx, 0cfeh
in al, dx
or al, 00001000b
out dx, al 

事實上每家BIOS都 maintain many "tables" 來說明: 哪一個 device 中的哪些 registers要填?值.相關的 access routine都已經寫好. Programmer只需更改表裡面的值即可 ^_^

*當有人要求改 register setting時,我們必須知道三件事:
1. why (為什麼要改?)
2. what(改成何值?)
3. when(什麼點改?)

*對於 BIOS kernel與 OEM coding的人言,這部分會是較少碰觸的,因為,這些code會由 chipset porting的人負責撰寫及維護.

8 意見:

tonyya 提到...

無意間發現你的部落格

很多文章都覺得受益良多

我也剛接觸這門領域不久

很多東西都似懂非懂

不知對於一個新人而言

有沒有什麼好的訓練方式

可以及早進入狀況

Harrison 提到...

現在的BIOS有分成Legacy BIOS(組合語言)與UEFI BIOS(C語言),但是這兩種BIOS對於一個剛接觸的新手來說就只是Win98跟WinXp使用方式的差別而已,介面不同,但是要做的事情幾乎一樣。

所以我的建議是多去了解這些工具的用法(組合語言指令/C語言用法)還有多看看Intel IA32 Architecture guide vol1~3(目前最新版是IA64),因為了解系統架構才是最基本的。

如果要快速上手的話,你就先必須知道"設定方式",例如: 如何填CMOS/PCI Register(CF8/CF9),還有如何調整PIRQ/GPIO/ASL Code...等,如何透過SMbus/LPC存取? 何謂KBC/EC? 又要如何把OpROM 載入到記憶體,然後把控制權交給OpROM,執行後又把控制權還給BIOS/CPU Microcode如何更新?...etc. 這些都是基本OEM BIOS會做的事情,至於BIOS核心就必須很了解IA32架構你才有辦法去做。

tonyya 提到...

首先感謝你的回覆

1.目前接觸的是Legacy BIOS(組合語言)

2.IA32的系統架構有在看,目前也在積極補強一些相關的spec知識,不過還是要有實際做過才有感覺,對我而言如果只是光看的話無法深刻的體會

3.關於你說的設定方式,有的有碰過,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我會去補強你所提到而我沒碰到的部份

4.進入這行的感想是對於一些硬體的知識比以前來的了解,辛苦的是要一直摸索找方向,雖然東西很多要K,問題就在於太多東西反而有時不知從何著手 @@!

5.再次感謝你所提供的意見

chiehlin@mail2000.com.tw 提到...

PCI Register 是 cf8 cfc Index ,Data

PT 提到...

關於SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3)
mov eax, 80002750h
依照我的理解方式是
10000000^00000000^00100^011^01010000
所以應該是80002350h


詢問大大 這樣是否有錯?

Harrison Hsieh 提到...

恩恩~~沒錯啦~


http://www.niftyadmin.cn/n/1516393.html

相关文章

Python3 使用配置文件创建日志

尊重原创&#xff0c;原文链接 一、logging直接写在代码中 >>>http://blog.csdn.net/naiveloafer/article/details/7630673 二、通过配置文件来配置输出 配置文件: [plain] view plaincopy <span style"font-size:18px;">#Configuration for log out…

[我知道的BIOS]-[系統資源] 6

转自&#xff1a; http://biosengineer.blogspot.com/2007/10/bios-6.html在此,想先提一下所謂的系統資源(system resources). 在電腦的世界裡,所謂的系統資源約可分為四大類,亦即: DMA, Memory, IO, and Interrupts. (大家若是仔細檢視一下 [我的電腦]->[內容]->[硬體]-…

自己搭建IntelliJ IDEA授权服务器

尊重原创&#xff0c;原文链接 感谢 首先说明&#xff0c;服务器文件不是我写的&#xff0c;我也是从lanyu大神那里搬过来的。我这里只是详细介绍一下如何使用。 lanyu大神博客&#xff1a;http://blog.lanyus.com/archives/174.html 下载服务器文件 下载地址&#xff1a;http…

基于Android新生预报到系统APP的设计与实现

1.引言 随着国家的教育方针政策的不断改变&#xff0c;自20世纪初以来&#xff0c;政府开始实施扩招计划&#xff0c;截至2020年我国大学生总规模己经攀升至近5000万&#xff0c;大学教育的普及化正在逐渐实现。随着大学新生数量的不断增多&#xff0c;到了每年的9月份&#x…

[我所知道的BIOS]-[DRAM Sizing] (1) 7

转自&#xff1a;http://biosengineer.blogspot.com/2007/10/bios-dram-sizing-1-7.html現在要提到的是BIOS POST中一個重要的 task : DRAM sizing ! 它主要的工作是:讓我們所插的記憶體可以正常且穩定的運作 ! [Q] 為什麼穩定的記憶體這麼重要 ? > 因為,有太多東西需要存放…

【我所認知的BIOS】—PCI 配置空間拾趣-2

转自&#xff1a; http://blog.csdn.net/lightseed/article/details/4227299 LightSeed 2009-5-13 1、文章結構安排 上一篇有專門對PCI device的configuration space提法。那麼在這一節中我先做一個大體介紹&#xff0c;然後再對於一些特殊的比較有用的register做比較…

【新博客引流!!】博客已经迁移到 github pages 了,欢迎各位指点。

个人简介&#xff1a; 飘过的小牛&#xff0c;争取成为全球统一账号2013 年本科毕业&#xff0c;90 后弱菜一枚前新浪广告技术部 RD&#xff0c;现百度凤巢 RD热爱分享。希望结交更多志同道合的朋友共同进步&#xff1a;&#xff09;热爱跑步。2015 年计划每周刷一次奥森 10 公…

技术演讲那些事:如何不让你的演讲令人讨厌

转自&#xff1a;http://blog.jobbole.com/5897/ 导读&#xff1a;如果你在编程大会上发表演讲&#xff0c;不论是开放式的BarCamp或是像OSCON那样精心组织的大型会议&#xff0c;你只有很短的一段时间将脑中的信息传达给听众&#xff0c;所以请仔细把握。 技术会议的成本非常昂…