全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

驱动访问Linux IO内存流程

时间:2022-08-04 18:10

人气:

作者:admin

标签: Linux  ARM  IO口  MIPS CPU 

导读:在内核中访问IO内存(通常是芯片内部的各个I2C,SPI, USB等控制器的寄存器或者外部内存总线上的设备)之前,需首先使用ioremap()函数将设备所处的物理地址映射到虚拟地址上。...

什么是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



审核编辑:刘清


温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信