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

Rockchip | FIQ-Debugger调试工具

FIQ-Debugger

fiq debugger是集成到内核中的一种系统调试手段。
FIQ在arm架构中相当于nmi中断,fiq debugger把串口注册成fiq中断,在串口fiq中断服务程序中集成了一些系统调试命令。

一般情况下串口是普通的console模式,在串口工具下键盘输入 fiq,串口会切换到fiq debugger模式。

因为FIQ是不可屏蔽中断,所以这种调试手段适合调试cpu被hang住的情况,可以在hang住的时候用fiq debugger打印出cpu的故障现场,常用命令是sysrq,另一种情况是文件系统把 askconsole 关闭了,也是同样适用的。

要使用fiq debugger,需要内核配置:

CONFIG_FIQ_DEBUGGER                         // 使能fiq debugger
CONFIG_FIQ_DEBUGGER_CONSOLE                 // fiq debugger与console可以互相切换
CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE  // 启动时默认串口在console模式

对于RK3568 4.19内核,在rk3568-linux.dtsi中fiq_debugger节点配置如下。由于fiq_debugger和普通串口互斥,在使能fiq_debugger节点后必须禁用对应的普通串口uart节点。

chosen: chosen {bootargs = "earlycon=uart8250,mmio32,0xfe660000 console=ttyFIQ0";
};fiq-debugger {compatible = "rockchip,fiq-debugger";rockchip,serial-id = <2>;rockchip,wake-irq = <0>;/* If enable uart uses irq instead of fiq */rockchip,irq-mode-enable = <1>;rockchip,baudrate = <1500000>; /* Only 115200 and 1500000 */interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_LOW>;pinctrl-names = "default";pinctrl-0 = <&uart2m0_xfer>;status = "okay";
};&uart2 {status = "disabled";
};

Fiq debugger相关使用命令:

debug> help
FIQ Debugger commands:pc            PC statusregs          Register dumpallregs       Extended Register dumpbt            Stack tracereboot [<c>]  Reboot with command <c>reset [<c>]   Hard reset with command <c>irqs          Interupt statussleep         Allow sleep while in FIQnosleep       Disable sleep while in FIQconsole       Switch terminal to consolecpu           Current CPUcpu <number>  Switch to CPU<number>ps            Process listsysrq         sysrq optionssysrq <param> Execute sysrq with <param>
http://www.lryc.cn/news/279361.html

相关文章:

  • 第二百六十三回 给geolocator插件提交问题
  • 分组背包问题
  • WinForm 中Label自动换行 解决方法
  • 【蓝桥杯软件赛 零基础备赛20周】第7周——二叉树
  • SpringBoot+SSM项目实战 苍穹外卖(12) Apache POI
  • Maven 基础总结篇
  • MySQL的导入导出及备份
  • 【机器学习】常见算法详解第2篇:K近邻算法各种距离度量(已分享,附代码)
  • @KafkaListener指定kafka集群
  • 什么是算法的空间复杂度?
  • WebDav协议相关软件@简单配置局域网内的http和WebDav服务器和传输系统
  • 自定义数据实现SA3D
  • 设计模式基础概念:探索设计模式的魅力
  • 【Leetcode】2182. 构造限制重复的字符串
  • Kubernetes(K8S)云服务器实操TKE
  • 设置弹窗随鼠标位置移动
  • Spring Boot实现数据加密脱敏:注解 + 反射 + AOP
  • jmeter和meterSphere如何使用第三方jar包
  • API对象上千个,有啥关联性,kubectl-tree一键搞定
  • java自定义工具类在List快速查找相同字段值对象
  • codeforces Hello 2024 - C - Grouping Increases --- 题解
  • STM32H5培训(一)总览
  • 亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...
  • 高光谱分类论文解读分享之基于多模态融合Transformer的遥感图像分类方法
  • Trans论文复现:基于数据驱动的新能源充电站两阶段规划方法程序代码!
  • 将抖音视频转成MP3并下载
  • C程序训练:与输入有关的错误
  • 制作 CentOS Stream9 的U盘系统启动盘
  • Vulnhub靶机:driftingblues 1
  • CloudCompare——点云空间圆拟合