ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:1484回复:8

如何读写外围设备寄存器?

楼主#
更多 发布于:2005-03-01 10:46
各位,我在pxa255+wince下面遇到了一个问题,就是,通过扩展口(isa兼容)扩展的板卡,在wince下做读写操作,怎么做都没法操作到硬件(我猜测是没有操作到,因为我不插板卡读出来的数据跟插卡一样),请问各位有没有遇到过这种问题,如何解决?另外这个读写时序应该怎么通过软件来控制?

如能帮助解决,本人愿帮助各位解决2个以上重大问题,呵呵
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-01 12:44
你是用什么函数进行操作的?用汇编指令直接读写应该可以。

[编辑 -  3/1/05 by  wwei_wang]
Come on, let us drive the world.
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-01 13:41
我用过READ_PORT_USHORT等,也用过类似i=*(volate ushort *)XXX等各种指令,结果是不行,你说的汇编如何读写?
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-03 12:11
READ_PORT_USHORT等函数不能直接用的。
如果用汇编的话,直接对端口地址进行操作就行了。
Come on, let us drive the world.
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-04 10:13
你说具体点啊,函数怎么用,汇编怎么写
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-04 12:01

汇编方法如下:
读端口:
UCHAR dat;
_asm
{
mov dx,nPort
in al,dx
mov dat,al
}
return dat;


写端口:
_asm
{
mov dx,nPort
mov al,dat    //dat为要输出的值
out dx,al
}

[编辑 -  3/4/05 by  wwei_wang]
Come on, let us drive the world.
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-05 09:50
兄弟,我用的cpu是arm的,你这是×86的啊
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-07 12:19
不好意思兄弟,看错了:))
Come on, let us drive the world.
veryku
驱动牛犊
驱动牛犊
  • 注册日期2005-03-02
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-08 09:08
你用的地址是cached,还是uncached? 如果你想直接操作硬件,你应该使用uncached的地址。CE中提供了几个函数,例如,VirtualAlloc + VirtualCopy 帮你拿到uncached的地址。
游客

返回顶部