wince驱动的初始化探测部分

小弟季义钦 2012-02-18 03:13:28
最近接触了wince驱动开发,分析了一下网卡驱动,发现其无论是IO基地址,中断号,还是其他硬件信息都是从注册表中读取出来的。
1 难道这是获取硬件信息的唯一方式么???
2 如果是这样的话,我们在驱动开发之前就得将硬件信息填写到注册表中去???

想Linux中所有设备都是依附到总线上面的(wince肯定也是这样),但是Linux中的硬件信息都是通过总线依赖的一些探测函数,或者访问函数(比如PCI配置空间的访问函数)来获取硬件信息的,或者说基本上都是动态获取这些参数的。

3 难道在驱动的硬件探测和初始化阶段 Linux 和 Wince有如此大的差别么???
...全文
176 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
InsaneCode 2012-02-24
  • 打赏
  • 举报
回复
很多硬件信息写进注册表,也是为了增强驱动的可移植性。注册表只是工具,只是一个保存信息的地方。很多信息不用注册表一样可以保存。不过用注册表会更加方便,可读。并且有些注册表也是必须得,微软上层代码需要去访问这些注册表。
小弟季义钦 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kacyquan 的回复:]
很多硬件信息写进注册表,也是为了增强驱动的可移植性。注册表只是工具,只是一个保存信息的地方。很多信息不用注册表一样可以保存。不过用注册表会更加方便,可读。并且有些注册表也是必须得,微软上层代码需要去访问这些注册表。
[/Quote]

我想要是是看看像PCI这类不是从注册表读取硬件参数的网卡的驱动,看看它们是如何自动获取硬件资源的。
paul_chao 2012-02-23
  • 打赏
  • 举报
回复
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
小弟季义钦 2012-02-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 paul_chao 的回复:]
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 起……
[/Quote]

您的回复很犀利,我完全赞同,您能不能发一个wince下面的的PCI 网卡驱动给我看看,谢谢了,邮箱:jiq408694711@163.com 我就是想看看PCI网卡是如何不从registry静态读取,而是动态获取地址,中断号的。
一介布衣萧萧 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiq408694711 的回复:]

引用 5 楼 brantyou 的回复:
大多数驱动都有相应的注册表信息的,在project.reg或者platform.reg中引用到。这些注册表信息会比加载驱动先一步。而LZ看到读取注册表的动作,估计就是读取这些注册表信息


您没明白我的意思,我想问的是难道所有的网卡驱动的IO地址,中断号等硬件信息都是静态从注册表获取的?

我认为的是应该在驱动中动态检测获取,不同的总线还应该……
[/Quote]

你这个有点一概而论。以你看到的情况估计目前大部分的这些信息都是预先定好的,存放到注册表中,就不需要动态这么麻烦。如果要知道这些信息是不是一定要预先订好或者动态获取的话,建议你再详细了解一下网卡驱动相关
小弟季义钦 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 brantyou 的回复:]
大多数驱动都有相应的注册表信息的,在project.reg或者platform.reg中引用到。这些注册表信息会比加载驱动先一步。而LZ看到读取注册表的动作,估计就是读取这些注册表信息
[/Quote]

您没明白我的意思,我想问的是难道所有的网卡驱动的IO地址,中断号等硬件信息都是静态从注册表获取的?

我认为的是应该在驱动中动态检测获取,不同的总线还应该具备不同的探测方法。
难道不应该是这样么???
小弟季义钦 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 brantyou 的回复:]
引用 6 楼 jiq408694711 的回复:

引用 5 楼 brantyou 的回复:
大多数驱动都有相应的注册表信息的,在project.reg或者platform.reg中引用到。这些注册表信息会比加载驱动先一步。而LZ看到读取注册表的动作,估计就是读取这些注册表信息


您没明白我的意思,我想问的是难道所有的网卡驱动的IO地址,中断号等硬件信息都是静态从注册表获取的?

……
[/Quote]

我就是在看了3种网卡的驱动,ne2000,dm900,cs8900,之后,我才这样说的。。。。
一介布衣萧萧 2012-02-20
  • 打赏
  • 举报
回复
大多数驱动都有相应的注册表信息的,在project.reg或者platform.reg中引用到。这些注册表信息会比加载驱动先一步。而LZ看到读取注册表的动作,估计就是读取这些注册表信息
小弟季义钦 2012-02-19
  • 打赏
  • 举报
回复
help~~~
小弟季义钦 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 asdlbool 的回复:]
不是说在驱动开发之前就把信息写的注册表的。
驱动开发好后,在系统运行调用驱动的时候就进行注册。然后读取硬件信息,。
我也有这方面的问题。等高手。
[/Quote]

为什么我看的好几种网卡驱动都是从注册表读取这些硬件信息呢???
asdlbool 2012-02-19
  • 打赏
  • 举报
回复
不是说在驱动开发之前就把信息写的注册表的。
驱动开发好后,在系统运行调用驱动的时候就进行注册。然后读取硬件信息,。
我也有这方面的问题。等高手。
小弟季义钦 2012-02-18
  • 打赏
  • 举报
回复
怎么没人理我这个帖子。

我就不信wince中网卡驱动的硬件资源只是一味地从注册表读取,而不管是PCI网卡,ISA网卡还是EISA网卡都是这样。

按道理说网卡的硬件资源的获取(IO地址,中断号等)的方式都是依赖于不同总线,而采用不同方式的呀!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧