精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

驅動訪問Linux IO內存流程

冬至配餃子 ? 來源:嵌入式軟件開發交流 ? 作者:young ? 2022-08-04 18:10 ? 次閱讀

什么是IO內存

I/O內存也稱為Memory-Mapped I/O(MMIO), 它是指一種編址方式,不同cpu平臺使用的編址方式不同,一種是“IO內存”方式,也叫統一編址方式,是指內存和外設的地址是在同一個地址空間上的,比如我們常見的ARM、MIPS等平臺;還有另外一種叫獨立編址方式,是指內存的地址空間和外設的地址空間是分開的,比如x86平臺。

LinuxI/O內存 API

(1) IO內存申請

要使用某個外設前,要申請其所對應的IO內存,表明驅動要訪問這塊區域。

poYBAGLrmoCAJ6CcAAEMcmrHI-k273.png

(2)IO內存訪問

在內核中訪問IO內存(通常是芯片內部的各個I2C,SPI, USB控制器寄存器或者外部內存總線上的設備)之前,需首先使用ioremap()函數將設備所處的物理地址映射到虛擬地址上。

poYBAGLrmpqAfEq0AAFX5ei8020979.png

驅動訪問IO內存流程

1)調用request_mem_region()申請I/O內存資源。

2)將設備寄存器的物理地址通過ioremap()映射到內核空間的虛擬地址。

3)通過readb/writeb等接口訪問設備的寄存器。

4)訪問完成后,調用iounmap()函數對ioremap()映射的虛擬地址解除映射,并調用release_mem_region()函數釋放申請的I/O內存資源。

pYYBAGLrmqyAQS8iAAC8Qnyx_34803.png



審核編輯:劉清


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    8967

    瀏覽量

    365036
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207912
  • mips
    +關注

    關注

    1

    文章

    237

    瀏覽量

    47581
  • IO口
    +關注

    關注

    3

    文章

    168

    瀏覽量

    23889
收藏 人收藏

    評論

    相關推薦

    Linux內存管理是什么,Linux內存管理詳解

    Linux內存管理 Linux內存管理是一個非常復雜的過程,主要分成兩個大的部分:內核的內存管理和進程虛擬
    的頭像 發表于 05-11 17:54 ?5827次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>內存</b>管理是什么,<b class='flag-5'>Linux</b>的<b class='flag-5'>內存</b>管理詳解

    Linux驅動開發之IO模型介紹

    Linux驅動開發中,應用程序通過循環讀取或者中斷的方式都會使得CPU的占用率很高。本文介紹五種IO模型,可以用來優化文件讀寫方式,降低CPU的使用率。
    發表于 07-29 09:03 ?774次閱讀

    如何設計并實現面向非易失內存的MPI-IO接口優化

    為了實現 對非易失內存的管理與利用、對文件數據緩存的管理與訪問,本文設計并實現了面向非易失內存的MPI-IO接口優化(NVMPI-IO)。本
    的頭像 發表于 10-09 10:53 ?1382次閱讀

    linux驅動程序的主要流程和功能

    驅動程序是用于控制和管理硬件設備的軟件模塊,它主要負責與設備進行交互,通過操作設備的寄存器和接口,實現對硬件的控制和訪問。在Linux系統中,驅動程序是實現與硬件設備交互的一個關鍵部分
    的頭像 發表于 12-08 14:56 ?1845次閱讀

    詳解io端口與io內存

    writel(unsigned value, address); 流程如下:2)Linux訪問IO內存
    發表于 06-07 15:41

    Linux文件系統與IO流程和模型

    今晚9點: 《Linux文件系統與IO流程和模型》微課(415-418)
    發表于 06-13 16:51

    Linux驅動開發有哪些流程?

    Linux系統的設備分為哪幾類?Linux驅動開發有哪些流程?
    發表于 07-23 11:57

    一文解析Linux系統保留內存的初始化流程

    1、Linux系統保留內存的初始化流程在啟動過程中會打印出如下信息,這些信息為linux呈現出系統下的保留內存空間。本文只介紹基本的保留
    發表于 06-30 16:27

    Linux設備驅動開發詳解》第11章、內存IO訪問

    Linux設備驅動開發詳解》第11章、內存IO訪問
    發表于 10-27 11:27 ?6次下載
    《<b class='flag-5'>Linux</b>設備<b class='flag-5'>驅動</b>開發詳解》第11章、<b class='flag-5'>內存</b>與<b class='flag-5'>IO</b><b class='flag-5'>訪問</b>

    Linux設備驅動開發詳解》第9章、Linux設備驅動中的異步通知與異步IO

    Linux設備驅動開發詳解》第9章、Linux設備驅動中的異步通知與異步IO
    發表于 10-27 11:33 ?0次下載
    《<b class='flag-5'>Linux</b>設備<b class='flag-5'>驅動</b>開發詳解》第9章、<b class='flag-5'>Linux</b>設備<b class='flag-5'>驅動</b>中的異步通知與異步<b class='flag-5'>IO</b>

    Linux設備驅動開發詳解》第8章、Linux設備驅動中的阻塞與非阻塞IO

    Linux設備驅動開發詳解》第8章、Linux設備驅動中的阻塞與非阻塞IO
    發表于 10-27 11:35 ?9次下載
    《<b class='flag-5'>Linux</b>設備<b class='flag-5'>驅動</b>開發詳解》第8章、<b class='flag-5'>Linux</b>設備<b class='flag-5'>驅動</b>中的阻塞與非阻塞<b class='flag-5'>IO</b>

    Linux驅動技術之一:訪問I/O內存

    ARM是對內存空間和IO空間統一編址的,所以,通過讀寫SFR來控制硬件也就變成了通過讀寫相應的SFR地址來控制硬件。這部分地址也被稱為I/O內存。
    發表于 05-08 14:33 ?502次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>驅動</b>技術之一:<b class='flag-5'>訪問</b>I/O<b class='flag-5'>內存</b>

    如何用腳本來獲取linux系統CPU、內存、磁盤IO,及原理解釋

    今天主要分享一個shell腳本,用來獲取linux系統CPU、內存、磁盤IO等信息。
    的頭像 發表于 04-08 14:40 ?2885次閱讀
    如何用腳本來獲取<b class='flag-5'>linux</b>系統CPU、<b class='flag-5'>內存</b>、磁盤<b class='flag-5'>IO</b>,及原理解釋

    深入剖析Linux共享內存原理

    Linux系統中,每個進程都有獨立的虛擬內存空間,也就是說不同的進程訪問同一段虛擬內存地址所得到的數據是不一樣的,這是因為不同進程相同的虛擬內存
    的頭像 發表于 10-30 09:52 ?2187次閱讀
    深入剖析<b class='flag-5'>Linux</b>共享<b class='flag-5'>內存</b>原理

    Linux驅動模塊.ko內存精簡優化過程

    Linux 驅動模塊可以獨立的編譯成 .ko 文件,雖然大小一般只有幾 MB,但對總內存只有幾十 MB 的小型 Linux 系統來說,常常也是一個非常值得優化的點。本文以一個實際例子,
    發表于 09-25 09:23 ?1136次閱讀