当前位置: 首页 > news >正文

网站一直百度上搜不到是怎么回事素马杭州网站设计介绍

网站一直百度上搜不到是怎么回事,素马杭州网站设计介绍,手机百度网盘下载慢怎么解决,广告公司首页MMIO、IOMAP 和 IOMMU 全面解析 📌 本文将深入浅出地梳理 Linux 驱动开发中常见的三大术语:MMIO、iomap、IOMMU。它们看似相似,其实职责完全不同,是理解 SoC 系统架构、DMA 安全性和驱动开发的基础。 一、MMIO(Memory-…

MMIO、IOMAP 和 IOMMU 全面解析

📌 本文将深入浅出地梳理 Linux 驱动开发中常见的三大术语:MMIO、iomap、IOMMU。它们看似相似,其实职责完全不同,是理解 SoC 系统架构、DMA 安全性和驱动开发的基础。

一、MMIO(Memory-Mapped I/O)

定义:

MMIO 是将外设的寄存器映射到内存地址空间中的一种机制,使得 CPU 可以像读写内存一样访问硬件寄存器。

特点:

  • 地址固定,由硬件在 SoC 设计时分配(如 0xF000_0000)

  • 访问方式为普通内存操作(load/store

  • 对于 CPU 而言:访问的是虚拟地址,但最终会映射到 MMIO 的物理地址

Linux 中使用方式:

void __iomem *base = ioremap(0xF9000000, 0x1000);
writel(0x01, base + 0x04);   // 写寄存器

二、iomap(或 ioremap)

定义:

ioremap() 是 Linux 内核提供的一个函数,用于将 MMIO 物理地址映射到内核虚拟地址空间,让驱动能用指针读写设备寄存器。

注意:

  • 它并不是内核页表的一部分(无法被用户态访问)

  • 一般只在内核驱动中使用

  • 返回值是 __iomem 类型,强调它是特殊内存(不可随便 deref)

使用流程:

  1. 从设备树中读取 reg(物理地址)

  2. 调用 ioremap()

  3. 使用 readl()/writel() 操作寄存器

  4. 使用完后 iounmap()


三、IOMMU(I/O Memory Management Unit)

定义:

IOMMU 是为设备提供地址转换的 MMU,作用是在设备访问内存(DMA)时,将其使用的虚拟地址(IOVA)翻译为实际的物理地址(PA)。

和 MMU 类似:

  • CPU 使用虚拟地址 → MMU → 物理地址

  • 设备使用 IOVA → IOMMU → 物理地址

好处:

  • 安全隔离(防止 DMA 越界)

  • 虚拟地址空间抽象(方便设备驱动管理 buffer)

  • 支持虚拟化(guest VM 可以有独立 IOVA)


四者关系与对比

特性MMIOiomap / ioremapIOMMU
涉及角色CPU 访问设备寄存器CPU 访问寄存器的方式设备访问内存的 MMU
管理对象寄存器地址(物理)虚拟地址 ←→ MMIO 映射IOVA ←→ RAM地址
是否在设备树✅ reg 字段✅ 用 reg 映射✅ stream-id/domain
是否需驱动调用❌ 自动决定✅ 手动 ioremap✅ DMA 调用会启用
是否用于 DMA❌ 否❌ 否✅ 是

示例场景:ISP 拍照设备

CPU → 配置 ISP 控制寄存器(0xF900_0000)↑ ioremap(iomap)
ISP → 把拍到的图像写入 DDR(0x12340000 IOVA)↑ 通过 IOMMU 做地址转换 → 实际写入物理内存
  • 寄存器访问用 MMIO + iomap

  • 内存访问(DMA)用 IOMMU


图示建议

   CPU          ←─(ioremap)────→ MMIO(设备寄存器)│                               ↑│                               ││           控制设备             │↓                               │DDR(内存) ←────(IOMMU)────← DMA ← 设备(ISP/VPU)

http://www.dtcms.com/a/536400.html

相关文章:

  • 基于 STM32 的智能水表流量计设计与实现 —— 数据采集与远程传输
  • 深度学习核心概念拆解:张量、模型、训练、推理
  • C++初阶 -- 模拟实现list
  • 开源Outline系统基础知识要点及避坑要点
  • 淘宝客云建站官网模板网pi
  • 中国糕点网页设计网站查工程建设不良记录免费的网站
  • redis-cluster集群配置部署
  • 整体设计 全面梳理复盘 之9 “相提并论的三者” :否则段三种主义 “保持 - 反对 - 保留” 表格化构建与原始逻辑对标
  • 第5章-虚拟机栈
  • 配置(1):samba的配置
  • web开发,在线%鲜花销售%管理系统,基于asp.net,webform,c#,sql server存储过程
  • [作品集]-容易宝
  • 数字校园建设专题网站自动化项目外包网
  • python-docx样式
  • 新建网站如何调试seo石家庄
  • 90设计网站官网首页行情软件排行榜前十名
  • 华为OD机试双机位A卷 - 二维伞的雨滴效应 (C++ Python JAVA JS GO)
  • Redis数据库基础
  • 韦东山嵌入式入门笔记之——应用开发基础篇(七)APP访问硬件的方式
  • 网站建设的论文参考文献上海市交通建设工程安全质量监督站网站
  • 微信个人发消息api
  • 深入理解JVM的安全点与安全区域
  • 一键上云:Vultr × Caddy 可直接部署模板(Terraform + Docker Compose + Caddyfile)
  • Android Studio 代码注释模板设置指南
  • 推荐做ppt照片的网站郑州营销型网站制作教程
  • 手机网站建设哪家专业网站备案通讯地址
  • 数字图像相关(DIC)技术:汽车板料成形极限(FLC)的精确测量与分析
  • 基于vlc的Player的构建编译
  • AR巡检轨道交通、地铁运维场景的应用技术方案|阿法龙XR云平台
  • 使用cursor/vscode开发服务器远程桌面应用(X11转发)