【MIPS CPU 体系结构概述2】连载2:

这里关键是要理解这些硬件平台和熟悉的x86不同之处.笔者印象较深的有几个:
* item MIPS不象X86有很标准的硬件软件接口,而是五花八门,每个厂家有一套,因为它们很多是嵌入式系统或者专门的工作站.不象PC中,有了BIOS后用同一套的程序,就 可以使用很多不同的主板和CPU.

MIPS中的'bios'常用的有pmon和yamon,都是开放源代码的软件。
很多开发板带的固件功能和PC BIOS很不一样,它们多数支持串口显示,或者网络下载和启动,以及类DEBUG的调试界面,但可能根本不支持显卡和 硬盘,没有一般的基本'输入输出'功能.

* PCI系统和地址空间,总线等问题.
在x86中,IO空间用专门的指令访问,而PCI设备的内存空间和物理内存空间是相同的,也就是说,在CPU看来物理内存从地址0开始的话,在PCI设备 看来也是一样的.反之,PCI设备的基地址寄存器设定的PCI存储地址,CPU用 相同的物理地址访问就行了.

而在MIPS中就很不一样了,IO一般是memory map的,map到哪里就倚赖具体 平台了.而PCI设备的地址空间和CPU所见的物理内存地址空间往往也不一样 (bus address & physical address).所以mips kernel的iob/outb,以及bus_to_virt/virt_to_bus,phys_to_virt/virt_to_phys,ioremap等就要小心考虑.这些问题有时间笔者会对这些问题做专门的说明.

PCI配置空间的读写和地址空间映射的处理通常都是每个平台不一样的. 因为缺乏统一接口的BIOS,内核经常要自己做PCI设备的枚举,空间分配, 中断分配.

* 中断系统.
PC中中断控制器先是有8259,后来是apic,而cpu的中断处理386之后好像 也变化不大,相对统一.
mips CPU的中断处理方式倒是比较一致,但是主板上的控制器就乱七八糟了 怎么鉴别中断源,怎么编程控制器等任务就得各自实现了.

总的说来,MIPS CPU的中断处理方式体现了RISC的特点:软件做事多,硬件尽量 精简. 编程控制器,提供中断控制接口,dispatch中系?这一部分原来很混乱,
大家各写各的,现在有人试图写一些比较统一的代码(实际上就是原来x86上 用的controller/handler 抽象).

--电子创新网--
粤ICP备12070055号