开启fiq调试器后,通过设置断点和单步执行进行调试。
1、 调试串口是将普通串口转为console进行数据处理,其相关代码位于arch/arm/mach-rockchip/rk_fiq_debugger.c文件中。该功能通过FIQ机制实现,能够在系统异常或低层运行时输出调试信息。设备树中已预设默认参数,用于配置串口作为调试接口使用,便于开发人员排查问题。
2、 指定调试串口为串口2,通过配置rockchip,serial-id为2实现。
3、 rk_fiq_debugger.c属于设备驱动代码,其功能与设备树(dts)中的compatible属性密切相关。该属性设置为rockchip,fiq-debugger时,用于标识对应硬件设备的状态是否启用。当该设备被设为disabled时,系统在运行过程中将无法正常访问相关调试接口。这解释了测试过程中为何一旦关闭fiq-debugger,recovery阶段就会出现异常。尽管此时printk能够输出信息,且调试串口的console初始化成功,但由于缺少实际的读写操作函数支持,底层无法完成数据的发送与接收。关键的write、read等接口函数未能正确绑定或调用,导致printk虽能记录日志,却无法通过串口输出,从而引发通信中断,使系统在需要调试输出的关键阶段失效。
4、 当禁用串口设备时,rk_fiq_debugger模块的相关操作也随之终止。
5、 当printk输出信息并调用uart_putc(debug_putc)时,fiq debugger驱动仍会执行并引发错误,因此仅禁用fiq-debugger并不足以解决问题,必须彻底阻止相关调用流程,防止在调试输出过程中触发异常,确保系统稳定运行。
6、 RK提供的FIQ调试器功能将调试与常规串口功能整合于同一代码中,通过配置宏CONFIG_FIQ_DEBUGGER_CONSOLE来启用FIQ调试串口,实现高效的中断调试能力,同时兼顾日常串口通信需求,提升了系统调试的灵活性与响应速度。
7、 fiq_debugger_tty_init函数用于完成调试串口的初始化配置。
