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

申换换

8年用户 1581经验值
私信 关注
[经验]

RK3288芯片调试串口的情况

RK3288芯片总共有5路串口,默认情况下:

UART_BB(串口1)、UART_BT(串口0)、UART_GPS(串口3)、UART_EXP(串口4)、UART_DBG(串口2)。默认使用串口2为调试串口,即UART_DBG,UART_DBG不支持自动流控制(auto flow-control,AFC),支持高达115200波特率的红外数据通信标准(SIR 1.0)。

有时需要的串口不够用,需要关闭串口调试,切换调试串口为普通串口:

调试串口就是将普通串口切换成了console来处理,rockchip调试串口的数据处理代码在arch/arm/mach-rockchip/rk_fiq_debugger.c中,其中dts默认参数如下:

fiq-debugger {

compatible = "rockchip,fiq-debugger";

    rockchip,serial-id = <2>;

    rockchip,signal-irq = <106>;

    rockchip,wake-irq = <0>;

    status = "disabled";

};

rockchip,serial-id = <2>,指定调试串口的串口为串口2.

取消调试串口就是不加载编译这个代码,这样uart2就是默认的普通串口来使用。

因此,sed -i “s/CONFIG_FIQ_DEBUGGER=y/# CONFIG_FIQ_DEBUGGER is not set/g” .config即可

make menuconfig如下:

Device Drivers —>

[*] Staging drivers —>

Android —>

[ ] FIQ Mode Serial Debugger //不选中即可

[arch/arm/mach-rockchip/rk_fiq_debugger.c]

Rk_fiq_debugger.c代码是device代码,而在dts中的compatible = “rockchip,fiq-debugger”代表的就是设备是okay还是disabled,这也就解释了为何当时在测试时fiq-debugger置为disabled时recovery部分就会挂掉,因为在printk输出打印消息时,调试串口的console初始化是成功的,但是却没有对应的writr,read等函数去操作,如下函数最终会被printk,read,write等调用:

这样disabled串口的device时,rk_fiq_debugger部分结束:

而fiq debugger驱动仍然能够执行,当printk输出消息时,调用到uart_putc(debug_putc)时就会出错,因此不能只将fiq-debugger disabled。

RK提供的fiq debugger功能是将debugger功能和普通uart功能代码集成到了一起,代码中通过CONFIG_FIQ_DEBUGGER_CONSOLE宏来配置fiq debugger调试串口。


fiq_debugger_tty_init()函数进行调试串口的初始化。
CONFIG_FIQ_DEBUGGER宏:

[arch/arm/mach-rockchip/Makefile]
obj-$(CONFIG_FIQ_DEBUGGER) += rk_fiq_debugger.o

关闭调试串口只需要取消CONFIG_FIQ_DEBUGGER宏的配置。

原作者:HelloBirthday

更多回帖

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