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

  免費注冊 查看新帖 |

Chinaunix

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

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

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-11-07 12:56 |只看該作者 |倒序瀏覽
自己做的板子,linux2.6.20,host mpc8313,pci device dm642,dm642外接64MB的SDRAM。

Base 0: 4M-byte prefetchable maps to all of DSP memory with the DSP page register (DSPP).

驅(qū)動里,我用pci_resource_start獲得base0的物理地址,ioremap到虛擬地址mmio上。

在read和write函數(shù)里,我使用ioread(mmio + offset)和iowrite(mmio + offset)來讀寫內(nèi)存。

按照我的理解,4MB的開窗范圍,那么offset的范圍是0—3fffff,超過這個范圍的話,就要挪動窗的位置,即重新設(shè)置DSPP的值,64MB的外設(shè)內(nèi)存,DSPP的范圍就是0—F。

現(xiàn)在的情況是:
1、offset的范圍是0— 47ffff 的時候,都可以正常讀寫。
2、DSPP為0時,可以正常讀寫。DSPP設(shè)置其余值時候,讀出的數(shù)據(jù)全高。

請問我對于的讀寫理解是不是有問題,正確的是怎么樣的呢?謝謝。

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [報告]
發(fā)表于 2008-11-07 14:27 |只看該作者
原帖由 illeggy 于 2008-11-7 12:56 發(fā)表
自己做的板子,linux2.6.20,host mpc8313,pci device dm642,dm642外接64MB的SDRAM。

Base 0: 4M-byte prefetchable maps to all of DSP memory with the DSP page register (DSPP).

驅(qū)動里,我用pci_r ...


我不能確定是不是你ioremap的時候,雖然映射了4M,但實際上你得設(shè)備,這4M訪問是有限制的。

論壇徽章:
0
3 [報告]
發(fā)表于 2008-11-07 15:33 |只看該作者
應(yīng)該沒有限制。

DSPP register (bits 9−0) Current PCI address (bits 21−0)
sdram的物理地址是0x80000000,映射后是0xc9080000。

比如,我要讀寫0xc9080000這個地址,即設(shè)置DSPP為0x324,ioread32(0xc9080000)讀出來全高。

請問上面的Current PCI address 是不是ioread里面的參數(shù)的低22位?

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [報告]
發(fā)表于 2008-11-07 15:51 |只看該作者
我有幾個疑問:
DSPP在里面起什么作用?他應(yīng)該和內(nèi)核沒有關(guān)系,怎么能影響io映射呢?

論壇徽章:
0
5 [報告]
發(fā)表于 2008-11-07 16:01 |只看該作者
DSPP設(shè)置sdram開窗的位置。我映射的內(nèi)存大小只有4MB,實際的sdram有64MB,就需要DSPP。

PCI Base Slave Address = DSPP register (bits 9-0) Current PCI address (bits 21-0),這里的PCI Base Slave Address是物理地址?

DSPP bits 9-0 是根據(jù)要訪問的物理地址得到的,那么我理解Current PCI address (bits 21-0)也應(yīng)該是一個物理地址。

可是,ioread的參數(shù)應(yīng)該是一個映射后的虛擬地址,即Current PCI address不是ioread的參數(shù)。

那么Current PCI address 是在哪里定義的呢,或者說以什么形式出現(xiàn)的呢?

我這樣理解對么?謝謝。

ps,我對io端口、io內(nèi)存這類定義理解的比較模糊,我的理解是,sdram屬于io內(nèi)存,所以對sdram的訪問是通過ioread來完成的。不知道對不對。

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [報告]
發(fā)表于 2008-11-07 16:10 |只看該作者
原帖由 illeggy 于 2008-11-7 16:01 發(fā)表
DSPP設(shè)置sdram開窗的位置。我映射的內(nèi)存大小只有4MB,實際的sdram有64MB,就需要DSPP。

PCI Base Slave Address = DSPP register (bits 9-0) Current PCI address (bits 21-0),這里的PCI Base Slave Addres ...



你得內(nèi)核跑的那個內(nèi)存是主內(nèi)存,其它的要通過iomap這樣的方式映射到主內(nèi)存上去的,都屬于io內(nèi)存,訪問被映射的內(nèi)存,可以直接通過訪問主內(nèi)存的虛擬地址來實現(xiàn)。
至于PCI這個,我現(xiàn)在不是特別清楚。

論壇徽章:
0
7 [報告]
發(fā)表于 2008-11-07 16:13 |只看該作者
謝謝版主,你這么解釋內(nèi)存的話,我現(xiàn)在的問題就集中在從哪里獲取Current PCI address了。

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
8 [報告]
發(fā)表于 2008-11-07 16:31 |只看該作者
原帖由 illeggy 于 2008-11-7 16:13 發(fā)表
謝謝版主,你這么解釋內(nèi)存的話,我現(xiàn)在的問題就集中在從哪里獲取Current PCI address了。


PCI這塊我不是很熟悉。io映射這塊情景分析上講得很詳細,你可以看看,呵呵。

論壇徽章:
0
9 [報告]
發(fā)表于 2008-11-07 18:47 |只看該作者
問題解決了。

Current PCI address是cpu自動從虛擬地址轉(zhuǎn)換得到的。

論壇徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
10 [報告]
發(fā)表于 2008-11-07 21:26 |只看該作者
原帖由 illeggy 于 2008-11-7 18:47 發(fā)表
問題解決了。

Current PCI address是cpu自動從虛擬地址轉(zhuǎn)換得到的。



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

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