已解决
ARM硬件断点
来自网友在路上 187887提问 提问时间:2023-10-09 00:24:54阅读次数: 87
最佳答案 问答题库878位专家为你答疑解惑
hw_breakpoint 是由处理器提供专门断点寄存器来保存一个地址,是需要处理器支持的。处理器在执行过程中会不断去匹配,当匹配上后则会产生中断。
内核自带了硬件断点的样例linux-3.16\samples\hw_breakpoint\data_breakpoint.c
static void sample_hbp_handler(struct perf_event *bp,struct perf_sample_data *data,struct pt_regs *regs)
{printk(KERN_INFO "%s value is changed\n", ksym_name);dump_stack();printk(KERN_INFO "Dump stack from sample_hbp_handler\n");
}static int __init hw_break_module_init(void* addr)
{int ret;struct perf_event_attr attr;hw_breakpoint_init(&attr);attr.bp_addr = addr;attr.bp_len = HW_BREAKPOINT_LEN_4;//监控addr开始的4字节attr.bp_type = HW_BREAKPOINT_W | HW_BREAKPOINT_R;//读写该地址都能触发sample_hbp = register_wide_hw_breakpoint(&attr, sample_hbp_handler, NULL);if (IS_ERR((void __force *)sample_hbp)) {ret = PTR_ERR((void __force *)sample_hbp);goto fail;}printk(KERN_INFO "HW Breakpoint for write installed\n");return 0;fail:printk(KERN_INFO "Breakpoint registration failed\n");return ret;
看网上说ARM Architecture Reference Manual Supplement ARMv8.1, for ARMv8-A architecture profile这些文档的degug register里面有。文档可以在这个网站下载
https://developer.arm.com/documentation
Documentation – Arm Developer
可以看到应该是每个cpu都注册了一个。感觉应该是在一个cpu上注册,所有cpu都会去检查(原理不清楚,上面的文档没有看明白,猜测的)
struct perf_event * __percpu *
register_wide_hw_breakpoint(struct perf_event_attr *attr,perf_overflow_handler_t triggered,void *context)
{struct perf_event * __percpu *cpu_events, *bp;
........................................for_each_online_cpu(cpu) {bp = perf_event_create_kernel_counter(attr, cpu, NULL,triggered, context);
...................................................
}
暂时不写了
查看全文
99%的人还看了
相似问题
- 【2021集创赛】基于arm Cortex-M3处理器与深度学习加速器的实时人脸口罩检测 SoC
- 11. Spring源码篇之实例化前的后置处理器
- 最新Next14 路由处理器 Route Handlers
- Spring底层原理学习笔记--第四讲--(常见bean后处理器与@Autowired bean后处理器执行分析)
- Linux内核分析(六)--处理器调度基本准则和实现介绍
- 【JMeter】后置处理器的分类以及场景介绍
- MTK联发科天玑9000旗舰5G移动平台处理器_MT6983芯片定制开发
- 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
- 简单8位CPU设计verilog微处理器,源码/视频
- PCIe架构的处理器系统介绍
猜你感兴趣
版权申明
本文"ARM硬件断点":http://eshow365.cn/6-17510-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 为什么 Java 不支持多重继承?
- 下一篇: 文本自动输入/删除的加载动画效果