最近接触了wince驱动开发,分析了一下网卡驱动,发现其无论是IO基地址,中断号,还是其他硬件信息都是从注册表中读取出来的。
1 难道这是获取硬件信息的唯一方式么???
2 如果是这样的话,我们在驱动开发之前就得将硬件信息填写到注册表中去???
想Linux中所有设备都是依附到总线上面的(wince肯定也是这样),但是Linux中的硬件信息都是通过总线依赖的一些探测函数,或者访问函数(比如PCI配置空间的访问函数)来获取硬件信息的,或者说基本上都是动态获取这些参数的。
3 难道在驱动的硬件探测和初始化阶段 Linux 和 Wince有如此大的差别么???
------解决方案--------------------
1. PCI, USB, SDIO 等 BUS 都有支援 PNP(Plug and Play), 所以 BUS driver 有能力動態分配, ISA bus 不支援 PNP, 所以必須將解碼位址寫死.
2. ne2000, dm9000 & cs8900 都是 ISA bus 的 chip, 所以必須將 H/W 解碼位址寫定, WINCE 中是寫在 registry, driver 起動時再去讀, Linux 我不熟, 但也一定是在 S/W 中寫定的, LZ 不可以拿 PCI bus chip 與 ISA bus chip 比較.
Paul, Chao @ Techware