资讯
论坛
词条
众包
招聘
商城
下载
问答
博客
工程师家园
帮助
搜索
登录
立即注册
一牛网论坛
一流研发工程师学习交流分享电子技术的论坛!
工作时间
周一到周五 9:00-11:30 13:30-19:30
热线电话
19168984579
论坛客服
QQ:
2064607811
微信:
19168984579
商城客服
QQ:
1911822682
微信:
18924675756
手机|智能终端
MTK/联发科
高通平台
紫光展锐
瑞芯微RK
全志平台
SigmaStar/Mstar
海思平台
匠芯创
联咏科技
珠海海奇
国科微
翱捷ASR平台
其它平台
维修论坛
通讯|射频技术
射频技术
5G技术
天线技术论坛
红外技术论坛
美格智能
移远通信
鼎桥通信
瑞识科技
射频IC库
卫星通讯&定位
蓝牙
wifi
NB-IoT
通讯技术
微波&雷达技术
NFC
USB技术论坛
RFID
ZigBee
Lora
433
对讲技术
有线通讯与控制
通讯协议
开元通讯
激光
嵌入式
鸿蒙OS论坛
Freescale论坛
xmos
开阳半导体
基合半导体
平头哥半导体
富士康半导体
紫光同创
暖芯迦
Marvell
树莓派
翼辉OS论坛
UCOS技术论坛
VxWorks论坛
君正论坛
瑞昱论坛
亿智论坛
齐感论坛
Amlogic论坛
龙芯论坛
FlyThings
炬芯论坛
nxp论坛
乐鑫论坛
OpenWRT
arm开发
linux
keil技术论坛
FPGA
DSP
LVGL
PLC
Python
乐升半导体
其他
单片机
ST技术论坛
IC设计
兆易创新/GD单片机
PWM技术论坛
Arduino技术论坛
伟诠电子
国民技术
芯科|silicon labs
英飞凌|Infineon
51单片机
新唐单片机
TI技术论坛
赛元微单片机
单片机C语言
ATMEL单片机
西门子单片机
华大单片机
Intel单片机
Freescale单片机
Thomson单片机
ADI单片机
Microchip单片机
武汉新芯
瑞盟
单片机基础
航顺单片机
CPLD
灵动微单片机
美信技术论坛
人工智能AI论坛
自动驾驶
元宇宙
神经网络
NLP
机器学习
算法
智能机器人
AR/VR
NVIDIA|英伟达
版块导航
forumnav
论坛
一牛网电子研发工程师交流论坛
芯片词条
MTK/高通/海思/瑞芯微/全志/展讯/射频/蓝牙/单片机/WIFI/电源/晶晨/瑞昱等系列芯片
开发板/模块
MTK/海思/全志/瑞芯微/蓝牙/高通等系列开发板/核心板
摄像头
摄像头模块
问答
整合一牛网论坛所有电子工程师开发问题
直播预告
屏/TP
原厂合作入口
机械防抖摄像头
18-30倍可变焦模组
5G相关方案定制
T31/T40方案定制
全志方案定制
展讯4G/5G方案定制
Ai硬件方案
PD超级快充方案
MTK4G/5G方案
wifi/cpe相关方案
RK相关方案
摄像头和测温模块
FPGA高清视频方案
高通方案
显示屏方案
AMLOGIC相关方案
高精度定位模组
联咏相关方案
一牛网
»
论坛
›
手机|智能终端
›
瑞芯微RK
›
Rockchip平台Linux IOMMU开发指南(中英文)
查看:
2277
|
回复:
16
[瑞芯微RK资料]
Rockchip平台Linux IOMMU开发指南(中英文)
sichuguancha
当前离线
积分
14085
sichuguancha
已绑定手机
发表于 2022-5-21 16:16:50
|
显示全部楼层
|
阅读模式
来自
广东省深圳市
IOMMU结构
使用二级页表结构, 如下:
32位地址结构,前10位第一级页表偏移,中间10位二级页表偏移,最后12位页内偏移
DTE结构:
bit0:下一级页表是否存在
PTE结构:
bit0:实际的物理页是否存在
bit1:读允许
bit2:写允许
IOMMU驱动
驱动文件
驱动文件所在位置: drivers/iommu/rockchip-iommu.c
DTS 节点配置
DTS 配置参考文档 为 Documentation/devicetree/bindings/iommu/rockchip,iommu.txt ,本文主
要说明如下参数:
compatible = "rockchip,iommu"; 对于所有设备的iommu,compatible字段值相同
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>; 用于异常中断,比如缺页中断
clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
clock-names = "aclk", "hclk"; iommu和master共享clock,这里用于iommu驱动单独控制clock
power-domains = <&power RK3399_PD_VOPL>; 用于iommu驱动操作pd功能
iommu-cells = <0>; 必须为0,详见iommu.txt
IOMMU使用
ROCKCHIP IOMMU驱动依赖IOMMU框架( drivers/iommu/iommu.c ),主要实现 struct iommu_ops rk_iommu_ops 当中的回调函数,然后master调用iommu框架提供的API对iommu进行操作,如下: 1. iommu attach iommu_attach_device -> rk_iommu_attach_device /* enable iommu */
2. iommu detach iommu_detach_device -> rk_iommu_detach_device /* disable iommu */
3. iommu map iommu_map -> rk_iommu_map 创建页表,建立虚拟地址和物理地址的映射关系,
debug时候将iommu_map里面的dbg打印打开,观察mapping过程
4. iommu unmap iommu_unmap -> rk_iommu_unmap 解除虚拟地址和物理地址的映射关系,释放虚
拟地址空间,debug时候将iommu_unmap里面的dbg打印打开,观察 unmapping过程
5. domain alloc iommu_domain_alloc -> rk_iommu_domain_alloc 申请页表基地址,用于attach/detach操作
6. domain free iommu_domain_free -> rk_iommu_domain_free 释放页表空间
7. dump iommu页表 以3399 vopl_iommu为例,假设当前访问的虚拟地址VA为0x00001000,依照如下顺序dump页表:
a. 获取一级页表基地址: DT io -4 0xff8f3f00
b. 计算一级页表偏移 index1 = VA >>22
c. 计算一级页表物理地址: DTE DTE = index1 * 4 + DT
d. 获取二级页表基地址:PT PT = io -4DTE
e. 计算二级页表偏移 index2 = VA && 0x3ff000
e. 计算二级页表物理地址: PTE PTE = index2 *4 + PT
f. 获取PAGE物理地址: page page = io -4 PTE
g. 计算页内偏移: offset offset = page + (VA &&0xfff) offset就是虚拟地址0x00001000对应的物理地址,master可以用此来分析数据是否正确
8. dma-mapping
a. dev为非iommu设备 ARM32: dev->dma_ops = arm_dma_ops; ARM64: dev- >dma_ops = arm64_swiotlb_dma_ops;
b. dev为iommu设备 ARM32: dev->dma_ops = iommu_ops; ARM64: dev->dma_ops = iommu_dma_ops; 以dma_alloc_attrs函数为例:
1. 非iommu dev,从a的dma_ops调用alloc回调申请连续物理内存和内核态虚拟地址
2. iommu dev,从b的dma_ops调用alloc回调申请物理内存,并通过iommu框架调用 iommu_map来创建iommu页表,建立虚拟地址和物理地址映射关系,返回iommu虚拟地址首 地址和内核态虚拟地址
一个最简单的使用iommu的步骤
1. domain = iommu_domain_alloc(&platform_bus_type);
2. iommu_map(domain, iova, paddr, size, prot);
3. iommu_attach_device(domain, dev);
4. master启动访问iommu
iommu是一个基础的部件,可以嵌入各种内存分配的框架中,比如ion/drm,以ARM64环境下drm为例,一次完整的iommu buffer分配以及映射过程如下:
rockchip_gem_alloc_buf ->
rockchip_gem_get_pages ->
rockchip_gem_iommu_map ->
iommu_map_sg ->
iommu_map
更多详细内容请下载附件查看
游客,如果您要查看本帖隐藏内容请
回复
技术词条:
IOMMU
,
Rockchip
,
API
,
Linux
点击查看更多芯片型号
相关帖子
•
Linux设备驱动程序(第三版)
•
linux驱动开发入门与实践 (郑强)--完整版
•
Mtk Ft5206 touch 驱动
•
Spreadtrum_Linux_Android入门
•
展讯智能开发笔记分享:Ubuntu系统安装注意几个地方
•
展讯智能开发笔记分享:Android:为什么new不会删除out?
•
展讯智能开发笔记分享:Ubuntu内存命令
•
展讯智能开发笔记分享:编译系统详细说明
•
展讯智能开发笔记分享:Linux系统文件权限的详解说明
•
展讯智能开发笔记分享:虚拟机上Ubuntu系统的ADB连接
回复
举报
a937983423
当前离线
积分
1917
a937983423
已绑定手机
发表于 2022-5-21 16:30:31
|
显示全部楼层
来自
四川省成都市
看看学习一下
回复
顶
踩
举报
kongdeweilian
当前离线
积分
2535
kongdeweilian
发表于 2022-5-23 21:22:53
|
显示全部楼层
来自
上海市
谢谢分享
回复
顶
踩
举报
konkong
当前离线
积分
1421
konkong
已绑定手机
发表于 2022-5-23 21:23:10
|
显示全部楼层
来自
上海市
学习学习
回复
顶
踩
举报
steele09
当前离线
积分
4262
steele09
已绑定手机
已实名认证
发表于 2022-5-24 03:48:20
|
显示全部楼层
来自
广东省深圳市
looklook!!
回复
顶
踩
举报
maozf
当前离线
积分
9467
maozf
已绑定手机
发表于 2022-5-24 08:29:17
|
显示全部楼层
来自
浙江省嘉兴市
好资料,看看
回复
顶
踩
举报
cheng03
当前离线
积分
7465
cheng03
已绑定手机
发表于 2022-5-26 09:29:38
|
显示全部楼层
来自
广东省深圳市
感谢分享好资料。。。。。。。。。
回复
顶
踩
举报
wx_mJT0t
当前离线
积分
339
wx_mJT0t
已绑定手机
发表于 2023-1-17 18:52:19
|
显示全部楼层
来自
美国
0987654321
回复
顶
踩
举报
billmtk
当前离线
积分
14930
billmtk
已绑定手机
发表于 2023-1-18 00:25:40
|
显示全部楼层
来自
广东省深圳市
good data for us
回复
顶
踩
举报
billmtk
当前离线
积分
14930
billmtk
已绑定手机
发表于 2023-1-18 00:28:47
|
显示全部楼层
来自
广东省深圳市
goood data for us
回复
顶
踩
举报
下一页 »
1
2
/ 2 页
下一页
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
使用Markdown编辑器编辑
使用富文本编辑器编辑
回帖后跳转到最后一页
关于我们
关于我们
加入我们
新闻动态
联系我们
服务支持
官方商城
隐私声明
常见问题
论坛总则
合作/建议
TEL: 19168984579
工作时间:
周一到周五 9:00-11:30 13:30-19:30
扫一扫关注公众号
扫一扫打开小程序
Copyright © 2013-2024
一牛网
版权所有
All Rights Reserved.
帮助中心
|
隐私声明
|
联系我们
|
手机版
|
粤ICP备13053961号
|
营业执照
|
EDI证
发布新帖
我的帖子
110520000元
项目累计金额
3911个
对接项目数量
接项目
发需求
最新回复
高通QCAT安装包
高通SA8295P DataSheet
高通骁龙5G SoC SM8550/SM8550P(骁龙8Gn 2)DataSheet
发几本射频教程-频谱分析仪的原理、操作与应用
小米 13 Ultra 原理图资料(sch+pcb)
联发科MT7628DAN+MT7612E HDK参考设计文件资料(原理图,pcb,bom等)
最新热帖
MTK/联发科MT6877(天玑900)MTK5G芯片规格书/datasheet
QXDM 4 破解版下载
RK3588S数据手册Datasheet、Tablet Demo原理图&PCB
紫光展锐Simba_R8.22.2953工具下载
Rockchip RK3588 TRM资料, Rock5B和官方Toybrick-RK3588x原理图
UNISOC UDX710 1.35GHz Cortex-A55内核嵌入式5G通信处理器datasheet
热门博客
更多
DAC8228FPZ
DAC8222 双通道12位双缓冲乘法CMOS D/A转换器
DAC8426AR/883C 特性
QPA2640T 20-40 GHz 8瓦GaN放大器
QPB0220N 2-18 GHz宽带GaN SSPA 中文资料规格书PDF数据手册引脚图图片价格参数功能特
KMFN60012M-B21规格书
登录
注册
手机|智能终端
(148)
MTK/联发科
(39)
MTK硬件
MTK软件
MTK工具
高通平台
(29)
高通硬件
高通软件
高通工具
紫光展锐
(30)
RDA平台
硬件资料
软件资料
工具下载
瑞芯微RK
(23)
全志平台
(11)
全志A系列
全志D系列
全志B系列
全志F系列
全志H系列
全志R系列
全志V系列
全志T系列
全志VR系列
全志工具
全志X系列
SigmaStar/Mstar
(2)
海思平台
(5)
匠芯创
联咏科技
(1)
SoC
显示驱动
珠海海奇
国科微
(3)
翱捷ASR平台
其它平台
(2)
其它平台软件
(1)
其它平台硬件
(1)
维修论坛
(3)
手机刷机包
苹果APPLE
三星SAMSUNG
其他品牌
维修经验交流
通讯|射频技术
(22)
射频技术
(11)
5G技术
(2)
5G技术分享
5G应用/产品
5G规划/政策
天线技术论坛
(2)
红外技术论坛
美格智能
移远通信
鼎桥通信
瑞识科技
射频IC库
(1)
卫星通讯&定位
蓝牙
(2)
NORDIC技术论坛
上海博通
盛芯微
恒玄科技
汇顶科技|GOODIX
其他
富芮坤|FREQCHIP
伦茨科技
wifi
(4)
NB-IoT
通讯技术
微波&雷达技术
NFC
USB技术论坛
RFID
ZigBee
Lora
433
对讲技术
有线通讯与控制
通讯协议
开元通讯
激光
嵌入式
(28)
鸿蒙OS论坛
Freescale论坛
xmos
开阳半导体
基合半导体
(2)
平头哥半导体
富士康半导体
紫光同创
暖芯迦
Marvell
树莓派
翼辉OS论坛
UCOS技术论坛
VxWorks论坛
君正论坛
(3)
瑞昱论坛
(11)
亿智论坛
齐感论坛
Amlogic论坛
龙芯论坛
FlyThings
炬芯论坛
nxp论坛
乐鑫论坛
OpenWRT
(5)
arm开发
(1)
linux
keil技术论坛
FPGA
(1)
DSP
LVGL
(1)
PLC
(3)
Python
乐升半导体
其他
(1)
单片机
(5)
ST技术论坛
(3)
意法半导体STM
意法半导体STL
ST意法半导体
IC设计
兆易创新/GD单片机
PWM技术论坛
Arduino技术论坛
伟诠电子
国民技术
芯科|silicon labs
英飞凌|Infineon
(1)
51单片机
新唐单片机
TI技术论坛
(1)
赛元微单片机
单片机C语言
ATMEL单片机
ATmega8系列
ATmega16系列
AVR系列
AT系列
西门子单片机
华大单片机
Intel单片机
Freescale单片机
Thomson单片机
ADI单片机
Microchip单片机
武汉新芯
瑞盟
单片机基础
航顺单片机
CPLD
灵动微单片机
美信技术论坛
人工智能AI论坛
(4)
自动驾驶
元宇宙
神经网络
NLP
机器学习
算法
智能机器人
(4)
AR/VR
NVIDIA|英伟达
显示屏|触摸屏
(2)
Quanta|广达
SVA|上广电
BOE|京东方
AUO|友达光电
SAMSUNG|三星电子
CMO|奇美电子
gooddisplay|大连佳显
newvision|新相微电子
analogix|硅谷数模
sharp|夏普
lnnoLux|群创光电
天马
Eink|元太科技
GOODiX|汇顶科技
Sitronix|矽创电子
ILItek|奕力科技
LG
Atmel
永嘉微电
HOLTEK|合泰
视涯技术
格科微
SOLOMON SYSTECH
RENESAS|瑞萨
Himax|奇景光电
(1)
FocalTech|敦泰
JDI
旭曜科技
墨水屏
龙讯
联阳
Capstone|瑞奇达
Algoltek安格
显示控制
段码|点阵
其他
(1)
物联网应用
(1)
医疗电子
(1)
智能家居
无人机专区
智能产品
智能车专区
智能硬件
智能软件
工业设计
其他
Camera|视频技术
(14)
Camera摄像头
镁光Camera
扫描头
视频技术
格科微Camera
(3)
OV Camera
(3)
Sony Camera
(5)
安森美Camera
东芝Camera
原相Camera
三星Camera
思比科Camera
(1)
DB/东部Camera
SET Camera
富瀚微Camera
思特威Camera
(2)
鸿图微Camera
晶相 Camera
BYD/比亚迪Camera
美信Camera
现代Camera
松翰Camera
奇景Camera
NEXTCHIP
传感器论坛
(1)
光敏传感器
气敏传感器
力敏传感器
热敏传感器
磁敏传感器
湿敏传感器
声敏传感器
距离传感器
图像传感器
其他传感器
(1)
电源|电池|充电技术
(5)
芯达茂微电子
力芯微
恒率科技
智芯微电子
森利威尔
POE技术
开关电源技术
BMS
电池技术
(3)
充电技术
LDO DC-DC
(1)
电平转换IC库
移动电源技术
其他电源技术
(1)
元器件|物料库
(21)
Memory|存储芯片
(6)
连接器/接插件
长江连接器
其他
二/三极管
集成电路(IC)
(13)
加密&解密ic
LED二极管
晶体&振荡器
(1)
晶体管
其他元器件
(1)
其它规格书
阻容感库
TOMIISHI
电阻/电感
LED驱动IC
音频IC
安耐科
宏晶微
台湾鑫创
汇顶
上海智浦欣
顺芯
胜翼
瑞盟
普瑞
AKM|旭化成微
艾为电子
欧胜微
YAMAHA|雅马哈
耐福
凌云科技
音频IC库
移动应用开发
(0)
Android应用开发
Android源码
Android资料
开源&组件&框架
Android视频教程
android开发
Framework
IOS开发交流
iOS经验问答
iOS视频教程
iOS资料下载
Swift开发
php论坛
Java
保护器件
(0)
雷卯电子
电路保护器件
仪器|仪表|实验设备
(12)
安捷伦
安立/Anritsu
横河
TEK/泰克
星河亮点
罗德与施瓦茨
(12)
是德
advantest/爱德万
福禄克/Fluke
柯卡美能达
艾法斯
中承科技
其他品牌
PCB论坛
(3)
EDA软件与应用
(1)
PADS|Powerpcb
Allegro|OrCAD
Mentor|其它EDA
Altium|Protel
genesis|cam论坛
EDA软件下载
DFx经验交流
3D PCB
专业评审
学员专区
PCB技术资源区
(1)
原理图|SCH
PCB作品文件
Layout设计指南
EDA技术论坛
参考设计
制作工艺
(1)
PCB生产工艺
FPC专区
SMT专区
绿色无铅
夹具模具
生产设备
基础知识
(1)
硬件基础知识
(1)
软件基础知识
区块链技术
EMI|EMC|仿真
ESD
EMI
EMC
EMI器件库
活动与公告
(6)
公告专区
(1)
活动专区
灌水专区
(5)
一牛开源
(0)
新移开源
悬赏互助
—
—
—
展
开
版
块
导
航
在本版发帖
搜索
扫一扫添加微信客服
QQ客服
返回顶部
快速回复
返回顶部
返回列表