U-Boot中改用DM8168的UART0

该文详细分析了U-Boot启动过程中控制台串口从UART2切换到UART0的修改过程,涉及初始化的两个阶段,包括寄存器配置和设备链表管理。通过调整源码中的基址定义和相关宏,成功将控制台输出定向到UART0。分析还涵盖了输入输出的实现,强调了不同阶段的区别。最终,修改后的U-Boot成功通过UART0进行通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

在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()函数中有这样的一段配置:

===
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值