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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12
最近訪問板塊 發(fā)新帖
樓主: illeggy
打印 上一主題 下一主題

PCI映射內(nèi)存讀寫求助 [復(fù)制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2008-11-13 14:38 |只看該作者
原帖由 dreamice 于 2008-11-7 21:26 發(fā)表



恭喜,恭喜
建議你寫個總結(jié)跟在這個帖子后面,分享一下你的經(jīng)驗,包括如何解決的,以及相關(guān)技術(shù)知識,這樣有助于你鞏固經(jīng)驗,又有利于他人學(xué)習(xí)借鑒,呵呵。


我這段時間忙完之后就寫。

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
12 [報告]
發(fā)表于 2008-11-13 15:33 |只看該作者
原帖由 illeggy 于 2008-11-13 14:38 發(fā)表


我這段時間忙完之后就寫。


期待illeggy兄大大作

論壇徽章:
0
13 [報告]
發(fā)表于 2008-11-14 10:42 |只看該作者

回復(fù) #1 illeggy 的帖子

物理映射地址的問題亞

論壇徽章:
0
14 [報告]
發(fā)表于 2008-12-11 15:30 |只看該作者
好不容易可以歇兩天了,簡單寫了點自己的感受。

關(guān)于設(shè)備的驅(qū)動步驟等通用性的東西就不啰嗦了,我認(rèn)為步驟最好的參考是內(nèi)核的說明文檔《Documentation/pci.txt》,實現(xiàn)的參考就是LDD3了。這里就說針對DM642這個PCI設(shè)備說一下其特殊性,資料來源于TI的SPRU581C。

第一,IO memory,IO port,簡單的說,一個是memory,一個是port。前者先映射再通過readX、writeX(早期版本)或ioreadX、iowriteX(近期版本)訪問,后者直接使用inX、outX訪問,后者也可以ioport_map為memory被訪問。針對不同架構(gòu)的處理器,兩者的處理略有不同,這里不細(xì)述了。

第二,host、agent,master、slave。這是采用DMA方式時候遇到的概念,host和agent是固定的,master和slave區(qū)分誰是數(shù)據(jù)傳輸?shù)陌l(fā)起者。

PCI驅(qū)動最重要的就是PCI Registers的設(shè)置,對于DM642,有Configuration Registers(只能被host訪問)、I/O Registers(只能被host訪問)、Memory-Mapped Registers(能被host和dsp本身訪問)。

1、Configuration Registers:它里面的Base Address需要特別注意,其余的一般的話都用不到。
DM642的Base Address有三種:4M-byte prefetchable、8M-byte nonprefetchable和4 words I/O。
(1)4M-byte prefetchable的作用:DM642有4GB的尋址空間,需要使用開窗的方式來完成內(nèi)存映射,4M-byte prefetchable就提供窗內(nèi)的映射地址信息。通過pci_resource_X系列函數(shù)得到該IO區(qū)域的信息,ioremap后就可以直接被主機(jī)訪問了。
(2)8M-byte nonprefetchable,沒用到。
(3)4 words I/O,它在pci_resource_X后需要ioport_map,才能被當(dāng)作內(nèi)存來訪問。

2、I/O Registers:可以通過8M-byte nonprefetchable或4 words I/O訪問,我選擇了后者。它的DSPP就是完成開窗位置的寄存器。

3、Memory-Mapped Registers,master傳輸時候用到的寄存器。

到目前為止,主機(jī)通過PCI訪問DM642內(nèi)存的準(zhǔn)備工作已經(jīng)完成,接下來就是Memory Map到需要訪問的地址上。
PCI Base Slave Address Generation = DSPP register (bits 9-0) + Current PCI address (bits 21-0),共32位地址。
這里需要處理的都是物理地址,問題就出在了Current PCI address這里,從哪里得到這個地址呢,沒有相關(guān)的寄存器。因為CPU執(zhí)行內(nèi)存讀寫函數(shù)時候,會自動把虛擬地址轉(zhuǎn)換為物理地址,那么Current PCI address就是由CPU自己來完成的。我只需要在ioreadX和iowriteX里給出Current PCI virtual address,CPU自己會轉(zhuǎn)換為Current PCI address,就可以得到PCI Base Slave Address。

至此,主機(jī)讀寫DM642內(nèi)存已經(jīng)可以順利進(jìn)行。

評分

參與人數(shù) 1可用積分 +12 收起 理由
dreamice + 12 我很贊同,總結(jié)得很好!

查看全部評分

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
15 [報告]
發(fā)表于 2008-12-11 15:49 |只看該作者
總結(jié)得很好,學(xué)習(xí)了

論壇徽章:
0
16 [報告]
發(fā)表于 2008-12-11 15:50 |只看該作者
斑竹過獎了,我只是新手,第一次寫驅(qū)動,還有太多東西要學(xué)習(xí)。

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
17 [報告]
發(fā)表于 2008-12-11 15:53 |只看該作者

回復(fù) #16 illeggy 的帖子

不斷學(xué)習(xí),不斷總結(jié),才能更快的進(jìn)步,呵呵,一起努力
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(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