RK3399 드라이버 개발_ 05 - Android 시스템에서 직렬 포트 출력 왜곡 문자 및 전송 속도 설정 디버그


머리말

RK3399 플랫폼의 개발 과정에서 직렬 디버그는 좋은 디버깅 방법입니다. 그러나 대부분의 경우 직렬 포트는 일정 시간 동안 인쇄 프로세스 중에 정상적으로 출력한 다음 설명할 수 없이 왜곡된 문자를 인쇄합니다. 이 문서는 장치가 시작된 후 일정 시간이 지나면 직렬 포트가 정상적으로 인쇄된 후 문자가 깨져 보이는 문제를 해결하는 것을 목표로 합니다.

系统:Android8.1
内核 : Kernel 4.4.167

1. 직렬 포트 출력 왜곡 문자 및 그 이유

시리얼 포트가 일정 시간 동안 정상적으로 인쇄된 후 문자 깨짐 문제가 나타납니다.너무 많은 데이터로 인해 문자 깨짐 현상이 발생한 것으로 추측됩니다.처음에는 전송 속도를 150000에서 115200으로 변경해 보십시오.

2. 직렬 포트 전송 속도 수정

직렬 포트 전송 속도를 수정할 때 다음 두 부분을 수정해야 합니다: 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와 커널을 다시 컴파일하고 구워서 적용하십시오.

3. 직렬 포트 출력 테스트

전송 속도를 115200으로 변경한 후 직렬 포트 출력이 정상으로 돌아옵니다.


요약하다

  1. 디버깅 직렬 포트 출력이 비정상인 경우 직렬 포트 전송 속도를 적절하게 줄여 해결할 수 있습니다.
  2. rk3399는 115200 및 1500000의 전송 속도만 지원합니다.
  3. u-boot의 전송 속도는 커널 dts의 전송 속도와 일치해야 합니다.

추천

출처blog.csdn.net/chenkanuo/article/details/131065019