RK3399 驱动开发 _ 05 - Android系统中debug串口输出乱码及波特率设置


前言

在RK3399平台开发过程中,串口debug是一种不错的调试手段。但很多时候串口在打印过程中会出现正常输出一段时间后,莫名出现打印乱码情况。本文旨在解决设备启动后,串口正常打印一段时间后出现乱码的问题。

系统:Android8.1
内核 : Kernel 4.4.167

一、串口输出乱码及其原因

串口正常打印一段时间后出现乱码的问题,猜测可能是由于数据太多导致的乱码,初步尝试将波特率从150000改为115200 。

二、串口波特率修改

修改串口波特率时需要修改以下两部分:uboot和设备树dts 。

1. uboot 修改

在 : u-boot/configs/rk3399_defconfig 文件中 :
将:
CONFIG_SYS_EXTRA_OPTIONS="RKCHIP_RK3399,PRODUCT_MID,NORMAL_WORLD,SECOND_LEVEL_BOOTLOADER,BAUDRATE=150000"
CONFIG_ARM=y
CONFIG_ROCKCHIP_ARCH64=y
CONFIG_PLAT_RK33XX=y
修改为
CONFIG_SYS_EXTRA_OPTIONS="RKCHIP_RK3399,PRODUCT_MID,NORMAL_WORLD,SECOND_LEVEL_BOOTLOADER,BAUDRATE=115200"
CONFIG_ARM=y
CONFIG_ROCKCHIP_ARCH64=y
CONFIG_PLAT_RK33XX=y

2. 内核中设备树dts修改

在 : kernel/arch/arm64/boot/dts/rockchip/ 路径中查找 :
$ grep -r "rockchip,baudrate" -n
找到所在设备树rk3399-android.dtsi :
将:
	fiq_debugger: fiq-debugger {
		compatible = "rockchip,fiq-debugger";
		rockchip,serial-id = <2>;
		rockchip,wake-irq = <0>;
		rockchip,irq-mode-enable = <0>;  /* If enable uart uses irq instead of fiq */
		rockchip,baudrate = <1500000>;  /* Only 115200 and 1500000 */
		pinctrl-names = "default";
		pinctrl-0 = <&uart2c_xfer>;
		interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH 0>;
	};
修改为 :
	fiq_debugger: fiq-debugger {
		compatible = "rockchip,fiq-debugger";
		rockchip,serial-id = <2>;
		rockchip,wake-irq = <0>;
		rockchip,irq-mode-enable = <0>;  /* If enable uart uses irq instead of fiq */
		rockchip,baudrate = <115200>;  /* Only 115200 and 1500000 */
		pinctrl-names = "default";
		pinctrl-0 = <&uart2c_xfer>;
		interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH 0>;
	};

3. 重新编译并烧录

重新编译u-boot 和内核并烧录生效。

三、串口输出测试

将波特率改为115200后,串口输出恢复正常。


总结

  1. 当调试串口输出异常时,可通过适当降低串口波特率来解决。
  2. rk3399 只支持115200 和 1500000的波特率。
  3. u-boot中波特率和内核dts中波特率要保持一致。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值