求助vxworks的pci驱动问题 vxbus
目前在vxwork下面做一个pci板子的驱动 当前目标是读写寄存器 用的是vxbus 系统是64位的
首先在BSP中注册用有dr dc mk .c IMAGE里面没有注册这个硬件
(struct vxbDevRegInfo *)NULL,
VXB_DEVID_DEVICE,
VXB_BUSID_PCI,
VXB_VER_5_0_0,
"pcie",
&PciExFuncs,
PciEx_methods,
NULL,
NULL
},
NELEMENTS(DevIDList),
DevIDList
然后在PciExInstInit2 里面做了初始化和映射
vxbRegMap(pInst, 0, &pDrvCtrl->regHandle);
启动vxwork系统以后 通过串口输出调试 用vxbusshow能够看到这个硬件的信息
pInst->pRegBase[0]这个里面是有地址的,这个应该就是basememory吧?0xffff800024021000
我当时也注册了两个method用来给应用调用 分别是read和write
我在image的usrAppInit函数里面用vxbDevMethodRun
vxbDevMethodRun(DEVMETHOD_CALL(busCtlrDevCfgWrite),19) != OK)
发现vxbDevMethodRun返回是成功的 但是没有进入我自己写的write函数
如果在BSP的usrAppInit函数里面用vxbDevMethodRun去write一个值 vxwork启动的时候在bsp那里就会报错
PciExMethodDevCfgWrite函数内容如下 addr是我用来测试的一个offset 是可以进行read和write的
vxbWrite64 (PCIEX_HANDLE(pDev),
(UINT64 *)((UINT64)pDev->pRegBase[0] + (UINT64)addr),
data);
[解决办法]
坐在镜像里就可以了 ,镜像是包含BSP的
最好是做一个DOWNLOAD,方便调试