qinlei_sz
驱动小牛
驱动小牛
  • 注册日期2007-03-24
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分1090分
  • 威望510点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
阅读:1993回复:5

驱动对应用传下来的指针进行操作失败????

楼主#
更多 发布于:2008-04-15 12:12
在调试IIC驱动,现在遇到个郁闷的问题.
要实现的应用:
    应用程序通过IIC向FM模块发送配置数据.
执行处理过程和出现的错误:
    应用程序向IIC驱动通过IOCTL_I2C_WRITE传送了
  DWORD   SlaveAddr;      // Target Slave Address
    UCHAR   WordAddr;       // Starting Slave Word Address
    PUCHAR  Data;           // pBuffer
    DWORD   Count;          // nBytes to read/write
    在IOCTL中将PUCHAR  Data用MapPtrToProcess映射到了pI2C->hProc的进程空间。
  此时,在IOCTL中将PUCHAR  Data指向的数据打印出来是对的,接着把上面得到的参数传给
  dwErr = HW_Write(pI2C,
                             ((PI2C_IO_DESC)pBufIn)->SlaveAddr,
                             ((PI2C_IO_DESC)pBufIn)->WordAddr,
                             puc,
                             ((PI2C_IO_DESC)pBufIn)->Count);
    在HW_Write中对pI2C的成员做设置,其中
  pI2C->Data      = puc;
    for(i=0;i<Count;i++)
    RETAILMSG(1,(TEXT(">HW_Write(pBufIn[%d]=0x%x)\r\n"),i ,*(pI2C->Data)));
       RETAILMSG(1,(TEXT(">HW_Write(pI2C->Data=0x%x)\r\n"),pI2C->Data));
   在上面再次对pI2C->Data操作并打印出来也是对的。

问题来了:当HW_Write启动IIC后,整个IIC操作在I2C_IST()中进行,而IIC在发送数据时对指针pI2C->Data指向的空间取直来发送时,就出现了异常:data abort: thread=83d8dc30........
得到的异常是 I2C_IST EXCEPTION:0xc0000005
 为什么在I2C_IST中对pI2C->Data的操作会异常??我已经在IOCTL中MapPtrToProcess了还不行吗?但在HW_Write中处理时有是可以的?
qinlei_sz
驱动小牛
驱动小牛
  • 注册日期2007-03-24
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分1090分
  • 威望510点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-04-16 17:32
自己顶起先....
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
板凳#
发布于:2008-04-16 18:18
用户被禁言,该主题自动屏蔽!
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-04-17 21:20
在你的IST中调用SetPProcPermission,,具体用法看一下帮助.
学海无涯
qinlei_sz
驱动小牛
驱动小牛
  • 注册日期2007-03-24
  • 最后登录2012-12-18
  • 粉丝0
  • 关注0
  • 积分1090分
  • 威望510点
  • 贡献值0点
  • 好评度145点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-04-18 18:11
我的2440的,我现在也只是在驱动里搞个全局的数组,在IOCTL里转换移一下,其他招也想不起来了.
fengtao0797
驱动牛犊
驱动牛犊
  • 注册日期2005-10-21
  • 最后登录2011-04-25
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望39点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-04-24 18:18
我原来也遇到过这种问题,也是用全局变量的方法来回避的.但是很奇怪的是,在开发板上试的时候又是正常的了.
游客

返回顶部