stdlf
分类:
2011-07-04 22:36:31
星期四, 九月 27, 2007 一旦正确的频率供给给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的人负责撰写及维护. 张贴者: Harrison Hsieh 于 8:41 下午 标签: BIOS相关 8 意见: tonyya 提到... 无意间发现你的部落格 很多文章都觉得受益良多 我也刚接触这门领域不久 很多东西都似懂非懂 不知对于一个新人而言 有没有什么好的训练方式 可以及早进入状况 十月 03, 2007 5:53 上午 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架构你才有办法去做。 十月 04, 2007 5:39 下午 tonyya 提到... 首先感谢你的回复 1.目前接触的是Legacy BIOS(汇编语言) 2.IA32的系统架构有在看,目前也在积极补强一些相关的spec知识,不过还是要有实际做过才有感觉,对我而言如果只是光看的话无法深刻的体会 3.关于你说的设定方式,有的有碰过,像是PCI,ASL code,SMBUS/LPC, CPU Microcode更新,我会去补强你所提到而我没碰到的部份 4.进入这行的感想是对于一些硬件的知识比以前来的了解,辛苦的是要一直摸索找方向,虽然东西很多要K,问题就在于太多东西反而有时不知从何着手 @@! 5.再次感谢你所提供的意见 十月 05, 2007 8:09 上午 chiehlin@mail2000.com.tw 提到... PCI Register 是 cf8 cfc Index ,Data 十月 25, 2007 11:17 上午 PT 提到... 关于SATA register offset 52h bit3 = 1;SATA controller PFA is (0,4,3) mov eax, 80002750h 依照我的理解方式是 10000000^00000000^00100^011^01010000 所以应该是80002350h 询问大大 这样是否有错? 十月 21, 2008 7:37 下午 Harrison Hsieh 提到... 恩恩~~没错啦~ 十月 23, 2008 9:04 上午 星 提到... 这是一项有全球化事业的商机, 而且潜力无穷,任何人都可以去从事。 现在只要在家工作,越早加入就能越早赢得改变人生的机会。 请先免费 注册体验12周: 网址登入: 祝~天天都是有美好的一天˙快乐与您同在 七月 29, 2010 3:36 上午 翁 提到... 哈啰~~板主您好: 由于最近在考虑未来的方向! 想请教一下!!! BIOS & EC 是一样的工作内容吗? 还是其实差异很大? 可以麻烦板主告诉我 EC 的工作内容大概是什么吗? 二月 15, 2011 5:32 上午