找回密码
 注册
关于网站域名变更的通知
查看: 253|回复: 1
打印 上一主题 下一主题

ARM Linux虚拟地址转换为内存物理地址

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-16 11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
项目中经常需要把内存数据dump出来看看是否与自己设想的一样,dump之前我们需要把内核的虚拟地址先转换为物理地址才能借助工具dump出来。% _4 Y8 r6 }/ s# ~( ^0 h8 ?4 y
3 g" s: S, S& Y% f) `, v9 B
. l( c5 R) j1 c) s3 _( v7 U
废话不多说,直接说正题。1 d3 S, `) x- k$ w

' F' ^+ `, {. s# J1 U  n8 [: R, A1. 内核里的地址是从3G开始算的,即起始地址为:0xc0000000/ w9 [( D4 t. Z6 U' c9 E% X* `
: j9 ^8 L- r& U& P: z* z( i( G$ b1 j
2. ARM小机端的内存起始地址并不是0,而是0x40000000  t' u# _: ^# `$ P& M2 J( o

6 u1 }6 l+ b. ]1 d- r/ c9 }& c  ^也就是说虚拟地址与物理内存起始地址两者的差为:0x80000000
3 s( ]& o% E. t" S* x' C, Q, P* @' J- [- b6 ]
那如果要将内核的虚拟地址转换为物理地址,则为:物理地址 = 虚拟地址 - 0x80000000
7 q* T& G7 l/ s: n5 U8 ]
# n7 K+ z' E; a4 b$ i. n例如:虚拟地址:0xc09baf08  对应的物理内存地址应为:0x409baf080 j: Z0 L, k( |; x- S
1 h$ i6 W) L0 h- |' U
, q! g4 K% Y! c1 v4 J
得出物理地址就可以通过工具抓取内存的真实数据了,这对于解决内核死机问题有极大的分析帮助作用。. l# ?( ]! I2 Z. n2 r3 i& e

4 S) a2 k! ^6 W) ?  u' P* O1 i( u% a/ U6 f  ~+ D; Z/ P

0 J+ A" Q# [. ~! T

该用户从未签到

2#
发表于 2020-4-16 18:57 | 只看该作者
ARM Linux虚拟地址转换为内存物理地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 16:42 , Processed in 0.171875 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表