RK3399ドライバ開発_05 - Androidシステムのシリアルポート出力文字化けとボーレート設定のデバッグ


序文

RK3399 プラットフォームの開発プロセスでは、シリアル デバッグは優れたデバッグ方法です。しかし、多くの場合、シリアル ポートは印刷プロセス中に一定期間は正常に出力しますが、その後、原因不明の文字化けが印刷されます。この記事は、デバイスの起動後、一定時間が経過するとシリアル ポートが正常に印刷した後に文字化けが発生する問題を解決することを目的としています。

系统:Android8.1
内核 : Kernel 4.4.167

1. シリアルポート出力文字化けとその原因

シリアルポートで一定期間正常に印刷が行われると文字化けが発生しますが、データ量が多すぎることが文字化けの原因と推測されますので、まずはボーレートを150000から115200に変更してみてください。

2. シリアルポートのボーレートの変更

シリアル ポートのボー レートを変更する場合は、uboot とデバイス ツリー dts の 2 つの部分を変更する必要があります。

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 とカーネルを再コンパイルして書き込み、有効にします。

3. シリアルポート出力テスト

ボーレートを 115200 に変更すると、シリアル ポートの出力が通常に戻ります。


要約する

  1. デバッグ中のシリアル ポート出力が異常な場合は、シリアル ポートのボー レートを適切に下げることで解決できます。
  2. rk3399 は、ボーレート 115200 と 1500000 のみをサポートします。
  3. U-Boot のボー レートは、カーネル dts のボー レートと一致している必要があります。

おすすめ

転載: blog.csdn.net/chenkanuo/article/details/131065019