2.4. UART _LOG

本文介绍串口log打印驱动配置。AC792N有5组UART控制器,均可以用于log打印。

注意:

1、公版SDK默认使用UART0作为打印串口,非必要不要修改。

2、本文仅介绍log的驱动配置,log的使用、开关等可以查看LOG章节。

2.4.1. 应用层打印驱动配置

公版SDK默认已开启串口打印,开发者一般只需要修改IO口TCFG_DEBUG_PORT和波特率TCFG_DEBUG_BAUDRATE即可。

具体参数介绍查看UART_GEN章节。

典型配置

// sdk_config.h
#define TCFG_DEBUG_UART_ENABLE              1           // 使能调试串口
#define TCFG_DEBUG_PORT                     IO_PORTD_01 // 输出IO
#define TCFG_DEBUG_BAUDRATE                 1000000     // 波特率

// board_config_xxx.h
#define TCFG_UART_KEY_INPUT_IO              -1   // UART按键RX口
#define TCFG_UART_KEY_ENABLE                0    // 使能UART按键功能

// 通用串口配置
#define TCFG_UART0_ENABLE                   TCFG_DEBUG_UART_ENABLE  // UART0默认用来打印口
#define TCFG_UART0_TX_IO                    TCFG_DEBUG_PORT         // TX发送口
#define TCFG_UART0_RX_IO                    TCFG_UART_KEY_INPUT_IO  // RX发送口
#define TCFG_UART0_BAUDRATE                 TCFG_DEBUG_BAUDRATE     // 波特率
#define TCFG_UART0_PARITY                   UART_PARITY_DISABLE     // 奇偶校验
#if TCFG_UART0_ENABLE
UART0_PLATFORM_DATA_BEGIN(uart0_data)
#ifdef CONFIG_DEBUG_ENABLE
    .disable_tx_irq         = 1,
#endif
    .baudrate               = TCFG_UART0_BAUDRATE,
    .tx_pin                 = TCFG_UART0_TX_IO,
    .rx_pin                 = TCFG_UART0_RX_IO,
    .max_continue_recv_cnt  = 1024,
    .idle_sys_clk_cnt       = 500000,
    .flags                  = UART_DEBUG,
    .parity                 = TCFG_UART0_PARITY,
UART0_PLATFORM_DATA_END();
#endif // TCFG_UART0_ENABLE

power_early_flowing()串口的IO添加PORT_PROTECT()保护。防止初始化流程将IO配置deinit为高阻态。

void power_early_flowing(void)
{
    PORT_TABLE(g);
// ...
#if (defined CONFIG_DEBUG_ENABLE) && (TCFG_DEBUG_PORT != -1)
    PORT_PROTECT(TCFG_DEBUG_PORT); // 串口IO加保护
#endif
// ...
    power_early_init((u32)gpio_config);
}

SDK初始化打印串口位置如下。

// board_xxx.c
#ifdef CONFIG_DEBUG_ENABLE
void debug_uart_init(void)
{
#if TCFG_UART0_ENABLE
    uart_init(&uart0_data);  // 传入串口配置,初始化串口
#endif
}
#endif

// setup.c
void setup_arch(void)
{
// ...
#ifdef CONFIG_DEBUG_ENABLE
    extern void debug_uart_init();
    debug_uart_init();         // 初始化串口
#ifdef __LOG_ENABLE
    log_early_init(10 * 1024); // log缓存初始化
#endif
// ...
}

如需要更换打印UART,修改传入uart_init()的配置。

2.4.2. UBOOT打印驱动配置

开启UBOOT打印方法:在isd_config.ini中添加打印IOUTTX和波特率UTBD参数配置。

  • UTTX参数IO写法

IO口

UBOOT写法

普通IO

PA01、PD01、PB15等(PF口不支持打印)

HUSB

HUSBDP、HUSBDM

FUSB

FUSBDP、FUSBDM

SDK中配置

// board_config_xxx.h
#define TCFG_UBOOT_DEBUG_PORT            PD01 // uboot打印口配置
// isd_config_rule.c
UTTX=TCFG_UBOOT_DEBUG_PORT;             [配置UBOOT调试输出Pin]
UTBD=TCFG_DEBUG_BAUDRATE;               [配置UBOOT调试波特率]

注意:每次编译由isd_config_rule.c生成isd_config.ini,而uboot能够拿到的是isd_config.ini配置,因此如果开发者修改uboot打印口不生效,可能是修改错文件。