3650|6

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince 6.0 iocontrol 传值的问题 [复制链接]

这几天在wince 6.0下调试一个驱动

大概情况是这样
一个应用程序,调用一个驱动的ioctl,传了两个buffer过去。
然后再那个驱动里面我遇到两个问题:

1. 在驱动里访问buffer,发现应用程序里的值只能访问到第一个
比如,应用程序里定义
    UINT16 dwInBuffer[4] = {1,2,3,4};
    UINT16 dwOutBuffer[4] = {7,8,9,0};

DeviceIoControl(hINNO,
        IIC_READ_BYTE,
        dwInBuffer,2,
        dwOutBuffer,2,
        &dwReturn,NULL))


驱动的IOCONTROL里试图打印出buffer里的值
    RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufin values %d,%d\r\n"),pBufIn[0],pBufIn[1]));
    RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufout values %d,%d\r\n"),pBufOut[0],pBufOut[1]));

发现只能打印出第一个

    RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufin values %d,%d\r\n"),pBufIn[0],pBufIn[1]));
    RETAILMSG(1, (TEXT("\r\n#####################INO_IOControl:dump bufout values %d,%d\r\n"),pBufOut[0],pBufOut[1]));



2.还出现了data abort
"
NO_IOControl:the reg address is 0x1
Exception 'Data Abort' (4): Thread-Id=00f60006(pth=8072d954), Proc-Id=00400002(pprc=80608308) 'NK.EXE', VM-active=059e0002(pprc=812eddac) 'explorer.exe'
PC=c0ac1870(i2c.dll+0x00001870) RA=c0ac176c(i2c.dll+0x0000176c) SP=d26ffe58, BVA=0003f694
!!! I2C_IST EXCEPTION: 0xC0000005 !!!
INNO_I2C_Read ERROR: 3221225477
Read IIC addr 0x1  val 0x7 dwReturn = 1

"




这个驱动还会调用另外一个驱动(i2c)。我对wince不熟悉。看了一些文档。尝试了一些方法,比如使用CeOpenCallerBuffer去做映射,结果还是出现第一个问题,第二个问题倒是不会出现。

不知道大家有没有遇到类似的问题。请指点一下。谢了

最新回复

底层不懂,学习一下  详情 回复 发表于 2008-9-24 11:50
点赞 关注

回复
举报

58

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
上文的问题一,
只能打印出开头的1,跟7
后面的就是0了

#####################INO_IOControl:dump bufin values 1,0

#####################INO_IOControl:dump bufout values 7,0
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
wince下的memory mashling还是不大懂。
我还是觉得linux下copy_from_usr copy_to_usr比较方便
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
恩,上面的问题是我数据结构弄错了

UINT16 dwInBuffer[4] = {1,2,3,4};
当然是 1,0,2,0,3,0,4,0
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
我马上也要整I2C驱动了,对I2C驱动没信心啊.记得在WINCE4.2下整过一次,可最后是以失败告终!
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

6
 
i2c的问题不一定都是软件的。
先让硬件检查下,上拉是否正确,供电是否正确
然后检查复位是否正确,芯片如果有输入时钟也要检查时钟是否正确。
这些硬件问题解决完了以后再检查软件程序上是否正确
先读下I2C协议在动手写吧。
http://blog.eeworld.net/xumercury/archive/2008/09/20/2954449.aspx
提供你参考下I2C的程序
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

7
 
底层不懂,学习一下
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表