helenhll
驱动牛犊
驱动牛犊
  • 注册日期2005-03-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望55点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4122回复:9

pci9052的vxworks驱动开发(急)

楼主#
更多 发布于:2005-07-03 14:48
  做了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出错了吗
ghc97711
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2011-05-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-07-05 11:31
在embed.go.3322.org上有解答
phpboy
驱动牛犊
驱动牛犊
  • 注册日期2007-04-09
  • 最后登录2009-09-10
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-12 21:17
请问楼上,能将你写的这个程序“vxworks下的pci9052驱动程序”发给我一份吗?谢谢
phpboy@163.com
hwybird
论坛版主
论坛版主
  • 注册日期2006-11-11
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分988分
  • 威望359点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-01 00:10
内存映射问题,映射位置不对~~
zkhnqd29
驱动牛犊
驱动牛犊
  • 注册日期2007-03-22
  • 最后登录2009-06-06
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-19 16:29
请问楼上的,能否将你写的“vxworks下的pci9052驱动程序”也发给我一份么?谢谢
zkhnqd29@126.com
hwybird
论坛版主
论坛版主
  • 注册日期2006-11-11
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分988分
  • 威望359点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-20 16:58
请给hwybird@gmail.com来信
jz98742
驱动牛犊
驱动牛犊
  • 注册日期2006-09-26
  • 最后登录2009-09-13
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望39点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-10-15 07:01
我的驱动也是这个问题,page fault,不知如何解决。
davidyoung
驱动牛犊
驱动牛犊
  • 注册日期2005-01-25
  • 最后登录2009-03-21
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望45点
  • 贡献值0点
  • 好评度30点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-10-15 17:24
在用户程序里调用sysMmuMapAdd后,必须再调用usrMemInit,否则无效,或者在sysLib.c里调用sysMmuMapAdd.
yjkh
jz98742
驱动牛犊
驱动牛犊
  • 注册日期2006-09-26
  • 最后登录2009-09-13
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望39点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-10-15 19:35
明天我按照楼上的第一种方法试一试,今天我是改的sysLib.c,但只有bar2可以映射,bar0无论如何不能映射,而且程序一进入loading at 0x0018000000(大概是这样吧)就重启。烦恼呀。
lhsundriver
驱动牛犊
驱动牛犊
  • 注册日期2005-10-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望181点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2010-04-12 10:50
kankan
hdjasfhkjasdhfkj
游客

返回顶部