2.3. 调试配置

调试口在 Bringup 过程中非常重要,因此有必要先配置好调试信息

2.3.1. 调试端口

因为 uboot,kernel,rootfs 均用到调试端口,因此有几个配置参考,以 ZXM47D00 工程为例, 使用 uart0 端口作为调试口

2.3.1.1. ZXM47D00-board.dts

&uart0 {
    pinctrl-names = "default";
    pinctrl-0 = <&uart0_pins_a>;   //在package/boot/uboot-m4/src/arch/riscv/dts/m4-pinctrl.dtsi 中预定义
    status = "okay";
};

2.3.1.2. ZXM47D00-board-u-boot.dtsi

 uart0_pins_a: uart0-0 {
    u-boot,dm-pre-reloc;
    pins {
        u-boot,dm-pre-reloc;
    };
};

&uart0 {
    u-boot,dm-pre-reloc;
};

2.3.2. 串口参数

主要配置使用哪个端口,端口的波特率等工作参数

2.3.2.1. uboot

如果工程目录(如target/linux/m4/nand/ZXM47D00/image/)中有 env.txt 文件,则该文件生效。

2.3.2.2. kernel

kernel 串口参数在 ZXM47D00-board.dts 中设置

chosen {
    stdout-path = "serial0:115200n8";                  //uart0, 115200,n,8
    bootargs = "rdinit=/init earlycon=sbi loglevel=7";
    reset-after-fw-burn;
};

2.3.3. 调试日志

uboot 中默认的调试日志等级比较高,因此关键信息默认是有输出的

kernel 中默认关闭了调试日志,因此在 Bringup 的时候需要打开,开关在上述的 env.txt 中,去掉 quiet 参数即可

set_commonargs=setenv bootargs quiet earlycon=${earlycon} earlyprintk init=/linuxrc

2.3.4. 额外日志

Openwrt 中有一些模块使用了额外的调试控制开关,如果需要可以手工打开,但如果模块工作正常就尽量不要打开,因为会拖慢开机速度

参考快速入门 - 编译概述 - Kernel配置,进入kernel的功能配置 –> Kernel hacking –> ZX Debug

[ ] ADCIM driver debug
[ ] Audio Codec driver debug
[ ] CE driver debug
[ ] SPI ENC driver debug
[ ] CIR driver debug
[ ] CMU driver debug
[ ] DE driver debug
[ ] DVP driver debug
[ ] GPAI driver debug
[ ] GE driver debug
[ ] GMAC driver debug
[ ] VE driver debug
[ ] Pinctrl driver debug
[ ] PWM driver debug
[ ] RTC driver debug
[ ] RTP driver debug
[ ] SD&MMC Host Controller driver debug
[ ] SPI driver debug
[ ] Thermal Sensor driver debug
[ ] TWI driver debug
[ ] UART driver debug
[ ] USB driver debug
[ ] Watchdog driver debug
[ ] SID(eFuse) driver debug
[ ] Boot time debug

2.3.5. 成果

成功的调试端口配置可以让我们很容易发现问题的根本原因而去快速解决它