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打印口不生效,可能是修改错文件。