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...