瑞芯微Rockchip开发者社区
直播中

王芳

7年用户 1433经验值
私信 关注
[经验]

RK提供的fiq debugger功能介绍

Hardware :Nanopi M4

FIQ-Debugger

RK提供的fiq debugger功能是将debugger功能和普通uart功能代码集成到了一起

fiq debugger是集成到内核中的一种系统调试手段。

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

一般情况下串口是普通的console模式,minicom下输入切换命令"Ctrl + A + F",串口会切换到fiq debugger模式。

因为FIQ是不可屏蔽中断,所以这种调试手段适合调试cpu被hang住的情况,可以在hang住的时候用fiq debugger打印出cpu的故障现场,常用命令是sysrq。

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

CONFIG_FIQ_DEBUGGER // 使能fiq debugger

CONFIG_FIQ_DEBUGGER_CONSOLE // fiq debugger与console可以互相切换

CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE // 启动时默认串口在console模式

CONFIG配置:

CONFIG_FIQ_DEBUGGER=y

CONFIG_FIQ_DEBUGGER_NO_SLEEP=y

CONFIG_FIQ_DEBUGGER_WAKEUP_IRQ_ALWAYS_ON is not set

CONFIG_FIQ_DEBUGGER_CONSOLE=y

CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y

CONFIG_FIQ_DEBUGGER_TRUST_ZONE is not set

CONFIG_FIQ_DEBUGGER_UART_OVERLAY is not set

CONFIG_FIQ_WATCHDOG is not set


rk3399-nanopi4-common.dtsi

fiq_debugger: fiq-debugger {

compatible = "rockchip,fiq-debugger";

rockchip,serial-id = <2>; //配置UART2

rockchip,signal-irq = <182>;

rockchip,wake-irq = <0>;

rockchip,irq-mode-enable = <1>; /* If enable uart uses irq instead of fiq */

rockchip,baudrate = <115200>; /* Only 115200 and 1500000 */

pinctrl-names = "default";

pinctrl-0 = <&uart2c_xfer>; //配置UART2

};

禁止对应uart节点

&uart2 {

status = "disabled";

};

chosen {
    bootargs = "earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 console=ttyFIQ0 rootwait coherent_pool=1m";
};

UART2 address = FF1A_0000


rk3399.dtsi

uart2c {

uart2c_xfer: uart2c-xfer {

rockchip,pins =

<4 19 RK_FUNC_1 &pcfg_pull_up>,

<4 20 RK_FUNC_1 &pcfg_pull_none>;

};

};

原作者:andyTW3974

更多回帖

发帖
×
20
完善资料,
赚取积分