龍芯軟體開發(23) PCI裝置初始化

2021-09-28 22:00:09 字數 1405 閱讀 4869

2007-01-11 00:05:00

caimouse

閱讀數 5217

更多分類專欄:

嵌入式軟體開發

目前在個人電腦裡,主機板上使用區域性匯流排技術把不同的裝置連線在一起,這樣就可以隨時新增裝置到匯流排上。比如主機板上一般都有很多

pci插槽,可以插入顯示卡、音效卡、網絡卡以及符合

pci匯流排標準的其它裝置。當然,還有很多低速的外圍裝置不能直接跟

pci區域性匯流排相連線的,比如

ide硬碟、軟盤、

usb、鍵盤、滑鼠等等,這樣就需要一樣東西把這些裝置轉換才能連線到

pci區域性匯流排上,這個東西就是南橋的晶元。在龍芯電腦裡採用的南橋是

vt82c686

,在彙編已經初始化它的串列埠輸出,在這裡會更進一步初始化其它功能。現在就來看**,分析它怎麼樣實現的。如下:

void

tgt_devinit

()else

if(getenv("ecache_off"))

else

上面根據環境變數來選擇快取的配置。

cpu_configcache();

上面快取配置。

_pci_businit(1); /* pci bus initialization */

上面進行

pci區域性匯流排上的裝置初始化。

}先來仔細地分析更進一步初始化南橋的功能,它的**如下:

void

vt82c686_init(void)

目前在個人電腦裡,主機板上使用區域性匯流排技術把不同的裝置連線在一起,這樣就可以隨時新增裝置到匯流排上。比如主機板上一般都有很多

pci插槽,可以插入顯示卡、音效卡、網絡卡以及符合

pci匯流排標準的其它裝置。當然,還有很多低速的外圍裝置不能直接跟

pci區域性匯流排相連線的,比如

ide硬碟、軟盤、

usb、鍵盤、滑鼠等等,這樣就需要一樣東西把這些裝置轉換才能連線到

pci區域性匯流排上,這個東西就是南橋的晶元。在龍芯電腦裡採用的南橋是

vt82c686

,在彙編已經初始化它的串列埠輸出,在這裡會更進一步初始化其它功能。現在就來看**,分析它怎麼樣實現的。如下:

void

tgt_devinit

()else

if(getenv("ecache_off"))

else

上面根據環境變數來選擇快取的配置。

cpu_configcache();

上面快取配置。

_pci_businit(1); /* pci bus initialization */

上面進行

pci區域性匯流排上的裝置初始化。

}先來仔細地分析更進一步初始化南橋的功能,它的**如下:

void

vt82c686_init(void)

龍芯軟體開發(24) PCI裝置初始化2

在彙編的 裡,已經進行了串列埠初始化,在這裡更進一步初始化串列埠,它是通過呼叫下面的 實現的 define superio cfg reg 0x85 上面定義南橋裡串列埠暫存器位址。static void initserial void 接著來看初始化鍵盤,static void init keyb...

龍芯軟體開發(25) PCI裝置初始化3

上面繼續初始化南橋之後,再接著下來,就要初始化 pci匯流排上其它的裝置了。看下面的 cpu configcache 上面重新配置龍芯 2e的快取。pci businit 1 pci bus initialization 上面繼續初始化 pci匯流排上的裝置,這個函式裡要初始化完成所有其它連線到 p...

龍芯軟體開發(26) PCI裝置初始化4

2007 01 19 23 18 00 caimouse 閱讀數 4805 更多分類專欄 嵌入式軟體開發 繼續來分析 pci裝置的搜尋過程,下面就是通過呼叫搜尋程式來實現的。for i 0,pb pci head i pci roots i pb pb next 接著去看看函式 pci scan d...