2009年2月24日 星期二

X86 Reset concept

[Reset Control Register]
在IO port CF9h,當RST_CPU bit被設為1時,會有SYS_RST bit來判斷是要做hard or soft reset。

Soft reset: SYS_RST bit = 0, 南橋會下拉CPU INIT# 大約16個PCI Clock讓系統重啟。

Hard reset: SYS_RST bit = 1, 南橋會下拉PLTRST# and SUS_STAT#去reset platform上的devoce e.g., SIO, FWH, LAN, Processor, etc. 然後會視FULL_RST bit來判斷是否驅動SLP_S3#, SLP_S4# and SLP_S5#,然後soft off,就是關機。

[KBC reset/port 92h bit0]
結果是與soft reset一樣,南橋會下拉CPU INIT# 大約16個PCI Clock讓系統重啟。

[Ctrl+Alt+Del]
這種方法「基本」是在「DOS」下有效,教課書上常稱為"熱啟"。鍵盤中斷會hook住你的按鍵,Hook就是BIOS的INT 09h軟中斷,當你按下這三個鍵時,就相當於Far jmp到 F000:FFF0處。

2009年2月14日 星期六

[單車之旅]2009/2/14 紅樹林-亞尼克果子工房

行程: my home->三重->五股<->關渡<->紅樹林<->台2線<->三芝<->石門<->金山<->萬里<->亞尼克果子工坊。里程128km。

人員: ray, terry, merck, henbin.

9:30關渡集合時,下起了毛毛雨,但大家似乎沒有想取消的意思,於是就往目的地出發,而出發時已經快10:30了。路上遇到了兩家知名小店,分別是三芝小豬與劉家肉粽,但大家想撐到金山去吃鴨肉。到達金山時已經一點多了,遇到一個好心的歐巴桑(店小二)幫我們找位子,還說這是因為我們騎單車才有的特權。於是我們就去拿了六道菜+一盤炒麵,可惜鴨肉與蹄膀我不敢吃。吃完後就去找個地方休息等食物消化,這時已經15:00了,我們就在討論要不要繼續往亞尼克前進,不知不覺大家就決定要去了,於是就繼續前進了,從金山到亞尼克大約8km,到達時已經是15:30了,terry就去排隊買蛋糕,我請terry幫我買一條瑞士捲,比較小,比較好帶著。離開亞尼克時已經16:00了,看看碼表發現我還要再騎60~70km才能回到。17:10來到石門洞,等一下落後的同事,後來決定去五股鹹粥吃點東西(雖名為五股,但他卻位在淡水=.=),吃完準備再趕路時,已經晚上八點多了,幸好terry說要載我回家,不然我得再騎16km才能回到家。為了不弄髒他車的坐椅,就去7-11買份報紙,然後我們就嘗試不拆前輪,直接將車放到後座的踏墊上,結果是ok的,這就是2000cc大車的好處。回到家已經是21:30了,老婆還在等我吃飯,對她有點愧疚,會騎到這麼晚真的是失算,下次得好好控制時間,單日會破百時,一定要把車燈帶著。

2009年2月12日 星期四

[預告][單車之旅]花蓮-武嶺

以下文字是從鐵屁股單車部落格擷取:
一般而言,從埔里上武嶺是比較短的行程,
55Km內爬升2788m的高度,這個路段也是歷年環台賽選手最大的夢靨,因為最後要上武嶺的那段路彷如『爬牆壁』一般,但好處是一天內就可以從埔里到武嶺來回。而從棲蘭上武嶺則是要走最長的距離,約122Km內爬升2875m的高度。
從太魯閣出發上武嶺,91Km內爬升3225m

以下高度表是從鐵屁股單車部落格下載:


從羅東車站出發到武嶺亭約143km,然後繼續騎到埔里與員林,由西部幹線回台北。

檢視較大的地圖

2009年2月10日 星期二

[分享] Configure PCH GPIO

由於需要透過PCH GPIO去切換SMBUS,所以就趁這機會把PCH GPIO的configure做基本的
了解。

要能正確存取PCH GPIO之前,必須先設定GPIO Base Address Register,它位在LPC Interface Bridge(D31:F0)的PCI Configuration Register的offset 48h。

PCH datasheet有寫說提供72 GPIO signals,可是GPIO Registers卻可以設定到GPIO75,這是比較令人不解的,等以後有需要再來探究原因吧。

主要提供三組GPIO Registers來configure GPIO。
第一組負責0-31,第二組負責32-64,第三組負責64以後。

GPIO Use Select Register (1-3): 每個bit會對應到一個pin,1代表GPIO,0代表native function,
當設為1時,下面兩個register中相對應的bit才有效。

GPIO Input/Output Select Register (1-3): 每個bit設定相對應GPIO pin為Input or Output,
0代表Output,1代表Input。

GPIO Level for Input or Output Register (1-3): 每個bit設定相對應GPIO pin為的high or low,
1代表Hi,0帶表Lo。

GPO Blink Enable Register: 若相對應的bit設為1,開output GPIO pin即會做blinking。

[心得] USB issue for UEFI

在可以boot到EFI shell時,發現usb mass storage無法使用,不管是1.1或者2.0的都會發生time-out的情況。一開始先從PCI IRQ routing著手,原本是沒做更改,沿用公板設定,後來將它們改成跟legacy BIOS一樣的設定,問題還是沒改善。

後來在跟BIOS team同仁討論時,才知道可能是CK505的問題,也就是必須去設定CK505,讓100MHZ變成96 MHZ的clock,才能除頻到讓USB可以用,FoxHollow的code原本就有去configure CK505,要寫進去的值也是正確的,但USB mass storage問題依舊存在。於是就想說把CK505的設定值讀出來看是否有正確寫進去,卻發現讀不出來的東西,也跟著發現原來對CK505下write block也是失敗的,失敗的原因是Device Error。經同仁的提醒後,才知道可能是SMBUS的切換問題,SMBUS的切換由三根PCH GPIO來做控制的,在將這三根GPIO pin都拉low後,即可以正確存取CK505 register了,而在EFI shell下,也可以ls到usb mass storage的內容了。

這次的USB issue,犯了三個錯誤,將之列出以作紀錄
1. 遇到問題時,沒有先去問其他人是否有遇到相同情況,而是自己埋頭苦幹。
2. data array沒有事先做initiate to zero,導致誤判RW結果。
3. 在透過SMBUS存取CK505時,沒有先看schematics,因而不知道需要bus的switch。

2009年2月9日 星期一

[預告][單車之旅]阿里山公路+新中橫之旅(嘉義火車站->水里)


檢視較大的地圖

下面是阿里山公路到塔塔加的高度/時間|距離表





下面是水里到塔塔高度表,但我們行程是塔塔加到水里,所以請自行左右調換。

2009年2月1日 星期日

[單車之旅]20090131角板山賞櫻之旅

今天原本打算要去挑戰瑞芳的五分山氣象站的,因為一些事情的耽擱就作罷,改去角板山賞梅,後來才發現看到的是山櫻花而不是梅花,猜測可能梅花的花期過了吧。

三重-三峽-台七乙線-三民-角版山行館 里程數為112.59km。

台七乙線路邊的櫻花。