背景
在DM8168的EVM板中,DM8168使用UART2作为控制台串口,但在新研FXX板中,DM8168改用UART0,这就需要修改U-Boot源码。
U-Boot控制台串口驱动分析
U-Boot的启动过程中控制台和UART初始化分为两个阶段,相关的几个函数的调用关系分别为:
第一阶段:start_armboot()
–>init_sequence[]初始化函数数组
–>board_init()
&init_baudrate()
&serial_init()
。
第二阶段:start_armboot()
–>stdio_init()
&console_init_r()
。
第一阶段。
在board_init()
中主要是复位串口,使用了UART_SYSCFG寄存器。
========= arch/arm/include/asm/arch-ti81xx/cpu.h 306 317 ==============
/* UART2 registers */
#ifdef CONFIG_TI816X
#define DEFAULT_UART_BASE UART2_BASE
#endif
#ifdef CONFIG_TI814X
#define DEFAULT_UART_BASE UART0_BASE
#endif
/* UART registers */
/*TODO:Move to a new file */
#define UART_SYSCFG (DEFAULT_UART_BASE + 0x54)
把UART2_BASE修改为UART0_BASE即可改为初始化UART0。
在serial_init()
函数中有这样的一段配置:
===