龙芯软件开发(23)-- PCI设备初始化

目前在个人电脑里,主板上使用局部总线技术把不同的设备连接在一起,这样就可以随时添加设备到总线上。比如主板上一般都有很多PCI插槽,可以插入显示卡、声卡、网卡以及符合PCI总线标准的其它设备。当然,还有很多低速的外围设备不能直接跟PCI局部总线相连接的,比如IDE硬盘、软盘、USB、键盘、鼠标等等,这样就需要一样东西把这些设备转换才能连接到PCI局部总线上,这个东西就是南桥的芯片。在龙芯电脑里采用的南桥是VT82C686,在汇编已经初始化它的串口输出,在这里会更进一步初始化其它功能。现在就来看代码,分析它怎么样实现的。如下:

void
tgt_devinit()
{
SBD_DISPLAY("686I",0);

vt82c686_init();
上面调用函数进行南桥更进一步初始化。

/*
* Gather info about and configure caches.
*/
if(getenv("ocache_off")) {
CpuOnboardCacheOn = 0;
}
else {
CpuOnboardCacheOn = 1;
}
if(getenv("ecache_off")) {
CpuExternalCacheOn = 0;
}
else {
CpuExternalCacheOn = 1;
}
上面根据环境变量来选择缓存的配置。

CPU_ConfigCache();
上面缓存配置。

_pci_businit(1); /* PCI bus initialization */
上面进行PCI局部总线上的设备初始化。

}

先来仔细地分析更进一步初始化南桥的功能,它的代码如下:
void vt82c686_init(void)
{
initSerial();
上面初始化串口。

init_keyboard();
上面初始化键盘输入。

initIDE();
上面初始化IDE硬盘。

initIRQ();
上面初始化外面中断请求。

//disable_usb();
enable_io_decode();
上面设置IO开始启用。

initUSB();
上面初始化USB主设备。

}

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License