阅读:4209回复:9
pci9052的vxworks驱动开发(急)
做了pci的板子,写驱动的时候,从9052寄存器中读出基地址,再用sysMmuMapAdd()之后,没有出现错误,之后用memory方式读写的时候出现page fault错误
程序如下: if(ERROR == pciFindDevice(CAN_VENDOR_ID, CAN_DEVICE_ID, 0, &busNo, &deviceNo, &FunNo)) { printErr("\ncan't find the can card\n"); return ERROR; } pciConfigInLong (busNo, deviceNo, FunNo, PCI_CFG_BASE_ADDRESS_0, &membaseCsr); membaseCsr &= 0xFFFFFFF0; if (sysMmuMapAdd((void *)membaseCsr, (4*1024),INIT_STATE_MASK, INIT_STATE) == ERROR) { printErr("\ncan't assign enough memory\n"); return ERROR; } else { pciConfigOutWord (busNo,deviceNo,FunNo,PCI_CFG_COMMAND,PCI_CMD_IO_ENABLE|PCI_CMD_MEM_ENABLE|PCI_CMD_MASTER_ENABLE); data = (int *)(membaseCsr + 40); ch = *data;//出现page fault 错误 } 应该不是板子的问题,我用winDriver可以用memory方式读内容,是sysMmuMapAdd出错了吗 |
|
沙发#
发布于:2005-07-05 11:31
在embed.go.3322.org上有解答
|
|
板凳#
发布于:2007-06-12 21:17
请问楼上,能将你写的这个程序“vxworks下的pci9052驱动程序”发给我一份吗?谢谢
phpboy@163.com |
|
地板#
发布于:2007-07-01 00:10
内存映射问题,映射位置不对~~
|
|
地下室#
发布于:2007-07-19 16:29
请问楼上的,能否将你写的“vxworks下的pci9052驱动程序”也发给我一份么?谢谢
zkhnqd29@126.com |
|
5楼#
发布于:2007-08-20 16:58
|
|
6楼#
发布于:2008-10-15 07:01
我的驱动也是这个问题,page fault,不知如何解决。
|
|
7楼#
发布于:2008-10-15 17:24
在用户程序里调用sysMmuMapAdd后,必须再调用usrMemInit,否则无效,或者在sysLib.c里调用sysMmuMapAdd.
|
|
|
8楼#
发布于:2008-10-15 19:35
明天我按照楼上的第一种方法试一试,今天我是改的sysLib.c,但只有bar2可以映射,bar0无论如何不能映射,而且程序一进入loading at 0x0018000000(大概是这样吧)就重启。烦恼呀。
|
|
9楼#
发布于:2010-04-12 10:50
kankan
|
|
|