什么是IO內存
I/O內存也稱為Memory-Mapped I/O(MMIO), 它是指一種編址方式,不同cpu平臺使用的編址方式不同,一種是“IO內存”方式,也叫統一編址方式,是指內存和外設的地址是在同一個地址空間上的,比如我們常見的ARM、MIPS等平臺;還有另外一種叫獨立編址方式,是指內存的地址空間和外設的地址空間是分開的,比如x86平臺。
(1) IO內存申請
要使用某個外設前,要申請其所對應的IO內存,表明驅動要訪問這塊區域。
(2)IO內存訪問
在內核中訪問IO內存(通常是芯片內部的各個I2C,SPI, USB等控制器的寄存器或者外部內存總線上的設備)之前,需首先使用ioremap()函數將設備所處的物理地址映射到虛擬地址上。
驅動訪問IO內存流程
1)調用request_mem_region()申請I/O內存資源。
2)將設備寄存器的物理地址通過ioremap()映射到內核空間的虛擬地址。
4)訪問完成后,調用iounmap()函數對ioremap()映射的虛擬地址解除映射,并調用release_mem_region()函數釋放申請的I/O內存資源。
審核編輯:劉清
-
ARM
+關注
關注
134文章
8967瀏覽量
365036 -
Linux
+關注
關注
87文章
11123瀏覽量
207912 -
mips
+關注
關注
1文章
237瀏覽量
47581 -
IO口
+關注
關注
3文章
168瀏覽量
23889
發布評論請先 登錄
相關推薦
評論