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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
项目中经常需要把内存数据dump出来看看是否与自己设想的一样,dump之前我们需要把内核的虚拟地址先转换为物理地址才能借助工具dump出来。
  X( r! P1 r6 V% T5 }5 P8 L; u% c  n8 ^0 Z
+ s2 z: _3 d2 X+ t" H' b8 a% z5 W
废话不多说,直接说正题。1 \% D0 j! `% {
/ r& t: q2 |8 W9 A5 y
1. 内核里的地址是从3G开始算的,即起始地址为:0xc0000000
4 s$ K, C+ @# a8 [: f& ^% x
  ?6 }# }, k3 x3 V2. ARM小机端的内存起始地址并不是0,而是0x40000000
, C; M' N; Y, \9 L6 E- H' m! U: g! m" a6 [9 T
也就是说虚拟地址与物理内存起始地址两者的差为:0x80000000
7 h2 y; ~1 U" a1 B$ j% M) \; o" ~2 e4 U* m7 ~" u! |1 ]
那如果要将内核的虚拟地址转换为物理地址,则为:物理地址 = 虚拟地址 - 0x80000000+ o- E1 h) C- A+ K5 [. u
% q( u' H  e) k$ d4 f1 ]% y
例如:虚拟地址:0xc09baf08  对应的物理内存地址应为:0x409baf08+ f7 u- `: @0 S6 c
6 q# L( ~8 X& m2 m$ r! P5 Y3 U
9 j! s% l6 M/ ?0 k" p% E/ K$ M! N
得出物理地址就可以通过工具抓取内存的真实数据了,这对于解决内核死机问题有极大的分析帮助作用。
$ r% [9 l7 F+ v0 M" I' j; F
* A/ [3 O9 y" N9 w' J4 @' M# i1 @1 Y, T2 }0 j4 B' u1 C
( |, U7 C  w# D( f7 t7 P# O& X

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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