小華的部落格: 菜鳥BIOS學習記之怎麼全身菜味篇 -BIOS 學習地圖

搜尋此網誌

網頁

星期二, 4月 24, 2007

菜鳥BIOS學習記之怎麼全身菜味篇 -BIOS 學習地圖

菜鳥之所以菜是因為全身都是菜味,學習擺脫菜味的學習過程中,你會發現......你真的很菜!

我是一個六年七班的BIOS菜鳥工程師為了生活而努力的一些心得筆記,如果你年紀輕輕就因為公司移往大陸而被優退的歷練,現在可能跟我一樣是個菜鳥,所以一起努力的擺脫菜味吧,菜鳥同志們!

剛開始進入BIOS行業的時候,由於自己已經有組合語言的基本底子,因此便開始從PC Architecture 跟BIOS Architecture開始學習。

我現在每天接觸的是Phoenix BIOS code 跟Insyde H2O EFI 所以學習起來感覺很充實,很多的東西都不懂,所以每天K Spec...到現在還是繼續K,KK相連到天邊,K到最高點,心中有KK,K才是王道,這也可能也是BIOS工程師的宿命吧...K就對了。

最早的時候我是看的是P廠商的PxxBIOS 4.0 Release 6.1 User Guide...
大概看到第8章的時候才開始看Source code....(Setup Menu那一章),前輩就叫我試著去修改一些畫面的設定...

接著就是看BIOS Source Code...(從BootBlock開始看到POST...) ,而這些組合語言裡面也沒有所謂的Phoenix 語法,都是組合語言的精華應用,像是Strong/Weak...(可以參考MASM Programmer's Guide)

而我目前比較頭痛的是P廠商用C去寫的一些Services...我到現在還是搞不太懂....像是Setup Menu Engine...PDM好像也是.....

而當我把POST source code看到一半的時候就,我們公司就有一些新案子在Run,也因此我就開始接一些東西做了...然後就一邊做案子一邊 K PCI Spec...SMBus Spec...MCH/ICH Spec...ACPI Spec...CPU Spec...然後就一直忙到現在...

我不太清楚其他人如何學習的,但至少我都是先去了解系統架構後才開始慢慢的看Source code...像是CPU 的工作模式(SMM/保護模式/真實模式),, IDA , Super LFM , EMTTM , EIST , 記憶體的管理(例如Big Realmode 或稱Flat Memory Mode或是分頁/虛擬記憶體...等), DDR,SPD,SMBus 如何存取,PCI與PCIE差異...等,還有一些工具的熟悉....

光這些入門課程我大概花了2個月的時間才摸出一點頭緒。

至今也做了7,8個月了,所以剛好整理一下一些心得;至於我開始學習BIOS時,則是依照下面的學習地圖去學習,也許不是最好的方式,但卻是我一路走來的方向的參考:

1.Hello Assembly
2.CMOS Dump
3.CMOS Read/Write
4.PCI Device Scan (CF8/CF9)
5.PCIE Device Scan (比較前面256 Bytes跟4KB Window的不同處)
6.Send EC/KBC Command
7.Access DMI/SMBIOS
8.SMBus Read/Write (認識一些Controller的控制方式及暫存器存取方式)
9.Send ATA/ATAPI Command (Spindown function/ Hdd password)
10.ACPI SCI/SMI (Gx State/Dx State/S3/S4...)
11.....未完待續....

BIOS 行業會不會又移去大陸我也不敢保證,我本身也去過上海住過好幾個月,雖然那邊沒啥不好的,但是競爭太激烈,文化差異大,重點是我吃東西會拉肚子(當你拉了一個月,拉到菊花都開了,你就會開始反感了! 印象中好像是7,8月去的,因為9月菊花盛開...^^),當時的我又沒技術又沒學歷(2專畢業),如果去那邊競爭,或許會成為沙灘前面的那群人,所以當時的我選擇了優退去充實學歷;但是去了對岸生活過一段時間後你會發現,對岸的同胞的目標是放眼全球的競爭,而台灣人的目標卻是"不要被大陸人取代",想法跟觀念大不同,所以我自己也該反省一下了。

我是系統端的BIOS,所以都是做一些OEM 的東西,但BIOS學問可深可淺。有前輩說,如果你只是要改改OEM的東西,大概就一年就可以了,還記得當初找工作的時候有去微星面試,有個實力堅強又很開朗的經理面試我的時候說他自己下去教,應該3個月就可以上手了! 但是如果要深入研究,那麼不混個5,10年,可能還是會覺得不夠。

像我除了會改改一些基本的OEM的東西,最近也學會撰寫WDM 的基本I/O Driver了,也懂得利用Windows XP內的Services Control Manager ,SCM 去動態載入驅動程式了,所以BIOS摸到的層面很廣,可以學到很多東西,也因此......為了等待機會的來臨(或是為了下一次又被優退後的挑戰),先好好提升自己的實力吧(雖然我只有兩粒......毅力跟努力)!

52 則留言:

aaa 提到...

請你是否提供該看哪些資料
如a 要看哪本datasheet 或specification 的第幾頁

IA-32 specification 我有
NB datasheet 我有
但我看不出所以然來

我的email
tatungtatung.tw@yahoo.com.tw



因為你看的書的資料是"舊的",你跟我一樣當初被誤導了...
先去把8088/8086/80286 跟80386 這兩個階段的CPU 行為模式搞懂
a.這兩個階段的CPU 在重置的時候是去哪邊讀第一條指令的? 提示:FFFF0跟FFFFFFF0
b.何謂MMIO? 何謂位址空間? 提示:4G位址空間不是指4GB,MOV指令存取BIOS 資料?
c. 這兩個階段的位址空間的分配有什麼不一樣? 提示: address bus 不同,定義也不同
(1) 何時開始把BIOS 放在1M頂端,何時在4G頂端的位址空間?
(2) BIOS存放資料的時候有Top 跟Bottom 方式,有什麼不同?
(3) 何時開始保留PCIE Config space/DMI/BIOS....位址空間?
(4) 為什麼(3)會影響DRAM大小? 例如插了4G DRAM只看到3.xG

d.BootBlock是幹麻的? 比較一下沒有BootBlock的BIOS ROM做法?
e.上面說的這兩個階段BIOS作法都不一樣,那為什麼BIOS可以向下相容? 提示: Shadow

f. 假設BIOS ROM size=1M,為什麼可以完全映射到 4G~4G-1M ,但卻沒辦法映射到0~1M ? 且0~640K是給DRAM使用? 提示: Overlap area ,MCH control。

小華的部落格 提到...

如果還有問題留個MSN給我,在線上問我吧!

heyman 提到...

請問你的 msn?

匿名 提到...

我也是 BIOS Engineer 出身, 熟EFI .
分享一下 我的MSN chiehlin@mail2000.com.tw

小華的部落格 提到...

感謝你們留下MSN,我會加入你們的MSN,大家在一起討論吧 ^^Y

匿名 提到...

我也是bios新人,我的msn:b-boy@pcmail.com.tw。希望可以加入我喔!

小華的部落格 提到...

回覆:
已經加入了,歡迎你進入這個行業 ^^

匿名 提到...

我也是BIOS新人,望前輩可以多多指教~~
MSN:chris940401@hotmail.com

小華的部落格 提到...

回覆:
已經加入你的msn了,我也只入行一年多,有問題大家可以互相討論啦^^

匿名 提到...

我也是bios新人~望前輩多指教 ^_^
msn:eida.li@msa.hinet.net

小華的部落格 提到...

我已經加入你的MSN了,歡迎一起討論喔^^

匿名 提到...

您好,我也是菜鳥一個
心中有一堆問號待解決
希望能前輩汲取經驗

請多指教 <(_ _)>

msn:
figurantjp@hotmail.com

mail:
figurantjp@yahoo.co.jp

小華的部落格 提到...

加入你的MSN了,歡迎一起討論喔^^

匿名 提到...

您好~
我從事BIOS工作剛過半年多
大概從3個多月前在Google資料時發現這個blog

我做的也是OEM
一開始前輩都是給我一些簡單的function,然後我就邊看spec,一邊摸索
但事實上對一些架構都不了解,所以最近這陣子開始想從整個架構開始著手
我自己覺得如果了解原理再去看code效果會更大

希望前輩能多多指教囉~ ^^

我的msn : yumenge@hotmail.com

小華的部落格 提到...

我加入你的MSN了,歡迎一起來討論喔!

chao 提到...

我也是剛新進的BIOS這個領域

我也什麼都不懂,望前輩多多指點

MSN:agk32@hotmail.com

匿名 提到...

我也是BIOS 新人..
希望能互相討論...
MSN:zero828@msn.com

匿名 提到...

hello~ 今天剛好逛到這裡來

我做的是oem 到現在大約9個月了吧

菜味還是相當的濃阿 呵~

不介意的話我的
msn: jason.chang2007@msn.com

yumeng 我的情形和你一樣..
對整個架構真的很不了解

各位有空互相討論好嗎 謝謝~

小華的部落格 提到...

回覆: 已經加入了,歡迎大家一起討論喔^^

CH 提到...

您好,最近我也剛開始在看 BIOS,滿腦子是問號,如果不麻煩的話,可以也把我加入 msn 嗎?chuanxianlin AT yahoo.com.tw
希望大家一起成長。^_^

匿名 提到...

大哥您好,
老實說小弟也是六年七班的
今年開始進入一系統廠
也就是才剛剛接觸到BIOS
希望有機會能夠跟前輩討教
小弟的MSN為
IEC.William.Su@hotmail.com

小華的部落格 提到...

已經加入大家的msn了!
如果沒加入成功的請自行加入我的msn!
感恩喔~~~

匿名 提到...

您好!我也是剛進bios的新鮮人!希望有空能交流一下哦
我的msn:ti8084@ms25.hinet.net

匿名 提到...

你好逛到你的Blog看到這些資訊對我很實用,有一些問題想請教你方便加入我的MSN嗎? -->jc_h@pchome.com.tw

Joshua 提到...

我不是寫BIOS 的,但對寫BIOS 有興趣,工作也是軟體的工作可以請您加我的MSN嗎?
我的MSN是 Joshua0103@hotmail.com

匿名 提到...

我也是bios新手
我msn: holic218@yahoo.com.tw
謝謝

匿名 提到...

大家好:
我是一個新到不行的bios新人
請各位可以多指導小弟
小弟的msn是
ericcool008@hotmail.com

匿名 提到...

我也是BIOS新人,已經做BIOS快一年了,雖然知道了一些概念,但還是不清不楚的,希望能跟你請教。
MSN:copykider@hotmail.com

小華的部落格 提到...

說請教太沉重啦! 我到今天也才混了1年9個月,畢竟我不是原廠所以也還很多東西不懂! 大家一起交個朋友互相討論與研究啦!

如果各位看的起我,願意跟我交個朋友的就請各位自己加入我的msn就好了,如果看到我上線記得打聲招呼喔^^

匿名 提到...

您好,我是不得不去了解 BIOS 的人~~@@"~~~如果可以,請加入我的 MSN 大家交流一下囉.Thanks.
hodala1234@hotmail.com

匿名 提到...

偶也算是bios 新人的說~~~
希望大家可以交流的說~~
msn: pip04526@hotmail.com

匿名 提到...

我也是BIOS新人,
希望能和你交個朋友.
MSN: zhaorongyi@hotmail.com
Thanks.

匿名 提到...

我也是做BIOS的,两年了,大家多多讨论.、
我的msn:sibule110@163.com

匿名 提到...

my MSN:mysky_0407@hotmail.com
thanks for your help

匿名 提到...

my MSN:a0920186569@yahoo.com.tw
想要加入BIOS的領域,
所以是新生中的新生!!
請大家多多指教~

匿名 提到...

我也是剛新進的BIOS這個領域
整體架構我也是完全不懂,望前輩多多指點
MSN:teppei1104@hotmail.com

匿名 提到...

小弟剛碰BIOS兩個月,公司內沒有前輩可問,只有P公司source code及兩份該BIOS doucments.接觸BIOS才知道MCH, ICH, SuperIO這些是什麼鬼東西,如前輩所說的,一大堆Spec要K,不過目前為止我大部分是看code,拿chipset datasheet來做對照,還沒正式改到code,請各位前輩不吝指教.

小弟MSN:
jacky35_0901@hotmail.com

匿名 提到...

小華,久仰大名!
很多剛進I公司的BIOS RD都會來你這觀摩,希望你這個提供資訊與討論的部落格,越來越大與方便ㄋㄟ~

BTW, 請問一下您的MSN在哪?如何加入呢?
小女子不方便在浩瀚網海中公佈MSN,請問如何加入您的MSN呢?

希望有機會和您一起討論BIOS相關問題~~
感謝!

小華的部落格 提到...

是你不嫌棄我的小部落格啦~

我的MSN在留言板可以找到~請自行加入!

加入後記得跟我說一下,不然會被我封鎖喔! 因為最近太多病毒了 >.<

匿名 提到...

我是想是不是已经建立了以个MSN群了?能不能建立以个群呢,这样的话就可以讨论的又更多了。我的MSN:yuanhu.zhang@hotmail.com

Jerry 提到...

Dear 前輩們,
小弟我也是今年決定作 bios菜鳥,希望各位前輩們能多多指導及幫忙小弟不懂的地方,感激各位前輩們分享bios的資訊,造福願意投入bios工作的工程師!!
目前我剛開始要看 EFI BIOS的ACPI程式架構,因為我目前是在NB部門,不知道各位前輩們可建議我如何可以比較容易瞭解ACPI的程式怎麼看及怎麼撰寫等等,
我以前也寫過 AWARD BIOS在IPC公司,學過一年但是只學會寫基本及皮毛的BIOS POSTING及 BIOS MENU等的程式,小小基礎是有,但不足以擔任大將,希望各位前輩能多都教導小弟,感激不盡!!
其我也附上我的MSN~~如果前輩們願意讓我加入你們的MSN或您們願意加入我的MSN~~
感恩在心^^
我的MSN : leo67@edirect168.com
E-mail : jerry_67.tw@yahoo.com.tw

東海林將司 提到...

大家好,我也是做nb的,但是我不是做BIOS,這個只是我的興趣。請問我可以觀摩你們的討論嗎?

東海林將司 提到...

我的msn是kyc1109@hotmail.com

Mars Lin 提到...

最近面試到bios相關工作,因為換領域想問問有經驗的人…
不知道方便加入我嗎?
msn:d8932001@email2.stut.edu.tw

匿名 提到...

你好我想加你MSN 希望可以跟您請教 謝謝

Unknown 提到...

你好~我是未來想進路BIOS工作的新人,想請問是否有書本可以先行閱讀'學習的??

MSN:fairy7.14@hotmail.com

匿名 提到...

小華 大大您好
小弟工作BIOS 在OEM廠四年了
希望能跟您一起學習討論
小弟MSN:cuteghost64@hotmail.com
thanks^^

Unknown 提到...

小華大大,看你的部落格真是受益良多,希望能和你請教:)
這是我MSN:kokog1987@hotmail.com

Howard 提到...

慢了5年= . =請問還有在討論嗎?還是用MSN嗎?我也想加入

Unknown 提到...
作者已經移除這則留言。
Unknown 提到...

慢了6年,感謝前輩分享,我也是剛入行的菜蟲,請問還可以加入我的MSN嗎?
MSN:d12245102321@hotmail.com
謝謝大大~

Unknown 提到...

剛從linux bsp轉行BIOS,全身菜味,希望前輩也可以讓我加入,902224@gmail.com,謝謝!