亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1842 | 回復(fù): 3
打印 上一主題 下一主題

[驅(qū)動] 誰能解釋一下下面這段讀寫寄存器的含義 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-07-18 22:05 |只看該作者 |倒序瀏覽
(下面的代碼都是運行于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;
}

請高手幫忙解釋一下,謝了!

論壇徽章:
0
2 [報告]
發(fā)表于 2010-07-19 01:57 |只看該作者
這位朋友

你有沒有用過那種命令和數(shù)據(jù)配合使用的情況

我猜想

寫的時候,先寫的是地址(也就是寫命令),然后在地址加4的地方寫(也就是寫數(shù)據(jù))

讀的時候,先寫的是地址(也就是偽寫命令),然后在地址加4的地方讀(也就是讀數(shù)據(jù))

說的不一定很確切,觸類旁通吧,基本意思應(yīng)該差不多了

論壇徽章:
0
3 [報告]
發(fā)表于 2010-07-19 12:40 |只看該作者
讀寄存器值之前要這么寫一下EdrvInstance_l.m_pIoAddr,是為了保證寄存器內(nèi)植的正確性

論壇徽章:
0
4 [報告]
發(fā)表于 2010-07-19 13:17 |只看該作者
看datasheet 有的硬件就是這樣設(shè)計的。
比如有的網(wǎng)卡的phy芯片的讀寫是通過先寫命令字,才能讀寫數(shù)據(jù)。你的例子也差不多是如此。
還有eeprom也是如此。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP