版主,各位高手,没有办法了,再次求教
我对pci槽can卡编驱动程序,pci桥是pci9052,can控制器是sja1000
我用程序找到了pci的内存地址0xf5006000,0xf5007000,0xf5008000三段,我咨询了板卡的技术支持,他们说我得到的0xf5006000,0xf5007000,0xf5008000只是虚拟地址,第一个是配置空间,第二三个是sja1000的寄存器空间,但他们说找到这三个地址还不能配置寄存器,只是虚拟地址,还要通过转换才能变为可以访问的物理地址,才能对sja1000的寄存器操作,但他们不懂vxworks下的驱动编写,我用sysMmuMapAdd()函数作动态内存映射。
我用得是x86的Tornado,BSP用的是pentium,但是做完sysMmuMapAdd()之后,指向的地址倒是可以读写了,即没有“page fault”了,但根本不是sja1000的控制寄存器,应该是没有映射成功,大家就给我出一些主意吧,到底要怎样内存映射啊,应该在哪里完成这个映射,是否在找到PCI设备之后就要映射,而且BIOS给PCI设备分配得都是高地址,是否在BSP中关于内存得参数应该改一些,就靠大家了,我是郁闷好久了。
或者告诉我,这种PCI桥接得sja1000,怎样能看到它得寄存器,或者用什么工具,我再PCI内存映射后根本不能看到它得寄存器