기사 디렉토리
머리말
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으로 변경한 후 직렬 포트 출력이 정상으로 돌아옵니다.
요약하다
- 디버깅 직렬 포트 출력이 비정상인 경우 직렬 포트 전송 속도를 적절하게 줄여 해결할 수 있습니다.
- rk3399는 115200 및 1500000의 전송 속도만 지원합니다.
- u-boot의 전송 속도는 커널 dts의 전송 속도와 일치해야 합니다.