FIQ-Debugger
fiq debugger是集成到內(nèi)核中的一種系統(tǒng)調(diào)試手段。
FIQ在arm架構(gòu)中相當(dāng)于nmi中斷,fiq debugger把串口注冊(cè)成fiq中斷,在串口fiq中斷服務(wù)程序中集成了一些系統(tǒng)調(diào)試命令。
一般情況下串口是普通的console模式,在串口工具下鍵盤輸入 fiq,串口會(huì)切換到fiq debugger模式。
因?yàn)镕IQ是不可屏蔽中斷,所以這種調(diào)試手段適合調(diào)試cpu被hang住的情況,可以在hang住的時(shí)候用fiq debugger打印出cpu的故障現(xiàn)場(chǎng),常用命令是sysrq,另一種情況是文件系統(tǒng)把 askconsole 關(guān)閉了,也是同樣適用的。
要使用fiq debugger,需要內(nèi)核配置:
CONFIG_FIQ_DEBUGGER // 使能fiq debugger
CONFIG_FIQ_DEBUGGER_CONSOLE // fiq debugger與console可以互相切換
CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE // 啟動(dòng)時(shí)默認(rèn)串口在console模式
對(duì)于RK3568 4.19內(nèi)核,在rk3568-linux.dtsi
中fiq_debugger節(jié)點(diǎn)配置如下。由于fiq_debugger
和普通串口互斥,在使能fiq_debugger
節(jié)點(diǎn)后必須禁用對(duì)應(yīng)的普通串口uart節(jié)點(diǎn)。文章來源:http://www.zghlxwxcb.cn/news/detail-813231.html
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相關(guān)使用命令:文章來源地址http://www.zghlxwxcb.cn/news/detail-813231.html
debug> help
FIQ Debugger commands:
pc PC status
regs Register dump
allregs Extended Register dump
bt Stack trace
reboot [<c>] Reboot with command <c>
reset [<c>] Hard reset with command <c>
irqs Interupt status
sleep Allow sleep while in FIQ
nosleep Disable sleep while in FIQ
console Switch terminal to console
cpu Current CPU
cpu <number> Switch to CPU<number>
ps Process list
sysrq sysrq options
sysrq <param> Execute sysrq with <param>
到了這里,關(guān)于Rockchip | FIQ-Debugger調(diào)試工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!