討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 掌握Salesforce雲端管理秘訣 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
[我所知道的BIOS]->[PCI SCAN]
更改我的閱讀文章字型大小
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/10 下午 11:49:56
這次要提的是: PCI !

[About PCI device]
1. 每一個PCI device都有其 unique PFA(PCI Function Address). PFA由 bus number,device number & function number所組成.

Ex. USB device PFA is (0,6,0) <- USB is a PCI device and its bus/dev/function is 0/6/0


2. 有了PFA,就可以存取其 PCI configuration registers.

Ex. write USB PCI register 43h bit1 = 1
=>
mov eax, 80003040h
mov dx, 0cf8h
out dx, eax

mov dx, 0cffh
in al, dx
or al, 00000010b
out dx, al

* IO port 0cf8/0cfc 為 PCI config address port & data port,意即:將 address(80003040h)送到config port(0cf8h),然後從 data port(0cfch + 3)來存取 data(al)

* 注意: 32-bit address(80003040h) 中 bit[1:0] = 00b(固定的),所以雖然存取的是 43h,但還是寫成40h ! 而要存取到 43h,則從 0cfch+3來達成 (因為: 0cfch<-> 40h,0cfdh<->41h,0cfeh<->42h, 0cffh<->43h)

3. 基本的PCI device的 config registers可分成 2 parts:

A. header region(offset 00h~3Fh)
B. device specific region(40h~FFh)

在BIOS's PCI_SCAN stage中,會touch到 part A. Ex. command byte, BARs, Interrupt line, latency timer,...etc. 而Part B是製作 or design這個device的廠商所附加的 function/feature.

4. 每個PCI device都可以 request 之前所提的 4 resources:
A. memory resource:透過 Base Address Register(BAR)
B. IO resource:透過 Base Address Register(BAR)
C. Interrupt: 透過 interrupt pin
D. DMA: 這需要 device本身即具有 bus master function(status byte會indicate)


[Why need PCI SCAN]
現在的computer system泰半由許多PCI devices所組成,因此,BIOS POST中另一個重要的 task is : PCI_SCAN !!!

它代表的是: BIOS會掃瞄 whole system,找出所有的PCI devices; initial them and build a linked list of PCI devices.在此list中的每一個node都代表一個PCI device,且含有其 characteristics !

Ex. Vendor ID,Device ID, PFA,Option ROM exist or NOT,...etc.

一旦建好此表,以後的 tasks 隨時都可以參考 !!!

所以, after PCI_SCAN,有兩件事完成了:
1. PCI device initialization;device config registers(Part A) are correctly set ...
2. One data structure is built to describe the PCI devices in whole system(建在memory中)

這也是屬於kernel code part ^_^ ( system 一般很少 hang at this stage...)


<Summary> 符合PCI spec的device即稱為........PCI device ^_^
作者 : harrison(harrison) 貼文超過200則人氣指數超過30000點
[ 貼文 232 | 人氣 43332 | 評價 330 | 評價/貼文 1.42 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/11 下午 01:04:04
繼續支持...感謝前輩分享!
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/11 下午 04:33:35
[補充] PCIe device

PCIe device => 符合PCIe spec的device(...廢話...)

對軟體而言,它仍是PCI device. 因此,基本的 header region and device specific region也有. 不過,PCIe新定義了 extended config space,即 offset 100h(含)以上,直到 FFFh( 所以, 最大可以至 4096 bytes )

存取 PCI config space的方式,用原來 0cf8/0cfc的方式依然可行,但只能 access offset 00h~FFh. 要 access 100h(含)以上的 extended config space,則必須用 memory transaction的方式 !

Ex. mov ax, [50400000h] <- read device (4,0,0)'s register 0;2 bytes

here 50000000h: PCIe extended base address. 可以從 chipset register得知
     bit[27:20]: Bus information
     [19:15]: Device information
     [14:12]: Function information
     [11: 8]: Extended Register
     [7:2]: DW number
     [1:0]: Byte enable

因此,只要知道 PCIe extended base address,就可以像以前一樣,可以任意存取 PCIe config registers, even > 0FFh !
 
除此之外, PCIe device可以由其 Capability pointer(points to a linked list of capabilities)辨認出來. 因為,在眾多的 capabilities中,會有一個 PCIe capability;其 ID value = 10h.

Note: PCIe extended base address 要 reserve and report to OS. Size is 256MByte. 這是BIOS需要做的. (當然,BIOS也要將此 base address寫入 chipset register,讓 chipset 知道:有這樣的 cycle時,是給PCIe device的 ! )

作者 : sunnysun(sunnysun)
[ 貼文 8 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/11 下午 09:03:12
天天來聽課哦^_^
前輩辛苦了
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/12 上午 11:00:37
[補充] For P2P bridge

P2P bridge = PCI-to-PCI bridge. 其存在可以 introduce 另一 new PCI bus,可以容納更多的 PCI device.

P2P bridge亦有其 PCI config space,但是 lauout 與 PCI device有點不同,大家可以參閱P2P spec並與PCI device's config space比較一下.

在 P2P config space中,我常遇到的 issue是和下列 register有關的:
- Primary bus register: offset 18h
- Secondary bus register: offset 19h
- Subordinate bus register: offset 1Ah

----------------------------------------
Notes:
這三個 registers是BIOS在 PCI_SCAN時會決定的;所代表的意義是:這個 P2P bridge的上面 PCI bus number is ? 下面的PCI bus number is ? 及包含此 P2P bridge的 "branch" 最深的 PCI bus number is ?

Ex. 18/19/1Ah of one P2P bridge is 0/2/3
=> 此 P2P bridge 是 "bridge" PCI bus 0 and 2的(橋接在 PCI bus 0 and 2之間);而包含此P2P bridge的 PCI branch(想像成 tree structure) 最大(深)的PCI bus number is 3
----------------------------------------


- memory base/limit
- IO base/limit

----------------------------------------
Notes:
這兩個是 BIOS 在 PCI_SCAN時所 assign的. 所代表的是: resource "window" for devices behind this bridge.意即:若P2P bridge下面(就上例言:是 Bus 2上)有 PCI devices,則他們的 BARs 必須被包含在此 window 之內 !!!
----------------------------------------


[Practice]
=> 假設有一個 P2P bridge ,下面有一PCI device;現在必須要去 accessPCI device's Device ID/Vendor ID(that is, PCI config read).

但是,問題是:做這事的"點"要在 PCI_SCAN之"前"....那要如何做到呢 ^_^ ?

[Q] 如何 disable memory or IO resource window ?

作者 : harrison(harrison) 貼文超過200則人氣指數超過30000點
[ 貼文 232 | 人氣 43332 | 評價 330 | 評價/貼文 1.42 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/12 下午 05:38:01
前輩已經提到P2P Bridge我就直接問我的問題了

1.Bridge 是用來擴充PCI Bus,在PCI Bus Spec與PCI-PCI Bridge Spec中定義,PCI Device是透過IDSEL來決定他的身分,其中PCI Bus Spec定義AD[31:11],而PCI Bridge Spec定義AD[31:16] 當做IDSEL,這中間差異為何? 為什麼一個要從Bit 11開始當作是Dev 0 ,而另一個由Bit 16 才當作是 Dev 0 ?

2. 在IA32下,CONFIG_ADDRESS 會被轉成Configuration Cycles,當Bus Number <>0 時,NB會轉成Type 1 然後往 DMI送到SB,當P2P Bridge收到後,然後定址到Slot上面的PCI Device,這樣說法對嗎?

3. PCI Device透過IDSEL來決定身分,那PCIE Device呢? 我查過資料,好像PCIE不需要IDSEL那他是如何決定Device Number ?

作者 : harrison(harrison) 貼文超過200則人氣指數超過30000點
[ 貼文 232 | 人氣 43332 | 評價 330 | 評價/貼文 1.42 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/12 下午 05:38:09
前輩已經提到P2P Bridge我就直接問我的問題了

1.Bridge 是用來擴充PCI Bus,在PCI Bus Spec與PCI-PCI Bridge Spec中定義,PCI Device是透過IDSEL來決定他的身分,其中PCI Bus Spec定義AD[31:11],而PCI Bridge Spec定義AD[31:16] 當做IDSEL,這中間差異為何? 為什麼一個要從Bit 11開始當作是Dev 0 ,而另一個由Bit 16 才當作是 Dev 0 ?

2. 在IA32下,CONFIG_ADDRESS 會被轉成Configuration Cycles,當Bus Number <>0 時,NB會轉成Type 1 然後往 DMI送到SB,當P2P Bridge收到後,然後定址到Slot上面的PCI Device,這樣說法對嗎?

3. PCI Device透過IDSEL來決定身分,那PCIE Device呢? 我查過資料,好像PCIE不需要IDSEL那他是如何決定Device Number ?

作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/12 下午 09:39:39
1. IDSEL對PCI device而言是 input,是用來當作 device's "chip-select"訊號. 而且,IDSEL "如何連接" 是 H/W決定的,BIOS無法決定.

假如將板子上某個device's IDSEL "割斷",則此 device將無法接受 PCI configuration read/write(以 ru.exe來說,就是按F6後,是看不到它的...)

那要如何決定 device's IDSEL ? 一般而言, board designer會將 "unused AD lines"拿來做 IDSEL,以連接至 PCI device.

在 configuration access時,所下的 Ex. "o cf8 80001020"(看起來是 I/O transaction)會被 host bridge轉成 configuration transaction;此時, host bridge即可判斷此 transaction 要 access的 device是否在該 PCI bus上;if YES 轉成 Type 0 transaction;If NO 轉成 Type 1 transaction,並往下發送...(host bridge只要 check latched "bus information"即可完成此判斷 !)

以 Type 0言,AD bus上的 format as follows:
bit[1:0] = 00 ( indicates "Type 0" )
bit[7:2] indicates register number
bit[10:8] indicates function number

那 Bus number ? Device number ?
=> Bus number不必知道 ! 因為:Type 0產生即代表 bus number = 現在的 bus #
=> Device number呢 ? 因為,此時(Config transaction && address phase) AD bus bit[31:11]沒人用 !!! 因此, board designer會把此 21 bits拿來做 IDSEL用 !

因此, AD bus bit11 <-> device 0
     12 <-> device 1
     .......

當然,不可能 21 bits都拿來接 PCI devices;因為電路上的現實考量...

.................以上為:我所知為何從 bit11開始來當作 IDSEL................

以 Type 1言,PCI-PCI bridge收到後,會將其 bus information與自己的 secondary bus number比較;若是 addressed device是在 secondary bus上,則將 Type 1 -> Type 0;若否,繼續包成Type 1往下一層送...

在P2P spec v1.1 page 22 有一張表,說明 IDSEL generation(from primary address -> secondary address),其中有提到: if primary address bit[15:11] =0,則 secondary address AD [31:16] = 0000 0000 0000 0001;以此類推.

所以,我覺得為什麼 for P2P bridge 其 IDSEL可由 bit[31:16] 來決定的原因在此 !!!(表的關係...)

.................以上為:我推論為何從 bit16開始來當作 IDSEL................


2. 不懂你所說: "然後往 DMI送到SB,當P2P Bridge收到後,然後定址到Slot上面的PCI Device" <- what is DMI ? 還有,這過程不會牽扯SB才是...

總而言之, 是自己local bus上的,就會轉成 Type 0,然後打在AD bus上,等待認領;若否就轉成 Type 1,往下一個bridge送,繼續尋找...對的人...for each bridge,都是一樣...

3. 我所遇的 PCIe device也是由 AD bit[31:11]中找線拉至 device's IDSEL決定的.不知其他家 chipset是如何 implement.

有錯誤請指正 !
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/14 下午 10:40:03
[Practice]
假設有一個 P2P bridge ,下面有一PCI device;現在必須要去 accessPCI device's Device ID/Vendor ID(that is, PCI config read).

但是,問題是:做這事的"點"要在 PCI_SCAN之"前"....那要如何做到呢 ^_^ ?
-----------------
Ans:假如要在很早前(Ex. PCI SCAN之前)去 access P2P bridge後面的 device,照理是做不到的,因為: P2P bridge沒有被正確的 configed...

在此例中,P2P bridge的 primary/secondary/subordinate bus要被 set,後面的device才能被 accessed到 !

所以,假如要在 PCI SCAN前就 access,則BIOS必須手動去 set 此 3 bytes;然後,PCI config access才能被 forward to 其後的 PCI devices...


[Q] 如何 disable memory or IO resource window ?
-----------------
Ans: 只要將 base設成比 limit "大" 即可 !!!
作者 : harrison(harrison) 貼文超過200則人氣指數超過30000點
[ 貼文 232 | 人氣 43332 | 評價 330 | 評價/貼文 1.42 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/15 上午 09:55:50
感謝前輩回答,我所謂的 "NB會轉成Type 1 然後往 DMI送到SB,當P2P Bridge收到後,然後定址到Slot上面的PCI Device" 是指IA32下是由北橋提供CF8/CFCh功能(Host bridge),也就是對CF8/CFCh 寫入CONFIG_ADDRESS/DATA後是由北橋發起檢查transaction ,北橋先檢查是不是屬於他的,如果是就轉成Type 0(此時的Type 0是屬於PCIE 封包格式 or PCI格式,因為北橋上面有PCIE),如果不是他會轉成Type 1然後往DMI(IA32下的南北橋中間的通道)送至南橋,接著換南橋檢查transaction...其它就跟前輩說的一樣了,當找到正確的"P2P Bridge"後,轉成Type 0(此時是屬於PCI Device格式,不是PCIE),然後丟到AD Bus上去。以上是屬於我個人的認知!

>> P2P spec v1.1 page 22
由於我看Spec中的說明發現跟前輩一樣的結論,也就是針對"PCI Device"來說:
PCI Bus 規範是AD[31:11]
PCI Bridge 規範是AD[31:16]

所以我才覺得很奇怪,明明都是把Type 1 copy to AD bus ,為什麼不一樣? 另外PCIE 的方式又跟PCI不一樣,所以我還在看資料,想搞懂這部份的東西....

另外我接觸的系統中,只剩下P2P 可以擴充其他的"PCI Bus",因為PCIE 做法不同,所以在這邊我還有一個問題就是,假如擴充的Slot上面還有另一個PCI Bridge,那情況會是怎樣? 如何設定橋接的 Bus Number ?
作者 : seanchang(H) Assembly卓越專家貼文超過1000則
[ 貼文 1200 | 人氣 773 | 評價 3240 | 評價/貼文 2.7 | 送出評價 43 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/15 上午 11:46:48
>1.Bridge 是用來擴充PCI Bus,在PCI Bus Spec與PCI-PCI Bridge Spec中定義,PCI Device是透過IDSEL來決定他的身分,其中PCI Bus Spec定義AD[31:11],而PCI Bridge Spec定義AD[31:16] 當做IDSEL,這中間差異為何? 為什麼一個要從Bit 11開始當作是Dev 0 ,而另一個由Bit 16 才當作是 Dev 0 ?
>
PCI config index register裡面的資料其實和硬體解出configuration cycle是相關的.
一.轉換出來是type 0 cycle的話. 硬體只要做以下兩件事.
  1. mask 掉bus number(bit 16 ~ 31)以上的部份.
  2.解碼 device number的部份即可到對應的 AD bit. 所以其最低可以使用的就是AD11.也就是說一個bus上最多只能有 21個 devices(只是由於推動力問題, 往往是做不到的).
  Note:其實也可以設計成其他大於AD 11開始, 這要看chip設計者決定了.
二. 轉換出來是type 1 cycle的話. 只要做
 1. mask 掉reserved以上的部份(bit 24 ~31)
 2. bit 0 = 1
由於P2P跟其他device不同的地方就是, 除了type 0 clcye以外, 還必須處理 type 1 cycle. 這也是分成兩部份
一. type 1 -> type 0. 當 bus number 等於 secondary bus number 時候出現.
 1. 解碼 device number 到對應的 AD. spec中有提到轉換的表. dev 0 = AD16....etc
 2. 把 bit 0 由1 變成 0
二. type 1-> type 1. 當 bus number 介於 secondary bus number和 subordinate bus number
 1. 直接往下一層送即可.交給其他的P2P 處理.
 
>2. 在IA32下,CONFIG_ADDRESS 會被轉成Configuration Cycles,當Bus Number <>0 時,NB會轉成Type 1 然後往 DMI送到SB,當P2P Bridge收到後,然後定址到Slot上面的PCI Device,這樣說法對嗎?
>
對 PCI spec是, 如果以Intel PCI express架構來說. 那個已經被封裝成 pci express的 package了.沒有所謂的 type 0, type 1 cycle了.


>3. PCI Device透過IDSEL來決定身分,那PCIE Device呢? 我查過資料,好像PCIE不需要IDSEL那他是如何決定Device Number ?
>
PCI express 是internal routing. PCI express是個跟PCI 完全不同的架構. 只是為了軟體相容性的關係, 把software架構做的跟PCI bus一樣. PCI express是point-to-point架構, 一個link 只會連接一個device. 跟PCI 這種可以多個device在同一bus上是不一樣的. 所以 device number對PCI express是完全不重要的.
Note. AMD的Hyper transport 也是基於一樣的心態來設計軟體架構的.
作者 : seanchang(H) Assembly卓越專家貼文超過1000則
[ 貼文 1200 | 人氣 773 | 評價 3240 | 評價/貼文 2.7 | 送出評價 43 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人liaoo註記此篇回應為很有道理 2007/10/15 下午 12:06:15
>2. 不懂你所說: '然後往 DMI送到SB,當P2P Bridge收到後,然後定址到Slot上面的PCI Device' <- what is DMI ? 還有,這過程不會牽扯SB才是...
>
這裡的DMI 是 direct media interface的縮寫. 是 Intel PCI express chipset南北橋之間的連線的 bus.


>3. 我所遇的 PCIe device也是由 AD bit[31:11]中找線拉至 device''s IDSEL決定的.不知其他家 chipset是如何 implement.
>
PCIe 的device是 internal routing. 以規格來看,下一層的 device number都是為0.
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/15 下午 01:33:13
原來DMI指的是 Intel 南北橋中間的通道 ! 之前也是不知P2P bridge部份關於IDSEL的配置,查了表才知道原來有這樣的 mapping(primary address<->secondary address). 其實,可以說 "unused AD bus 會被拿來當 IDSEL用"就是了吧 ^_^

在 PCI scan時,BIOS會掃描整個系統的PCI architecture(包含 device & bridge);其掃描方式由BIOS's PCI kernel來決定 !

Ex. Assume 系統架構是這樣的: NB,P2Px3, PCIe bridge x2;其中:
A. 3 P2Ps的配置 is: P2P0下面接P2P1;P2P下面接P2P2
B. PCIe x 2 & P2P0都在 bus 0;其PFA為
     NB(0,0,0)
    P2P0(0,1,0)
    PCIE0(0,4,0)
    PCIE1(0,5,0)

=> 最後的 PCI achitecture is:

Bus 0----------------------
     NB(0,0,0),P2P0(0,1,0),PCIE0(0,5,0),PCIE1(0,6,0)

*下面 Bus 1/2/3由 P2P0/1/2所 introduce:
Bus 1----------------------
     P2P1(1,0,0)
Bus 2----------------------
     P2P2(2,0,0)
Bus 3----------------------

*下面 Bus 4由 PCIE0所 introduce:
Bus 4----------------------

*下面 Bus 5由 PCIE1所 introduce:
Bus 5----------------------

所以,Bus number 是由BIOS's scanning "algorithm"所決定的;假如採用 depth-first,則會產生上述的結果 ! 決定後的值會填到 bridge的 Primary/secondary/subordinate bus number registers !
作者 : harrison(harrison) 貼文超過200則人氣指數超過30000點
[ 貼文 232 | 人氣 43332 | 評價 330 | 評價/貼文 1.42 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/15 下午 02:27:22
感謝前輩們解惑...總算了解了...感恩^^
作者 : seanchang(H) Assembly卓越專家貼文超過1000則
[ 貼文 1200 | 人氣 773 | 評價 3240 | 評價/貼文 2.7 | 送出評價 43 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/15 下午 02:44:27

>原來DMI指的是 Intel 南北橋中間的通道 ! 之前也是不知P2P bridge部份關於IDSEL的配置,查了表才知道原來有這樣的 mapping(primary address<->secondary address). 其實,可以說 'unused AD bus 會被拿來當 IDSEL用'就是了吧 ^_^
>
是的, 只要軟體能夠知道routing 關係.怎麼接都可以. 只要bus controller控好實際的IDSEL即可. P2P之所以會有嚴格規定(兩項, 1. IDSEL&device number表, 2. secondary bus IRQ routing)是因為P2P 不一定是在板子上. 包含卡都可以有P2P bridge. 在板子上的P2P 可以靠BIOS來建立正確的 routing, 但是插卡不行. 所以必須把這些定義好. 這樣 PnP software(BIOS or OS)才能正確的完成IRQ 分配.讓卡正常工作. 所以如果觀察某些板廠. 就算是真的p2p 沒有存在在板子上, 很多PCI slot的IRQ routing都是依據p2p spec裡面的規定做(因為SB的PCI bus還是落在P2P之後).

>在 PCI scan時,BIOS會掃描整個系統的PCI architecture(包含 device & bridge);其掃描方式由BIOS''s PCI kernel來決定 !
>-----------
其實了解PCI spec. 要寫PCI scan其實可以效率好又正確. 常見的新進工程師寫法大概就是 3個 loop來處理. bus:0~255, device:0~31, function:0~7. 掃個 256*32*8次, 反正都是程式做, 結果往往也看來正確.這種寫法其實是不對的.
順便問個問題好了. 其實function number不應該是永遠需要scan的, 為什麼?什麼時候才需要scan function number?
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/15 下午 03:20:01
哈 ! 謝謝H大的指正,以前寫 PCI scan就是用 3 loops >_<
(其實,若是多了解硬體的架構,就可以寫出有效率的code了 ! 這也是F/W工程師的價值...)

我想,對於 function number的問題,應該是: PCI header region offset 0Eh bit7代表: milti-function or NOT ! 因此,可以先 check此bit,再決定要不要往下掃了...這樣又少做了許多虛工...^_^

Ex. PFA (0,3,0) 有回應(that is, Vendor ID/Device ID != 0xFFFFFFFF),則先check (0,3,0)'s PCI Reg0Eh bit7; if "1" then 此device為 multi-function device,還要再往下找 Ex. (0,3,1~7) 有無回應;if "0" then try next device number...!

作者 : chris0830(chris)
[ 貼文 6 | 人氣 2052 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/20 下午 08:44:26
哈~我也是寫三個回圈,看了樓上的回覆讓我有了更好的做法~~
我想請問一下我想做移動光棒,該怎麼做會比較好,謝~~
作者 : chris0830(chris)
[ 貼文 6 | 人氣 2052 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/20 下午 08:44:33
哈~我也是寫三個回圈,看了樓上的回覆讓我有了更好的做法~~
我想請問一下我想做移動光棒,該怎麼做會比較好,謝~~
作者 : chris0830(chris)
[ 貼文 6 | 人氣 2052 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/20 下午 08:44:47
哈~我也是寫三個回圈,看了樓上的回覆讓我有了更好的做法~~
我想請問一下我想做移動光棒,該怎麼做會比較好,謝~~
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/21 下午 10:34:05
因為你在 assembly forum中問"移動光棒",因此,我知道的方式為:

1. 要"知道如何 access video memory";即在 screen上顯示出想要的 character & 效果Ex. In Video mode 3,在位置(0,0)處顯示 "Menu",而 Menu(前景)是暗灰色,底色(背景) is black

2. 寫 2 subroutines;一為 SetText(),一為 GetTextAttr().前者用於:在位置(x,y)處顯示 Text with attributes(foreground & background),後者為:取得位置(x,y)處的Text 的 attributes(foreground & background)

3. 有了 2 的 routines,你就可以做到移動光棒的效果 !
Ex.
A. default 選項 is 字 is: darkgray and 底色 is black
B. 光棒的 字 is: white and 底色 is blue
C. 選到的 item 用 B's attribute;沒選到的用 A's attribute
D. 用位置(x,y) 來判斷 "要不要回到第一個選項" ?

參考一下 ^_^
作者 : rexz(rex)
[ 貼文 6 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/24 上午 11:06:00
(我現在是做 P-A 家的 BIOS)問個問題, 客戶的擴充板是從我們產品上某個 PCI slot (ex., PCI#2) 去擴展 PCI Slot.
想請教一下, P2P Bridge 後擴展的 PCI Slot 要怎麼樣去處理它的 slot number?

因為我們現在遇到問題是, 所有該擴充板上插的 PCI 卡, 在 windows 裡 report 的槽號都是 PCI slot2.
PCI/P2P Spec 有看過, 但是還是看不太懂它的說明... Orz
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/24 下午 06:23:14

>(我現在是做 P-A 家的 BIOS)問個問題, 客戶的擴充板是從我們產品上某個 PCI slot (ex., PCI#2) 去擴展 PCI Slot.
>想請教一下, P2P Bridge 後擴展的 PCI Slot 要怎麼樣去處理它的 slot number?
>
>因為我們現在遇到問題是, 所有該擴充板上插的 PCI 卡, 在 windows 裡 report 的槽號都是 PCI slot2.
>PCI/P2P Spec 有看過, 但是還是看不太懂它的說明... Orz

請定義 PCI slot number(槽號) ?

還有: "在 windows 裡 report 的槽號都是 PCI slot2" <- 這句話的意思 is ?
作者 : rexz(rex)
[ 貼文 6 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/29 下午 03:23:03
>請定義 PCI slot number(槽號) ?
PCI Slot number(槽號) 是指客戶底板上, 透過 P2P bridge 所擴展出來的 PCI slot.

>還有: "在 windows 裡 report 的槽號都是 PCI slot2" <- 這句話的意思 is ?
這是指在 WinXP 下, 透過系統管理員看到的 PCI Device 的 位置.
通常是顯示成這樣的:
PCI 插槽n (PCI 匯流排 x, 裝置 y , 函數 z)

因為客戶的 P2P bridge 在我們的 slot2 的位置. 所以現在是所有這塊底板上的 PCI 設備槽號都是 2 . (但這是客戶所不能接受的. )

請前輩指點迷津, 謝謝!
作者 : weber(weber) 程式設計甘苦談優秀好手貼文超過200則人氣指數超過30000點
[ 貼文 302 | 人氣 33525 | 評價 2220 | 評價/貼文 7.35 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/29 下午 07:30:56
PCI Express 是以 packet 的形式來傳資料,
很像網路的 OSI Seven Layer 架構.
不同於 PCI 是以訊號線型式在傳資料.

pacekt base 能有效運用頻寬, 而且在高速傳輸時,
用內部的 parity check bit, 確保資料正確.

眳p有出 "PCI Express 系統架構" 中譯本,
非常詳細介紹 PCI Express 的規格.

我最感興趣的是, PCI Express 的 Hot Plug 跟電源管理.
書中描述如何以 Windows WDM driver + ACPI BIOS + HW
去實踐電源管理的功能.

看到這些資料, 感到非常高興.
原來我在 EeePC 上開發的電源管理功能,
其架構竟然跟作者講的, 不謀而合.
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/29 下午 08:41:35


你是說:客戶有一塊card(含P2P bridge及延伸出來的PCI slots)插在你板子的 slot 2;
然後,在 device manager中看到所有這張card上的 PCI slot 槽號都是相同的...

我的問題是:這card所延伸出來的 PCI slot的 (匯流排,裝置,函數)各為何 ?

會這樣問的原因是:PCI slot都可以用 ( 匯流排,裝置,函數 )來代表(假如有插 device於其上 !!! )

有沒有可能是:槽號相同,但 (匯流排,裝置,函數) 不相同 ?
* 這樣是可以的 !

還有,最重要的是: "插在上面的 device" 可以正常運作嗎 ? <- this is key !!!

*槽號應該是可以改的(給人看的) ! 但 (匯流排,裝置,函數) 可是無法改 and unique的...
作者 : rexz(rex)
[ 貼文 6 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/30 下午 12:40:49
沒有圖果然很麻煩... XD
簡單畫個圖好了. 希望前輩看得懂...

(bus1)-slot-LAN
     |
     p2p (ext board)
     |
 (bus2)+slot1--slot2--slot3--slot4---

bus1 那邊是我們產品上的. 客戶透過 p2p ext board 做成 PCI 擴充底板.
除了客戶想看的 Slot No. 不能正常顯示外, 其它都正常.

我的問題是: 要怎麼樣才能讓客戶在WinXP下看到他想看到的槽號?
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/30 下午 01:29:09
原來只是顯示上的問題...! 每個 slot 功能都正常...

我沒有做過這樣的事(改槽號,slot number).

我的想法是:
1. 將此 ext card插到其他 platform,看看情況是否一樣...
2. 這種 OS下的 behavior,在BIOS裡,我唯一想到的是: ACPI ASL !!!
    1) 假如有找到 ok platform,可用 ACPIview看,是否 ASL宣告有不同處
     2) 可否 "手動" 加 ASL code 來宣告這些 slots ?

僅供參考 !
作者 : rexz(rex)
[ 貼文 6 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/30 下午 03:57:03
感謝前輩指點, 我已在 ACPI Spec 中找到方向了. ^_^

不曉得前輩有沒有計畫要寫 ACPI 的部份呢?
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/30 下午 06:38:50
BIOS的功力就是在每一次的 debug 中去累積與消化吸收...加油 ^_^
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/10/31 下午 02:52:32
ACPI涵蓋了 AP, OS,DRIVER,BIOS,H/W,是一個 total solution. 其範圍可想而知是很大的 ! 因此,以 case study的方式來切入應該比較實際及有效率...否則,就要硬K spec了...(tough work >_<)

建議你多 search 此論壇有關 ACPI 的文章...

作者 : seanchang(H) Assembly卓越專家貼文超過1000則
[ 貼文 1200 | 人氣 773 | 評價 3240 | 評價/貼文 2.7 | 送出評價 43 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/10 上午 10:58:55
>哈 ! 謝謝H大的指正,以前寫 PCI scan就是用 3 loops >_<
>(其實,若是多了解硬體的架構,就可以寫出有效率的code了 ! 這也是F/W工程師的價值...)
>
>我想,對於 function number的問題,應該是: PCI header region offset 0Eh bit7代表: milti-function or NOT ! 因此,可以先 check此bit,再決定要不要往下掃了...這樣又少做了許多虛工...^_^
>
>Ex. PFA (0,3,0) 有回應(that is, Vendor ID/Device ID != 0xFFFFFFFF),則先check (0,3,0)''s PCI Reg0Eh bit7; if '1' then 此device為 multi-function device,還要再往下找 Ex. (0,3,1~7) 有無回應;if '0' then try next device number...!
>
檢查multi function bit是正確的, 但是不只是因為效率問題. 而是PCI 規格中, single function裝置可以不解碼 config cycle type 0 bit[8~10], 也就是說 一個 single function裝置, 會對 所有的function number回應, 也就是會出現 8 個相同的device.

順便說一下我的scan加速法. 其實我不是使用 vandor ID & device ID來判斷裝置存在與否. 我是用 class/subclass/interfae ID來作判斷. default 只scan bus 0, 遇到 P2P bridge才會把taget bus number+1, 如果遇到multi host(host bridge 數量> 1)的板子才會完整掃描 255個 bus. ^_^

作者 : zclsucc(zcl)
[ 貼文 10 | 人氣 1056 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/12/1 下午 04:21:49
你好!请教一下,bios在scan pci时,是怎样配置一个设备的 pci header ? eg. command reg.
 THK!
作者 : thina(thina)
[ 貼文 4 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/14 下午 02:41:01
最近才剛學BIOS很多東西都不懂
IT8888G的設定最近才剛看
都懵懵懂懂的.剛好有大大的說明
感覺比較清楚了

對於大大說得USB PFA(0,6,0)
這幾個值代表什麼意思呢~?
80003040<--1 0000000 00000000 00110 000 010000 00
6是代表device number的意思嗎?
那其他兩個0是代表為何呢?還有這個直該在哪裡取得?是在IT8888G的DATASHEET嗎?
還是USB的呢?

問了很基礎的問題
先感謝大大回答囉
作者 : thina(thina)
[ 貼文 4 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/14 下午 02:41:21
最近才剛學BIOS很多東西都不懂
IT8888G的設定最近才剛看
都懵懵懂懂的.剛好有大大的說明
感覺比較清楚了

對於大大說得USB PFA(0,6,0)
這幾個值代表什麼意思呢~?
80003040<--1 0000000 00000000 00110 000 010000 00
6是代表device number的意思嗎?
那其他兩個0是代表為何呢?還有這個直該在哪裡取得?是在IT8888G的DATASHEET嗎?
還是USB的呢?

問了很基礎的問題
先感謝大大回答囉
作者 : thina(thina)
[ 貼文 4 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/14 下午 02:41:56
最近才剛學BIOS很多東西都不懂
IT8888G的設定最近才剛看
都懵懵懂懂的.剛好有大大的說明
感覺比較清楚了

對於大大說得USB PFA(0,6,0)
這幾個值代表什麼意思呢~?
80003040<--1 0000000 00000000 00110 000 010000 00
6是代表device number的意思嗎?
那其他兩個0是代表為何呢?還有這個直該在哪裡取得?是在IT8888G的DATASHEET嗎?
還是USB的呢?

問了很基礎的問題
先感謝大大回答囉
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/15 上午 09:03:44
每一個PCI device都可以用 Bus number,Device number, and Function number來唯一代表. PFA(0,6,0) => 該device 的 PCI Function Address = Bus 0, Device 6, Function 0.

要存取PCI device時,一定要透過 2 port(ADDRESS port & Data port).
所以假設要存取 PCI device (0,6,0) 的 register 40h時,就要將 80003040h(共32-bit)丟到 Address Port,然後從 Data Port 存取.

80003040h =>
Bit31 = 1;代表這個 IO write 是要存取 PCI device的;spec上有指明,H/W可據此知道是要 for PCI access用的;照做就是了
Bit[23:16] = 00000000b;8-bit代表 Bus number
Bit[15:11] = 00011b;5-bit代表 Device number
Bit[10:8] = 000b;3-bit代表 Function
Bit[7:0] = 40h;代表要存取哪一個 register( PCI spec共定義了 256 register,8-bit可以涵蓋)

*你的排列不太 friendly( to me ^_^) 80003040h 我會這樣看:
10000000^00000000^00110000^01000000

就我所知,基本上PCI device 的 Bus & Device,number是硬體拉線決定的(假如是 embedded device Ex. North bridge,south bridge),亦即你將PCI device "放到" board上後.....就決定了,spec不會指定.

Function number則是幾乎從 0 開始. 假如是 multi-function device,則會有 function 0,1,2,3 ...etc or 0,2,4,6,...etc.

總之,假如你是做 board designer,則要去決定將 device 如何配置,一但決定,PFA就定了;假如你是 BIOS/SW,則可以請 board designer告訴你該device的 PFA或是自己 scan PCI devices

IT8888F/G is a PCI to ISA bridge single function device ! 它應該是類似南橋的功能 ! 跟 USB沒關 !

你得好好 study spec來了解一下 !
作者 : thina(thina)
[ 貼文 4 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/2/15 上午 09:31:12
感謝大大熱心回答
說真的因為以前不是相關的科系
所以對於這類的知識比較缺乏~
不過我會努力的

支持大大的心得文分享
作者 : grantwu00(彤晟)
[ 貼文 29 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/20 上午 08:40:33
我現在在做的Project為AMD CPU+NB RS780+SB SB710.

掛在NB下有三個PCIE devices
兩個Lan chip 和一個Mini PCIE slot

當我Clear CMOS 後的第一次開機
系統可是Scan 到兩個LAN chip
但Scan不到Mini PCIE slot(Wireless lan)

第二次(CMOS 儲存)開機時
則三個devices都抓不到(RU看不到)

有人可以幫忙嘛?
我目前用AMI core8

我公司很小(17人)
只有我是BIOS engineer
目前討論無門

To : Liaoo
看到您發表這麼多文章
希望有您的Email, 方便和您討論問題 :)

Grant
email : grantwu00@yahoo.com.tw
作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/21 下午 02:25:02
>掛在NB下有三個PCIE devices
>兩個Lan chip 和一個Mini PCIE slot
>
>當我Clear CMOS 後的第一次開機
>系統可是Scan 到兩個LAN chip
>但Scan不到Mini PCIE slot(Wireless lan)

第一次開機可以找到二個LAN但是找不到Mini PCIE slot(Wireless lan),
Mini PCIE slot(Wireless lan)前面的Bridge是否有問題,如果沒有Bridge
可能要確認PCIE Root是否有開.
>
>第二次(CMOS 儲存)開機時
>則三個devices都抓不到(RU看不到)

RS780有register可以選擇X1,X4,X8,X16,可以確認這個部分是否有問題,
或是PCIE Root是否有開.

A code可以打開BIOS parameters這個選項確認PCIE root是否有開.
上述部分僅供參考!!
作者 : grantwu00(彤晟)
[ 貼文 29 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/22 下午 05:03:16

我確定過三個PCIE device都是X1, 沒問題, nbconfig可以看設定
BIOS parameters 裡有個DISABLE_ROOT_PORT_NO_LINK 目前是OFF
( 1 = Disable root port when no link or endpoint attached.)

noname你可不可以給我你的Email或電話
很開心可以和你討論問題

Grant
作者 : liaoo(liaoo) Assembly優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 507 | 人氣 27127 | 評價 1140 | 評價/貼文 2.25 | 送出評價 17 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/22 下午 11:23:07
感覺這個問題可分成兩方面來看:
1. 為什麼 mini-PCIe 上的 wireless lan 一直都抓不到...(不管clear cmos那次 or save 之後)
2. 為什麼 clear-cmos 那次可以抓到 2 PCIe lan,但第二次(save)之後就抓不到了...

關於第一點,我的印象只有:有些 PCIe device 與 PCIe host 可能不太"合",所以可能需要 "re-try"...意即有可能bios在 detect PCIe device 時要有 re-try 機制...失敗了要再設定一些東西,然後再 detect....當然有 timeout機制...至於要做哪些事與 chipset有關...看能不能查到相關資料....

關於第二點,我的建議是 debug...比較一下相關 register 設定;或是利用 debug tool 去追...例如: 在要 detect PCIe device之前,比較 clear-cmos 與 save cmos 時的 相關設定....

最後...我已經沒碰bios有兩年多...有要討論的就 po 到版上來...其他先進看到也可以提供建議...^_^

good luck
作者 : allengzg(allen)
[ 貼文 95 | 人氣 1 | 評價 140 | 評價/貼文 1.47 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/23 上午 11:16:09
>當我Clear CMOS 後的第一次開機
>系統可是Scan 到兩個LAN chip
>但Scan不到Mini PCIE slot(Wireless lan)
>第二次(CMOS 儲存)開機時
>則三個devices都抓不到(RU看不到)

Dear,
要不要先trace Clear/Save CMOS的差別(是不是bios setup內選項被disable了),到時再看為何always sacn不到Mini PCIE slot

作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/2/23 下午 03:51:15
>我確定過三個PCIE device都是X1, 沒問題, nbconfig可以看設定
>BIOS parameters 裡有個DISABLE_ROOT_PORT_NO_LINK 目前是OFF
>( 1 = Disable root port when no link or endpoint attached.)

三個PCIE device都是X1!!那在NB是怎樣分配x1,x4,x8,x16的介面給device?
RS780會有分配的x1,x4,x8,x16的介面,這一個部分跟硬體可以搭配起來嗎?

我只是一個在角落玩沙的小工程師!!與其留我的聯絡方式不如將問題Po上來,
這樣其他高手看到也會提出建議.
作者 : grantwu00(彤晟)
[ 貼文 29 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/12 上午 03:43:50
不好意思
這問題發表在這裡好像不太好
但是還是希望各位先進幫忙

我現在在開發一個平台
是AMD L325+AMD R780+AMD SB 710 (Clock 為 ICS9LPRS471C)
不管我插667/800Mhz DDR2
AMD CPU振出來的Dram Clock都只有300MHZ(是AMD CPU 限制)

我想超頻
把AMD CPU振出來的Dram Clock 超頻至333
該如何調整Clock的M/N 值??

我不懂超頻, 也不懂Clock Gen M/N值的調法
如果您懂Clock Gen 的M/N 公式 或設定方法, 請告訴我這笨笨的 軟體 BIOS engineer

不懂硬體的Grant留

作者 : grantwu00(彤晟)
[ 貼文 29 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/12 上午 05:49:37
上面的問題補充

因為AMD CPU振出來的Dram clock只有300MHz(Limitation)
目前DDR2 667/800 Ram 不穩

AMI BIOS engineer建議
1. 降頻跑533Mhz
2. 將CPU Dram超頻至333/400Mhz.

但我不知道第二項如何Implement?

過去在這問問題很多人回答 且解決
這次希望大家不吝回覆

Grant
作者 : noname12(noname12)
[ 貼文 111 | 人氣 6301 | 評價 50 | 評價/貼文 0.45 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/3/13 下午 02:34:21
>2. 將CPU Dram超頻至333/400Mhz.

這個應該會有CPU MSR可以調整!!詳情可能要問一下AMD吧.
僅供參考
 板主 : 徵求中
 > 組合語言 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 組合語言 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
組合語言
1 H 2220 
2 liaoo 990 
3 青衫 970 
4 牧童哥 940 
5 史努比 920 
6 qq 480 
7 GHOST-JACKY 330 
8 ]CALL-151 310 
9 harrison 300 
10 掌握文武半邊天 280 
組合語言
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.21875