完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在开发过程中,有时遇到外设较多,串口不够的情况,而另外扩展串口又极为不便,此时可以使用调试串口(log信息打印串口)做为普通串口通讯!
Linux中调试串口的配置是通过bootargs环境变量传递的,通过该参数告诉内核使用哪个串口以及波特率作为调试串口,bootargs可以在设备树(dts)下配置,chosen里有属性项bootargs,启动linux时,内核会使用chosen中定义的bootargs,如果没有定义bootargs,linux会使用kernel默认的bootcmdline。如果bootcmdline为空,那么内核会使用UBOOT的环境变量bootargs。 好了,我们知道了串口配置参数的传递过程,下面就一步一步来实现吧。 修改设备树 在kernelarcharm64bootdtsrockchip文件夹下有个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信息,其中屏蔽的这几行就是控制台的调试信息。 原作者:东皇※太一 |
|
相关推荐
2个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
739 浏览 0 评论
968 浏览 1 评论
856 浏览 1 评论
2075 浏览 1 评论
3322 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 16:56 , Processed in 0.631986 second(s), Total 43, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号