阅读:1584回复:8
如何读写外围设备寄存器?
各位,我在pxa255+wince下面遇到了一个问题,就是,通过扩展口(isa兼容)扩展的板卡,在wince下做读写操作,怎么做都没法操作到硬件(我猜测是没有操作到,因为我不插板卡读出来的数据跟插卡一样),请问各位有没有遇到过这种问题,如何解决?另外这个读写时序应该怎么通过软件来控制?
如能帮助解决,本人愿帮助各位解决2个以上重大问题,呵呵 |
|
沙发#
发布于:2005-03-01 12:44
你是用什么函数进行操作的?用汇编指令直接读写应该可以。
[编辑 - 3/1/05 by wwei_wang] |
|
|
板凳#
发布于:2005-03-01 13:41
我用过READ_PORT_USHORT等,也用过类似i=*(volate ushort *)XXX等各种指令,结果是不行,你说的汇编如何读写?
|
|
地板#
发布于:2005-03-03 12:11
READ_PORT_USHORT等函数不能直接用的。
如果用汇编的话,直接对端口地址进行操作就行了。 |
|
|
地下室#
发布于:2005-03-04 10:13
你说具体点啊,函数怎么用,汇编怎么写
|
|
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] |
|
|
6楼#
发布于:2005-03-05 09:50
兄弟,我用的cpu是arm的,你这是×86的啊
|
|
7楼#
发布于:2005-03-07 12:19
不好意思兄弟,看错了:))
|
|
|
8楼#
发布于:2005-03-08 09:08
你用的地址是cached,还是uncached? 如果你想直接操作硬件,你应该使用uncached的地址。CE中提供了几个函数,例如,VirtualAlloc + VirtualCopy 帮你拿到uncached的地址。
|
|