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

使用硬件调试器认识arm64的四大特权级

今天出差回来,看录像学习arm相关知识。看的是看雪学苑的视频号。边看边记录。

大局观

布局:内核在ring0

虚拟化技术后,增加了地下室层,VMM:虚拟机监视器

加上intel的系统管理模式,又加了一层。 SMM像如来佛的手掌心,其他层像孙悟空。

armv8重新定义软件世界.arm源自英国剑桥,定义了更合理的抽象。

arm分为4大特权级别。分为普通世界和安全世界。上面是可信区监视器。

通过读寄存器可以知道当前在哪个级别。

跨空间协作

演示环境

EL0寻常见

应用层,可以运行gdb ls

在比较低的地址,工具也比较多。

LINUX在EL1

linux要用内核调试

回马枪和GDK通过coresight建立会话。

中断后可以看到Linux的基地址

刚才EL0地址比较小,现在内核的地址比较大。
lm命令可以列出模块,lk 是linux kernel的缩写。
mrs是读ARM系统寄存器。
汇编语言也可以看到特权级别:系统寄存器都标识了el0,el1

设置调试符号路径 .sympath c:\xxx\lkernel
.reload

~0s 是切换到0号CPU

设置源文件路径:.srcpath c:\xxx,h  这样可以自动对应源文件
.frame 4  时光倒流到4号栈帧

rest_init: 其余的初始化,会把其他CPU唤醒。最后跳到idle loop休息。

r 查看寄存器

x lk!*switch*
x lk!cpu_switch_to
ba e4 lk!cpu_switch_to
断点命中:

内核在切换线程的时候中断下来了。可以亲眼看到切线程的过程。

prev是前一个线程,next是后一个线程。无论前后,都是个task_struct的大结构体

x0就指向这个结构体,可以dt查看

其中的comm字段是线程名称。

arm传递参数,前6个用x0~x5来传,刚才x0是prev, x1就是next

migration线程是监护CPU ready队列的

bd *  把断点禁止到

g 重新跑起来

内核空间

XEN或者UBOOT在EL2

启动时UBOOT,启动好了XEN住。
感受一些UBOOT
reboot gdk8
sudo reboot
按11可以进入uboot命令行

help  :列出uboot的命令
dm tree  看设备树

也可以用NDB调试,选uboot

uboot阶段,只有0号CPU工作,其他3个核诊断失败,说明还在睡觉。

coresight寄存器DSCR也检测到目前处于EL2

NDB识别语义,也可以进行源码级别的跟踪调试

PC地址,栈地址,都有不同的特点。

lm 查看模块
uboot有一个精妙设计,x18放特殊值

.sympath  检查符号路径,发现还是kernel的,要切换到uboot
.sympath d:\xxx\uboot ,然后就可以看到代码位置了。

典型堆栈

ba e4 uboot!getc  设置断点

kn

.frame

.srcpath f:\xxx

dv  看参数

xen在云上使用很多。也是来自剑桥。使用内存也有字节的特点

ATF在EL3

uboot中敲rbrom

CPU会重启。

rom模式会提供工具刷机

也可以调试

http://www.xdnf.cn/news/9356.html

相关文章:

  • 防火墙虚拟系统
  • 【深度学习新浪潮】以图搜地点是如何实现的?(含大模型方案)
  • AI编译器战争:MLIR vs. OpenAI Triton的算子优化哲学对比 ——从矩阵乘法案例看两种范式的设计差异
  • redis五种数据结构底层实现
  • python调用langchain实现RAG
  • c/c++编译工具在win环境下的配置
  • 超大规模模型训练中的 ZeRO 优化器与混合精度通信压缩技术
  • Nginx监控技术、技巧与最佳实践
  • 【Linux系列】在CentOS系统上安装和配置Vim
  • Java实现加解密和通信安全
  • Qt中的智能指针
  • P4155 [SCOI2015] 国旗计划
  • 学者观察 | 区块链、数字身份、隐私保护为数字世界构筑信任基石——信通院云大所何宝宏
  • C++—decltype
  • 突破 APP 推广困局,apptrace 助力高效拉新增长
  • SAAS架构设计2-流程图-用户与租户之间对应关系图
  • scram-sha-256加密
  • 当前固态硬盘价格趋势如何?Kingston FURY Renegade G5 PCIe 5.0 NVMe M.2固态硬盘何时入手最划算?
  • 岛津Sonialvision X-ray X射线高压发生器控制台
  • 【Webtrees 手册】第 8章 - 网站管理员指南
  • 在 C++ 中,当回调函数是类的成员函数时,this指针的指向由调用该成员函数的对象决定
  • SQL进阶之旅 Day 5: 常用函数与表达式
  • 学习日记-day17-5.27
  • 85从零开始学Java之异常处理的新特性
  • SpringBoot-允许跨域配置
  • Linux显示磁盘空间情况——df命令详解与实战
  • Teigha应用——解析CAD文件(DWG格式)Teigha在CAD C#二次开发中的基本应用
  • 13. CSS定位与伪类/伪元素
  • 60.AI流式回答功能前端实现
  • 【Linux】shell脚本的常用命令