在驱动中访问指定寄存器错误?
WINCE6.0下有个大的结构如下,通过MmMapIoSpace映射到ARM的一个硬件模块。
typedef struct
{
UINT32 MCR ;
UINT16 CTRL ;
。。。。。
UINT32 RESERVED1[19] ;
MB_REG MB[64];
UINT32 RESERVED2[256] ;
UINT32 RXIMR[64] ;
} CSP_CAN_REG, *PCSP_CAN_REG;
现在有个奇怪现象,能够访问结构中前面几个寄存器内容,如果访问RXIMR[1]中的内容,则系统提示data abort失败:
Exception 'Data Abort' (4): Thread-Id=06360006(pth=89f093c0), Proc-Id=00400002(pprc=82079308) 'NK.EXE', VM-active=0481008a(pprc=89e4350c) 'test35.exe'
PC=c04a3cf4(k.ceddk.dll+0x00003cf4) RA=d4852024(can.dll+0x00002024) SP=d453fd18, BVA=00000000
Exception 'Raised Exception' (-1): Thread-Id=06360006(pth=89f093c0), Proc-Id=00400002(pprc=82079308) 'NK.EXE', VM-active=0481008a(pprc=89e4350c) 'test35.exe'
PC=c00ab708(k.coredll.dll+0x0001b708) RA=8021a4c8(kernel.dll+0x000064c8) SP=d453f5b4, BVA=ffffffff
ReadPacket
请问这种现象是不是MmMapIoSpace不能映射大的结构?(该结构有2432字节)
[解决办法]
是不是哪里限制访问权限了?