|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
以下文章是我学习和思考的一个总结吧,有什么不妥,请多多指教!
计算机系统中有各种外设,如网卡、硬盘、光驱、软驱。还可以有一些即插即用的设备,像U盘以及USB接口的键盘鼠标等。那么系统在工作时,CPU何以能准确访问这些设备,并控制它们完成需要的操作呢?这还要从系统启动后对设备的配置说起。
每个设备都有256个字节的配置空间。系统启动复位后,这些设备不能进行任何功能操作。CPU只能以配置访问的方式访问它们。
对设备进行配置主要完成以下功能:给设备分配适当的系统资源,使之实现其基本功能和高级功能,使设备在其配置空间中动态地记录下它的错误情况。
设备配置究竟是一个怎样的过程呢?下面以在PCI总线架构下如何实现设备的配置进行说明。
首先要说明一下,PCI总线上的配置访问分为两种:TYPE0访问和TYPE1访问。TYPE0用于访问同级总线上的设备,TYPE1用于访问次级或次级以下总线上的设备。PCI的配置读和配置写都有32位的地址域,TYPE0访问和TYPE1访问就是通过地址域的最低两位来区分的。此外,地址域包括了以下信息:设备所驻留的总线号,设备号,设备中的功能号,还有在每个功能的配置空间中的双字偏移。
系统复位后,CPU读取BIOS中的代码,开始对设备的配置周期。首先北桥检查目标总线是不是BUS0,如果是,就启动TYPE0的配置访问,否则启动TYPE1的配置访问。如果是TYPE0的配置访问,接下来检测地址段中的设备号。设备号为n,桥就驱动IDSELn。设备n就启动相应类型的设备配置周期。地址段中余下的信息,即功能号和双字偏移量共同决定配置空间内的偏移量,从而找到要访问的配置寄存器。如果是TYPE1的配置访问,只有下游的桥响应该访问。如果目标总线属于某桥的下游总线中的一个,该桥就启动配置访问周期。如果目标总线号匹配于某桥的次级总线,则该桥将TYPE1的访问转换成TYPE0的访问。接下来的步骤上面已经叙述过。
这样,CPU执行完BIOS中的代码时,也就完成了对设备的配置。系统启动完毕,等待用户输入。此后对设备的访问就是IO操作或者访存操作。
对系统中挂在PCI-X,HT,AGP等总线下的设备的配置也使用PCI的配置访问方式,这些总线叫做与PCI兼容的总线。
|
|