Jetson设备如何接调试串口工具查看内核打印信息
Posted 无证驾驶梁嗖嗖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jetson设备如何接调试串口工具查看内核打印信息相关的知识,希望对你有一定的参考价值。
方便小白使用如下教程。
一、认识USB转串口调试工具转接小板 和硬件连接方式
如图,是一款USB TO TTL转换板,这款小板支持3种供电模式:对外输出5V、对外输出3.3V和由外部供电。正面有一个跳帽,跳帽跳到3V3,小板由USB供电,对外输出3.3V;跳帽跳到5V,小板由USB供电,对外输出5V;摘下跳帽,由外部供电,要求3.3V或5V的直流电源。
另外需要关注的是3个LED灯,分别是TXD LED、RXD LED、POWER LED。通常观察灯来知晓小板的运行情况。电源供电后,POWER LED常亮,有数据发送和接收时,TXD LED和RXD LED会闪烁。
开发板上都会有串口针脚,有的串口印有TXD、RXD 、GND这样的标识,有的没有标识,可以用万用表测试一下。3.3和5v的就是电源脚,gnd为0v,发送和接收一般为电压不确定没有固定,一般的载板串口如给你留4个孔需要自己接线,好点的厂家会给你标注丝印。
还有的厂家会好点直接给你上插针方便你连接,按照对应的使用手册找到引脚1和2按照表格数引脚号即可:
二、调试软件选择和串口驱动安装
windows10下 CH340/CH341 USB转串口驱动安装
SecureCRT 、串口调试助手 、xshell等,安装完打开类似下面这样的;
三、com端口和波特率设置
电脑端打开设备管理器。一般都是桌面鼠标右击此电脑,选择管理,看到如下界面
接好线以后,串口工具打开生成的com端口,波特率设置好,默认115200,数据位停止位校验位默认不动。设备上电就能看到系统启动信息了,一般的串口测试也是这样连接。
Rk3399—调试串口用于普通串口
在开发过程中,有时遇到外设较多,串口不够的情况,而另外扩展串口又极为不便,此时可以使用调试串口(log信息打印串口)做为普通串口通讯!
Linux中调试串口的配置是通过bootargs环境变量传递的,通过该参数告诉内核使用哪个串口以及波特率作为调试串口,bootargs可以在设备树(dts)下配置,chosen里有属性项bootargs,启动linux时,内核会使用chosen中定义的bootargs,如果没有定义bootargs,linux会使用kernel默认的bootcmdline。如果bootcmdline为空,那么内核会使用UBOOT的环境变量bootargs。
好了,我们知道了串口配置参数的传递过程,下面就一步一步来实现吧。
修改设备树
在kernel\\arch\\arm64\\boot\\dts\\rockchip文件夹下有个rk3399-android.dtsi,找到如下内容:
chosen
bootargs = “”/*"earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1";*/
;
earlycon表示的就是linux启动前的console设备,主要用于在系统启动阶段的内核打印输出,由于linux内核实际设备驱动模型还没有加载完成,所以早期的启动信息需要一个特殊的console用于输出log,这就是设备树中bootargs的参数配置,直接将其屏蔽,这样设备树中就传递了一个空的字符给bootargs,就不会进行调试串口配置!
将kernel 的config中的debug相关配置关闭
#CONFIG_FIQ_DEBUGGER=y
#CONFIG_FIQ_DEBUGGER_NO_SLEEP=y
#CONFIG_FIQ_DEBUGGER_CONSOLE=y
#CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y
这些是FIQ debug串口的开关,即rk_fiq_debugger.c文件是否编译进内核以及是否启用控制台调试。也可将设备树fiq_debugger中的status改为disables,如下:
fiq_debugger: fiq-debugger
status = "disabled"; //禁用
compatible = "rockchip,fiq-debugger";
rockchip,serial-id = <2>; //指定调试串口为串口2
rockchip,signal-irq = <182>; //中断号
rockchip,wake-irq = <0>;
rockchip,irq-mode-enable = <1>; /* If enable uart uses irq instead of fiq */
rockchip,baudrate = <1500000>; /* Only 115200 and 1500000 */
pinctrl-names = "default";
pinctrl-0 = <&uart2c_xfer>;
;
修改printk.c文件
printk.c是内核与打印相关的文件,所有的打印都在这个文件中定义,该文件在linux/printk下,修改其中call_console_drivers函数如下:
for_each_console(con)
if (exclusive_console && con != exclusive_console)
continue;
if (!(con->flags & CON_ENABLED))
continue;
if (!con->write)
continue;
if (!cpu_online(smp_processor_id()) &&
!(con->flags & CON_ANYTIME))
continue;
//if (con->flags & CON_EXTENDED)
// con->write(con, ext_text, ext_len);
//else
// con->write(con, text, len);
call_console_drivers这个函数会遍历console driver并且输出log信息,其中屏蔽的这几行就是控制台的调试信息。
以上是关于Jetson设备如何接调试串口工具查看内核打印信息的主要内容,如果未能解决你的问题,请参考以下文章