龙芯软件开发(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 主设备。
 
}
 
 

你可能感兴趣的:(软件开发)