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组合在一起,方便观察。

  • 相关阅读:
    冬至——汤圆
    偷偷的高兴!
    sql 70229 考试样题(2)
    SQL Server开发人员应聘常被问的问题妙解汇总
    GOOLE Picasa Web License
    辞旧迎新!
    VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
    ASP 入门
    OpenCV类型转换
    坐标旋转变换公式的推导
  • 原文地址:https://www.cnblogs.com/smilingsusu/p/12705780.html
Copyright © 2011-2022 走看看