日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实验探究 ioremap

發(fā)布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验探究 ioremap 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ioremap 寫驅(qū)動最常用的函數(shù)之一,但是對它始終一知半解,看了內(nèi)核關(guān)于這部分的代碼,功力不夠也是一頭霧水。本文通過實驗的方法,了解 ioremap 到底干了些啥,本文獻給那些看不懂內(nèi)核源代碼,還想知道 ioremap 能干些什么,干了些什么的同學(xué)。

? ? 實驗方法:

? ??? ??點燈實驗,LED接在GPB5~8,因此需要使用 gpbcon 配置,gpbdat 輸出高低。
? ??? ??? ??gpbcon ?0x56000010
? ??? ??? ??gpbdat ?0x56000014
? ??下面,嘗試了各種 ioremap 的方法測試,點燈 關(guān)燈 是否正常,點燈正常代表寄存器訪問沒問題。

1、字節(jié)映射還是頁映射?
? ??gpbcon = (volatile unsigned long *)ioremap(0x56000010, 1);
? ??gpbdat = gpbcon + 1;
? ??測試結(jié)果,點燈正常,雖然只映射一個字節(jié),但是 gpbcon、gpbdat 使用虛擬地址時可以訪問到物理地址,因此是頁映射

2、同一頁的 映射的物理地址之前的地址是否也映射了?
? ??gpbdat = (volatile unsigned long *)ioremap(0x56000014, 1);
? ??gpbcon = gpbdat - 1;
? ??測試結(jié)果,點燈正常,雖然只映射了1個字節(jié),但是之前的地址也可以訪問到對應(yīng)的物理地址,因此,該物理地址所在的頁,全都都進行了映射

3、同一頁內(nèi),重復(fù)映射會怎樣?
? ??gpbcon = (volatile unsigned long *)ioremap(0x56000010, 1);
? ??gpbdat = (volatile unsigned long *)ioremap(0x56000014, 1);
? ??temp = ? (volatile unsigned long *)ioremap(0x56000014, 1);
? ??printk("gpbcon: %x\n", gpbcon);
? ??printk("gpbdat: %x\n", gpbdat);
? ??printk(" ?temp: %x\n", ? temp);
? ??輸出:
? ??? ??gpbcon: c483c010
? ??? ??gpbdat: c4840014 ?
? ??? ??temp: ? c4844014
? ??測試結(jié)果:
? ??? ??程序依舊正常運行,但是輸出的 gpbcon、gpbdat 虛擬地址不連續(xù)!即使是相同的物理地址 ioremap 得到的虛擬地址不相等

? ??1、那么,gpbcon + 1 也就是 c483c014 是不是也對應(yīng)于 gpbdat的物理地址呢?
? ??? ??gpbcon = (volatile unsigned long *)ioremap(0x56000010, 1);
? ??? ??gpbdat = (volatile unsigned long *)ioremap(0x56000014, 1);
? ??? ??temp = ? (volatile unsigned long *)ioremap(0x56000014, 1);
? ??? ??printk("gpbcon: %x\n", gpbcon);
? ??? ??printk("gpbdat: %x\n", gpbdat);
? ??? ??printk(" ?temp: %x\n", ? temp);
? ??? ??gpbdat_temp = gpbcon + 1;
? ??測試 虛擬地址gpbdat_temp 、gpbdat 是不是都能訪問到 gpbdat 的物理地址。?
? ??輸出:
? ??? ??gpbcon: c484a010
? ??? ??gpbdat: c484e014 ?
? ??? ??temp: ? c4852014
? ??測試結(jié)果:
? ??1、神奇,程序正常運行,也就是說通過 虛擬地址 c484e014 或者(c484a010 + 4) 都能訪問到 gpbdat 的物理地址!
? ??因此,如果兩個物理地址位于同一頁,我們是沒必要去兩次ioremap的,1次就夠了,而且兩次會浪費掉一頁虛擬空間。
? ??2、 推理,我通過ioremap temp 得到的虛擬地址也可以訪問到 gpbdat 的物理地址。
? ??? ??我通過ioremap temp 得到的虛擬地址 -4 也可以訪問到 gpbcon 的物理地址。


4、重復(fù)映射了,如何iounmap ?
? ??gpbcon = (volatile unsigned long *)ioremap(0x56000010, 1);
? ??gpbdat = (volatile unsigned long *)ioremap(0x56000014, 1);
? ??temp = ? (volatile unsigned long *)ioremap(0x56000014, 1);
? ??printk("gpbcon: %x\n", gpbcon);
? ??printk("gpbdat: %x\n", gpbdat);
? ??printk(" ?temp: %x\n", ? temp);
? ??iounmap(gpbcon);
? ??iounmap(gpbdat);
? ??iounmap(temp);
? ??測試:程序正常,沒有崩潰。
? ??? ??ioremap 可以有多個虛擬地址對應(yīng)于一個物理地址,iounmap時相互不受影響。
? ??猜測:iounmap(gpbcon + n);保證(gpbcon + n 與 gpbcon在同一頁)應(yīng)該也可以釋放掉gpbcon,沒有測試。

結(jié)論:
? ??1、ioremap 按照頁大小進行映射,而且是 整頁 。
? ??2、ioremap 允許對一個物理地址進行多次映射,而且分配的虛擬空間地址各不相同(多個虛擬地址對應(yīng)于同一個物理地址)。而且,ioumap相互不影響。

曾經(jīng)疑惑的那些問題:
? ??1、我要是用一個寄存器,4個字節(jié)
? ??? ??ioremap(0x56000010, 1);
? ??? ??ioremap(0x56000010, 4);
? ??都能用?顯然,都能用~頁映射,該物理地址所在的頁,已經(jīng)全部被映射了。
? ??2、兩個驅(qū)動程序,都要用到同一個寄存器,兩次Ioremap,iounmap,會不會沖突啊?
? ??? ??顯然經(jīng)過上邊的實驗,它們各自ioremap得到的虛擬地址不同,iounmap時只是把各地的虛擬地址釋放了而已,相互不會產(chǎn)生影響。

總結(jié)

以上是生活随笔為你收集整理的实验探究 ioremap的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人无码精品久久久久 | 在线观看黄色片网站 | 久久婷婷五月国产色综合激情 | 国产福利免费视频 | cekc老妇女cea0 | 中出中文字幕 | 亚洲综合免费观看高清完整版 | 一区二区三区久久久 | 99精品久久久久久久婷婷 | 涩涩视频网站在线观看 | 成人激情综合网 | 久久久噜噜噜久久 | 亚洲第一在线视频 | 韩国三级在线播放 | 国产偷人爽久久久久久老妇app | heyzo朝桐光一区二区 | 色av导航| 免费一二区 | 国产色无码精品视频国产 | 天天躁狠狠躁狠狠躁夜夜躁68 | 久久影片 | 啪啪小视频 | 免费看黄色三级三级 | 91插插视频 | 欧美日韩国产综合在线 | 成人精品在线观看 | 中国1级毛片 | 中国一级特黄录像播放 | 狠狠人妻久久久久久综合麻豆 | 欧美日韩亚洲精品一区二区 | av基地| 欧美亚洲日本在线 | 日本精品不卡 | 自拍欧美亚洲 | wwww欧美 | xx视频在线 | 蜜桃视频一区二区三区在线观看 | 国产免费一区二区 | 亚洲青青操 | 黑人操日本女人 | 亚洲日本在线观看视频 | 亚洲av高清一区二区三区 | 小h片在线观看 | 97超碰人人草 | 91精品久久久久久久99蜜桃 | 天堂国产在线 | 免费成人黄色网址 | 欧美一区二区国产 | jlzzjlzz亚洲日本少妇 | 日韩在线国产精品 | 午夜精品久久久久久久第一页按摩 | 伦理黄色片 | 久久久涩 | 国产66页 | 一区二区成人av | 麻豆精品网站 | 日韩在线观看视频一区 | 久久久久99人妻一区二区三区 | 日韩成人看片 | 女人一区二区三区 | 欧美你懂得| www夜色| 国产黄色录像 | 欧美日韩视频在线 | 少妇激情视频 | 久久国产二区 | 国产一区二区啪啪啪 | 国内偷拍一区 | 自拍偷拍第二页 | 中文字幕在线播出 | 五月婷婷丁香久久 | 福利小视频在线观看 | 麻豆成人久久精品一区二区三区 | 娇妻被老王脔到高潮失禁视频 | 少妇一级淫片免费 | 国产三级国产精品国产专区50 | 久操福利视频 | 99热97| 少妇又色又紧又爽又刺激视频 | 日本免费毛片 | www.五月婷婷 | 成人不卡av | 欧美三级色图 | 午夜在线观看影院 | 激情欧美一区 | 毛片毛片 | 99er视频| av观看网站| 三大队在线观看 | 欧美一级做 | 日韩欧美精品在线 | 欧美日韩一区二区综合 | 国产亚洲在线观看 | 国产专区一区二区 | 欧美日韩激情视频 | 超碰在线观看免费版 | 亚洲av网址在线 | 91高清视频在线观看 | 免费看日产一区二区三区 |