关于地址映射

高通平台smd分析及smem共享内存的创建笔记 高通平台smd分析及smem共享内存的创建笔记 tags : linux driver 最近研究高通平台的音频相关,由于实在受不了没头没尾的数据,所以就顺便研究了一下smd以及smem,这篇博客就是一个笔记,比较杂乱,主要用来备忘! 网上找到一些关于smd的文章,但是基本上都仅限于smd,只讲述了smd的channel相关,但是channel的内存到底哪里来的,smem到底是怎么回事好像... 阅读详情
在PC上,对于ISA和PCI而言,总线即为物理地址,但并非每个平台都是如此。由于有时候接口总线是通过桥接电路被连接,桥接电路会将IO地址映射为不同的物理地址。

MMC数据传输过程中对于不连续的物理空间使用scatterlist来启用DMA操作
MMC作为块设备,它的存储空间,最小单位由struct bio_vec 描述,它代表一段物理地址范围。一次块设备传输请求,会涉及到很多个这样的不连续的物理空间。不连续的物理空间,不能直接使用DMA。

这时,可以利用sg操作,让每个bio_vec结构,对应一个scatterlist结构:在MMC的请求处理函数中,遍历每一request中所有bio_vec结构,对应一个scatterlis结构描述。

相关函数:void sg_init_table(struct scatterlist *sg, unsigned int nents); 


在HLOS中有一套子系统管理的框架,包括TZ相关的Secure PIL、RAM dump、Restart通知链和System monitor库等,最重要的是一个subsystem driver。
AP和各子系统共用的有共享内存(驱动为smd)、GPIO以及中断等方式。
subsystem driver监控子系统的手段有:
1)子系统的硬件看门狗上报信息给AP的硬件看门狗,subsystem driver通过这种方式知道某个子系统发生崩溃。
2)子系统通过System monitor上报信息给AP侧的System monitor库。
3)子系统通过SMSM设置AP侧的SMSM对应比特位告知AP。
4)子系统通过GPIO操作通知AP。
5)子系统通过中断通知AP。

共享内存驱动smd初始化过程中,会建立64个通道,其中就包括PROC、SMSM、RPC、DIAG等。通常的做法是,AP和子系统都有独立线程监控共享内存的数据更新。PROC用于实现少量的数据通信,多用于简单的命令控制,如上下电、电压配置等。SMSM用于实现两边的Machine State同步。RPC是高通平台AP和Modem之间通信最常用的通道,有很完整的封装协议,Linux根据两个参数(proc+version)以client的身份可以找 到Modem段的server,请求提供相应服务,同时有完备的request/reply机制,完成数据传输。同理,AP也可以作为server提供给 Modem服务。

高通平台Modem占主导作用,在Application Processor启动初始化时,从Share Memory区读取已经由Modem predeclared的一些数据。Share memory根据功能,分为静态+动态部分,每个部分又分为数个小区,每个区的大小不一,与本区实现的功能相关。Modem会把所有区的 offset+size信息存放在静态去Heapinfo里。Linux通过读取这个Heapinfo区信息,就知道Share memory的布局了。

参考文档:80-na157-31_c


共享内存相关的代码主要包含如下:

相关dtsi文件中会声明类似qcom,smsm-modem、qcom,smsm-wcnss这样的节点。
kernel/msm-3.18/drivers/soc/qcom/smsm_debug.c
kernel/msm-3.18/drivers/soc/qcom/smd_init_dt.c
kernel/msm-3.18/drivers/soc/qcom/smd.c
kernel/msm-3.18/drivers/soc/qcom/bam_dmux_private.h
kernel/msm-3.18/drivers/soc/qcom/smd_private.h
kernel/msm-3.18/include/soc/qcom/smd.h
kernel/msm-3.18/include/soc/qcom/smsm.h
kernel/msm-3.18/drivers/char/msm_smd_pkt.c
kernel/msm-3.18/drivers/soc/qcom/pil-q6v5-mss.c
kernel/msm-3.18/drivers/soc/qcom/bam_dmux.c
kernel/msm-3.18/drivers/soc/qcom/smd_debug.c
kernel/msm-3.18/drivers/soc/qcom/ipc_router_smd_xprt.c
kernel/msm-3.18/drivers/net/wireless/ath/wcn36xx/dxe.c
kernel/msm-3.18/drivers/tty/serial/msm_smd_tty.c

Cache与主存的三种地址映射详细解读 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar 阅读详情

相关推荐

地址映射

1.     相关概念 2.     地址映射图解

zyn19950120的博客 8615

4G WWAN设备类型

USB dongle是设备接入互联网的重要方式之一,典型的通过USB接口与主设备连接,然后主设备通过4G/5G接入互联网,作为移动宽带设备,它有那些设备类型及暴露方式呢?:ModemManager能够与几乎所有类型的移动宽带调制解调器进行交互,只要该设备至少暴露一个控制端口。不支持没有控制端口的设备(例如,某些仅暴露网口的USB dongles)。:对于支持的移动宽带设备,它们通过控制端口与ModemManager进行通信,使其能够管理和控制这些设备的功能。

虎哥LoveDroid 2297

主存与cache间的地址映射

参考:《计算机组成原理》(第五版) 白中英等著 准备工作: ①cache与主存之间的数据交换是以“块”为单位进行的。一个“块”中包含若干个“字”,字长由实际情况确定。      习惯上,cache中的“块”称“行”,主存中称“块”。cache的“行”与主存的“块”存储容量相同。 ②相联存储表(CAM)是一种按内容寻址的存储器。下面所提到的标记(tag)存于该存储器中。 ③cach

叫大顺但不顺 5万+

AG35-CEN休眠模式,异常唤醒。问题分析及分享

本主要介绍如何分析 AG35-CEN 模组休眠模式被异常唤醒的分析思路。通过一点点排查,分析。最终定位到是 TCP 协议中 keep alive 机制导致的。令我收获比较大的就是了解到车辆低功耗的整个实现方案,以及遇到相关问题是的大致方向。希望能帮到有需要的朋友。若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。

点滴路程 2486

【谈谈PCIE的地址映射】

PCIE 地址映射

li_kin的博客 1167

【Zynq UltraScale+ MPSoC解密学习9】Zynq UltraScale+的地址映射

目录 一、基本介绍 1.1 全局地址映射 1.1.1 32bit(4GB)地址映射 1.1.2 36bit(64GB)地址映射 1.1.3 40bit(1TB)地址映射 1.1.4 系统地址映射互联 二、系统地址寄存器概述 2.1 系统层级控制寄存器(SLCR寄存器) 2.2 私有CPU寄存器 2.3 PS I/O外设寄存器 2.4 PS系统寄存器 三、详细参考 1、基本...

xinxulsq的博客 7012

porting MPTCP to LineageOS-14.1-kiwi - 内核包含MPTCP--cat-dev-kmsg.txt

porting MPTCP to LineageOS-14.1-kiwi - 内核包含MPTCP--cat-dev-kmsg.txt

张同光 (Tongguang Zhang):Hello everyone ! 7915

谈谈PCIE的地址映射

谈谈PCIE的地址映射

qq_33300585的博客 979

android重要进程的主要功能

使用adb命令 adb shell ps -p 或者 adb shell ps -p -t -P 可以发现很多进程信息, 那么问题来了. 这些进程的主要功能是什么?

shane的专栏 9234

从公网到内网:互联网暴露面地址映射的原理与实践

互联网暴露面指的是企业或组织在互联网上对外开放的所有资产、服务或接口,包括网站、邮件服务器、远程桌面服务、API 接口等。这些对外开放的服务或资产可能成为潜在的安全风险入口,因此必须通过有效的管理策略降低安全威胁。

Cyan_Shaw的博客 2172

64位Linux下的地址映射

IA32-e模式下地址映射之前写过,32位Linux虚拟地址映射,讨论了在CPU 80386下的虚拟地址映射。看过博主的《Linux内核在x86_64 CPU中地址映射》,对32位和64位下地址映射的区别做了一些总结。---------------------------------------------------------------------------1. x86_64CPU中逻辑地...

hhhanpan的博客 9750

什么是地址映射

ARM体系结构-地址映射 一、什么是地址映射 1、ARM Cortex-A8架构,32位CPU,CPU设计时就有32根地址线和32根数据线。 2、32根地址线决定了CPU的地址空间为4G,那么这4G空间如何分配使用?这个问题就是地址映射问题?我的理解就是这些地址空间是如何分配使用的。 二、地址映射规则 1、芯片外接外部RAM和外部ROM的时候,RAM和ROM器件都是独立器件,并没有地址一说,或者说都只有自己的绝对地址,且从0x00开始。而对于CPU来说,0x00地址只能有1个,所以外接器件挂到CPU上时只能

weixin_46089486的博客 1万+

嘉立创EDA vs Altium Designer:新手如何选择?从界面到实战全对比

本文全面对比了嘉立创EDA与Altium Designer(AD)两大PCB设计工具,从设计哲学、界面交互、封装库管理、设计规则引擎、协作功能到成本生态六大维度进行深入分析。嘉立创EDA以极简设计和云端协作为特色,适合学生和创客快速上手;而AD则凭借专业级精准控制,成为高端电子设计的行业标准。通过实战案例和详细对比表格,帮助新手根据项目需求选择合适的EDA工具。

weixin_30296405的博客 721

Cache-主存地址映射

目录一.涉及知识点1.三种地址映射方式2.主存储器中存储单元地址的分配3.存储容量二.例题解答及分析 一.涉及知识点 1.三种地址映射方式 直接映射 全相联映射 组相联映射 2.主存储器中存储单元地址的分配 3.存储容量 我们所说的地址是指的存储单元的个数,即地址线可寻找的地址。关于存储容量的理解,可用下述例子理解: 假设有100个房间,一个房间住一个人,为了找到某个人,就要给这...

这个世界不是如你所想 9218

Halcon 3D点云匹配实战:从预处理到模板创建的完整流程(附代码)

本文详细介绍了Halcon在3D点云匹配中的实战应用,涵盖从预处理到模板创建的完整流程。通过代码示例和实用技巧,帮助开发者掌握点云采样、降噪、三角化等关键技术,并优化匹配参数以提高精度和效率。适用于工业检测、机器人引导等领域。

weixin_33670786的博客 433

SPEI计算避坑指南:gma中Distribution和FitMethod参数怎么选?

本文深入探讨了在SPEI计算中如何科学选择gma库中的Distribution和FitMethod参数,帮助研究者避开常见陷阱。详细分析了LogLogistic、Gamma和Pearson3三种分布的适用场景,以及LMoment与MLE拟合方法的优缺点,为气象干旱研究提供实用指南。

weixin_30308101的博客 250

Linux地址映射

一、地址映射 .class文件→ jvm → linux 用【javap -c 字节码名】 可以打印出jvm的指令,最终转成linux系统平台的汇编指令来执行 c/c++,java,python,php,go语言都是指令(text)和数据(data) 在程序还没有运行之前,实际上程序的指令和数据的地址都已经分配好了,但是这个指令或者数据的地址是实际的物理地址吗? 答: 不是! 程序的指令和数据所...

Jewel’s blog 5174

Argoverse数据集可视化/Argoverse-api

argoverse可视化,argoverse-api配制方法

learning_man的博客 9561

FPGA DDR 地址映射-黄金法则

DDR控制器地址映射顺序是优化FPGA内存性能的关键。文章解析了DDR内部Bank/Row/Column结构,指出行激活(Activate)是最耗时的操作。重点比较了两种映射模式:ROW_COLUMN_BANK模式适合连续访问,能最大化带宽;而BANK_ROW_COLUMN模式会导致频繁行切换,降低性能。建议在Xilinx MIG IP中优先采用ROW_COLUMN_BANK 或 ROW_BANK_COLUMN 映射,以匹配大多数DMA连续访问场景。

Js_cold的博客 1798

Windows平台COLMAP实战:从零到三维重建的避坑指南

本文详细介绍了在Windows平台上使用COLMAP进行三维重建的完整流程,包括安装指南、数据准备技巧、图形界面操作及常见问题解决方案。特别针对Windows用户提供了CUDA版本与非CUDA版本的性能对比,帮助用户高效完成从照片到三维模型的重建过程。

weixin_29090677的博客 189

Python爬虫实战:爬取携程旅游平台数据,我拆解了动态反爬+Cookie续命(附完整可运行代码)

反爬类型表现形式应对思路sign参数返回403/空数据逆向JS还原加密逻辑Cookie时效登录后1小时Cookie失效定时刷新Cookie/保存登录态行为检测爬取过快触发验证码模拟真人延时/随机点击IP封禁单IP爬取超50条数据被封付费代理池/降低请求频率爬取携程旅游平台数据的核心,不是“简单的HTTP请求”,而是“理解平台的反爬逻辑并合规适配”——从sign参数破解到Cookie维护,再到行为模拟,每一步都是对HTTP协议、前端加密、用户行为的深度理解。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1713

cache地址映射,全相连、直接、组相联

高速缓存存储器的地址映射 信息在主存和Cache中,确定它们的对应关系就需要借助地址映射。 地址映射的定义: 主存地址按某种规律(函数)映射到cache中。 当cpu访问存储器时,它发出的内存会自动变换为cache地址。 实现:采用硬件,很快。而且编程人员不会感到Cache的存在。这种特性也称为cache的透明性。 主要地址映射方式: 全相联方式 直接方式 组相联方式 几个概念 ......

weixin_42649617的博客 7万+

SIMULINK开发项目实例 1000 例专栏之第960例--基于电力系统稳定性的建模与仿真场景:-含分布式电源的配电网电压稳定性研究

间歇性与随机性:例如,太阳能依赖于日照强度,风能依赖于风速,这使得它们的输出功率具有不确定性。逆变器接口:大多数分布式电源通过逆变器接入电网,这对电网的动态响应特性产生了影响。位置分散:通常分布在用户侧或靠近负荷中心的位置。本文详细介绍了如何使用Simulink结合Simscape Electrical 构建一个用于研究含分布式电源配电网电压稳定性的模型,并提供了详细的仿真流程说明。

xiaoheshang_123的博客 153

笔记 | Cache与主存的地址映射计算

全相联映射、直接相联映射、组相联映射三种映射方式的地址组成以及计算方法

鷾 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: SMMU概述
下一篇: KODI概览
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值