这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 版主请进 恳切求教pci相关驱动

共9条 1/1 1 跳转至

版主请进 恳切求教pci相关驱动

菜鸟
2005-01-15 04:32:21     打赏

我对pci槽can卡编驱动程序,pci桥是pci9052,can控制器是sja1000,

我用程序找到了pci的内存地址0xf5006000,0xf5007000,0xf5008000三段,我咨询了板卡的技术支持,他们说我得到的0xf5006000,0xf5007000,0xf5008000只是虚拟地址,第一个是配置空间,第二三个是sja1000的寄存器空间,但他们说找到这三个地址还不能配置寄存器,只是虚拟地址,还要通过转换才能变为可以访问的物理地址,才能对sja1000的寄存器操作,但他们不懂vxworks下的驱动编写。

这个方面我不知道,原先还以为找到了pci的内存地址就可以对sja1000的寄存器操作了,我不知怎样在映射完后找到设备的寄存器并操作的。给我个方向,内否提供一些思路或资料,我就可以学那方面的知识,真的感谢了

[em01][em01]



关键词: 版主     请进     恳切     求教     相关     驱动    

菜鸟
2005-01-15 07:01:00     打赏
2楼
如果你是在x86下则需要用sysMmuMapAdd()来作一次映射, 其它平台下则可以直接用pciConfigOutLong/sysPciOutLong()之类的函数操作这些空间了.

菜鸟
2005-01-15 23:27:00     打赏
3楼

请问我在调用sysMmuMapAdd()时候,第一个参数是否就是我得到的pci内存地址0xf5006000,0xf5007000,0xf5008000,然后我就可以使用*(UINT32*)(0xf5007000+偏移)来访问sja1000的寄存器了吗?谢谢


菜鸟
2005-01-15 23:28:00     打赏
4楼

我是在x86下


菜鸟
2005-01-19 18:37:00     打赏
5楼

各位高手,我的这个问题还是没有解决,用sysMmuMapAdd()来作映射已经成功了,即不再发生"page fault",但我使用*(UINT32*)(0xf5007000+偏移)来访问sja1000的寄存器好像并不正确,无法修改其中本应可以修改的内容,我对这个不熟悉,大家给个思路,在tornado下有没有可以查看内存中映射的寄存器内容的工具,或者用什么可以看,我无计可施,大家出手相助一下吧,我就可以完成后写一个详细的过程文档发上来,


菜鸟
2005-01-20 16:58:00     打赏
6楼

高手们,该出手时出手了,拉小弟一把


菜鸟
2005-01-21 19:21:00     打赏
7楼

谢谢上面朋友,再请问大家,这个转换是要自己编程序实现,还是查到转换就可以了


菜鸟
2005-01-23 04:31:00     打赏
8楼

上面的朋友,版主,救救我吧,我查了PCI地址和LOCAL地址的转换,在我的Tornado中是空函数,在帮助中也明确说不用转换,我用的是x86的Tornado,BSP用的是pentium,但是做完sysMmuMapAdd()之后,指向的地址倒是可以读写了,但根本不是sja1000的控制寄存器,大家就给我出一些主意吧,到底要怎样内存映射啊,快要疯了

[em06][em06]

菜鸟
2005-01-26 17:39:00     打赏
9楼
bobby朋友,仗义啊,大家就出手相助一下吧

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]