日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 被扒开腿一边憋尿一边惩罚 | 97人人干 | 潘金莲三级80分钟 | 欧美性jizz18性欧美 | 黄色精品 | 日韩免费精品 | 亚洲最大激情网 | 国产偷人妻精品一区二区在线 | 久操视频网 | 免费簧片在线观看 | 免费国产视频 | 一卡二卡三卡在线 | 国产青青草 | 亚洲综合久久网 | 欧美大片免费高清观看 | 少妇特黄一区二区 | 神马午夜伦 | 日本一卡二卡在线 | 成人免费淫片aa视频免费 | 看了下面会湿的视频 | jizz一区二区三区 | 日韩av三级在线观看 | 精品肉丝脚一区二区三区 | 就爱啪啪网站 | 精品妇女一区二区三区 | 天天爱天天插 | 久久综合久久综合久久 | 一本色道久久综合亚洲二区三区 | 国产又粗又猛又爽又黄的视频小说 | 亚洲男人影院 | 国产1区在线观看 | 欧美一区二区三区免费看 | 97爱爱视频| 午夜精品久久久久久久久久久久久蜜桃 | 五月婷婷六月天 | 日本欧美另类 | 伊人久综合 | 拔插拔插海外华人免费视频 | 亚洲高清在线免费观看 | 亚洲av无码一区二区三区在线播放 | 欧美另类一区二区 | 四色永久访问 | 台湾佬美性中文娱乐网 | 毛茸茸亚洲孕妇孕交片 | 免费亚洲婷婷 | 黄色的网站在线 | 欧美午夜小视频 | 日本一区不卡在线观看 | 抱着老师的嫩臀猛然挺进视频 | 成人免费高清视频 | 爱爱一区 | 四色最新网址 | 蜜桃色一区二区三区 | 麻豆精品在线视频 | 人善交videos欧美3d动漫 | wwwxxx日本免费 | 波多野结衣视频一区二区 | 青青草在线视频免费观看 | 国产激情第一页 | 6680新视觉电影免费观看 | 一本视频 | 日日夜夜免费精品视频 | 成人精品免费网站 | 欧美少妇性生活 | 蘑菇福利视频一区播放 | 欧美一区二区三区黄片 | 久久亚洲一区 | 日本人性爱视频 | 成人性生交大片免费看vrv66 | 欧美4区| 翔田千里88av中文字幕 | 国产免费大片 | 午夜一区在线观看 | 97人人爽| 伊人称影院 | 波多野结衣亚洲视频 | 亚洲欧美激情在线观看 | 狠狠干2024 | 致命魔术电影高清在线观看 | 毛片一级在线观看 | 超在线视频 | 国产av一区二区三区精品 | 国产毛片一区二区三区va在线 | 今天高清视频在线观看视频 | 中文一区二区在线 | 求免费黄色网址 | 国产传媒在线观看 | 538国产精品一区二区 | 久久久久久久久久久97 | 国产美女网站 | 日本性爱视频在线观看 | 色大师在线观看 | 亚洲蜜臀av一区二区三区 | 国产精品色婷婷99久久精品 | 婷婷91| 亚洲午夜色 | 51国产偷自视频区视频 | 精品人妻午夜一区二区三区四区 | 天天爽夜夜爽一区二区三区 |