zoukankan      html  css  js  c++  java
  • 【Kernel ftrace】使用kernel ftrace追踪IRQ的例子

    1.简介

    近期遇到一个uart数据部分丢失的问题,比较怀疑在中断中,寄存器发生异常。

    选择使用kernel自带的Trace工具追踪UART IRQ信号。

    2.使用方法

    追踪IRQ
    irq:irq_handler_exit
    irq:irq_handler_entry

    proc/interrupts  //查看当前注册的IRQ,确认要追踪的IRQ号

    cd /sys/kernel/debug/tracing/
    echo irq_handler_exit > set_event    //追踪IRQ进入
    echo irq_handler_entry >> set_event   //追踪IRQ出来
    echo "irq != 4" > events/irq/irq_handler_entry/filter  //过滤掉过于频繁的IRQ信号
    echo "irq != 4" > events/irq/irq_handler_exit/filter         //过滤掉过于频繁的IRQ信号
    echo 4096 > buffer_size_kb             //设置buff size,单位为kb,因为irq信息比较多,因此选择较大buff

    echo > trace
    echo 1 > tracing_on

    //echo "name != arch_timer" > events/irq/irq_handler_entry/filter
    //echo "name != arch_timer" > events/irq/irq_handler_exit/filter

    cat trace > /3rd_rw/trace.txt          //保存log到文件

    3.创建kernel thread辅助debug

    其中,使用trace_printk将log打印到trace buff中,可以和上面的irq log组合在一起,方便观察。

  • 相关阅读:
    spring boot-11.全局捕获异常
    spring boot-10.国际化
    spring boot-9.对springMVC的支持
    spring boot-8.静态资源映射
    spring boot-7.日志系统
    spring boot-6.profile 多环境支持
    spring boot-4.配置文件
    spring boot-3.原理探究
    【C/C++】产生随机数
    【C/C++】获取当前系统时间
  • 原文地址:https://www.cnblogs.com/smilingsusu/p/12705780.html
Copyright © 2011-2022 走看看