terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:1659回复:6

问一个port和memory地址转换的问题

楼主#
更多 发布于:2004-07-09 15:26
最近才开始接触pci driver编程,看到人家用0xcf8和0xcfc写驱动,有的需要先call HalTranslateBusAddress 然后再mmmapiospace()在进行READ_PORT_UCHAR操作,为什么有的程序里面就没有这些,直接就READ_PORT_UCHAR()?这是为什么?
还有一个问题mmmapiospace()怎么知道要map的是一个port还是mem?
在线等回复。
chh
chh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-20
  • 最后登录2009-07-31
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-13 09:19
DDK中有例子.你可以参考一下.
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-14 13:53
NT本来支持的不仅是X86结构. X86的CPU有IO地址空间的概念. 对IO地址空间的操作有单独的指令完成. 但是NT支持的另外一种结构, ALPHA, 却是没有IO空间的. 所有的IO空间都映射到了系统地址空间. 为了能让自己DRIVER作者少写点代码. HAL"抽象"了IO空间的概念. 标准的做法自然是要用HAL去转换.
至于要MAP的到底是PORT还是MEM, 你写DRIVER的人自己都不知道的话还是转行做其他的毕竟好.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-14 14:58
斑竹,那你就以cfc为例子给我说说吧,你的意思我明白,可是还是不理解这套机制
多谢了
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-28 00:04
地址有好多种,总线相关地址,系统物理地址,虚拟地址,这些地址中,驱动程序能够操作的是虚拟地址。
总线相关地址的含义是,对于某条总线,他又某个地址,这个地址不能直接在系统内使用,因为其他某个总线可能也有相同的地址,这样的话,如果直接使用会有冲突。决绝的办法,系统范围你只能使用系统物理地址,需要总线地质转化为物理地址,这就是HalTranslateBusAddress 做的工作,在HalTranslateBusAddress 结束后,他又一个输出将告诉你转换的是io地址还是内存地址
最后,通过mmmapiospace将会把一个系统物理地址转换为驱动认识的虚拟地址
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-28 09:11
那你怎么知道是io addr还是mem addr?从pci配置空间读出来的是总线地址还是物理地址?
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-29 07:57
应该是总线地址
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
游客

返回顶部