当前位置:  技术问答>linux和unix

谁能解释一下下面这段读写寄存器的含义

    来源: 互联网  发布时间:2016-12-25

    本文导语:  (下面的代码都是运行于ARM平台的) 看如下定义的EDRV_REGB_WRITE,为何写寄存器要先将寄存器写到EdrvInstance_l.m_pIoAddr地址处,然后再将值写到EdrvInstance_l.m_pIoAddr+4处? #define EDRV_REGB_WRITE(bReg_p, bVal_p) do {          ...

(下面的代码都是运行于ARM平台的)
看如下定义的EDRV_REGB_WRITE,为何写寄存器要先将寄存器写到EdrvInstance_l.m_pIoAddr地址处,然后再将值写到EdrvInstance_l.m_pIoAddr+4处?
#define EDRV_REGB_WRITE(bReg_p, bVal_p) do { 
                                            writeb(bReg_p, EdrvInstance_l.m_pIoAddr);    
                                            writeb(bVal_p, EdrvInstance_l.m_pIoAddr + 4); 
                                        } while (0)

下面是定义EDRV_REGB_READ的代码,为何读寄存器值之前要这么写一下EdrvInstance_l.m_pIoAddr?
#define EDRV_REGB_READ(bReg)            EdrvRegbRead(bReg)

static inline BYTE EdrvRegbRead(BYTE bReg_p)
{
BYTE bVal;

    writeb(bReg_p, EdrvInstance_l.m_pIoAddr);   // 为何读之前要这么写一下?
    bVal = readb(EdrvInstance_l.m_pIoAddr + 4);
    return bVal;
}

请高手帮忙解释一下,谢了!

|
这个要去看datasheet
有些硬件的读写是有一些特殊步骤的。

单独从代码来看,我感觉是这样:
这个硬件有很多寄存器,但是都没有独立的读写地址。
读写的时候要先指定要访问的寄存器(把寄存器号写入m_pIoAddr)
然后从一个统一的地址读/写 (m_pIoAddr + 4)

|
楼上正解,  你首先要告诉硬件你打算读那个寄存器, 然后再去读。
当然,不是所有的硬件都是这样,这取决于硬件的特性,还得看硬件手册。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 项目中需要读写条形码,哪位高手给解释一下
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • classpath里的.;到底有什么用?能解释解释吗?
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • 请问java的xml解释器有哪些?怎么能在applet里用这些解释器?
  • 大虾们给我解释解释这个输出问题。这里小弟先谢了。
  • 实在是不能理解,谁能帮我解释解释!
  • 能不能帮我解释解释什么是EJB?
  • 关于"symbol lookup error"问题的诡异现象,高手帮忙解释解释
  • alex 解释器 alexinterpreter
  • 地震解释软件系统 OpendTect
  • 请教高人来解释一下小弟关于poll()函数的疑惑
  • Java源代码解释器 Beanshell
  • 这个"."怎么解释?
  • 高手帮忙解释
  • 请详细解释javamail里的“收件人类型”的CC,TO,BCC的意义???
  • linux中/dev下都是些什么文件啊?大侠们谁可以帮我解释一下?
  • 多线程的例子。但是不知道为什么看不懂。唉,笨:(各们帮帮忙了给我解释解释
  • 数字电视CA卡解释模块 OSCam
  • markdonw解释器 sundown
  • Brainfuck编译器和JIT解释器 bfc
  • Scheme Lisp 解释器 Subs


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3