平台配置:讯为MX6Q TOPEET,linux 3.0.35,uboot
将控制台由默认的UART1(ttymxc0)改为UART4(ttymxc3)
主要是修改boot
1. ./board/freescale/mx6q_topeet/ mx6q_topeet.c修改引脚初始化,增加UART4的初始化
static void setup_uart(void)
{
#if defined CONFIG_MX6Q
/* UART1 TXD */
mxc_iomux_v3_setup_pad(MX6Q_PAD_CSI0_DAT10__UART1_TXD);
/* UART1 RXD */
mxc_iomux_v3_setup_pad(MX6Q_PAD_CSI0_DAT11__UART1_RXD);
/* UART1 TXD */
mxc_iomux_v3_setup_pad(MX6Q_PAD_CSI0_DAT12__UART4_TXD);
/* UART1 RXD */
mxc_iomux_v3_setup_pad(MX6Q_PAD_CSI0_DAT13__UART4_RXD);
2. ./include/configs/mx6q_topeet.h_2G修改bootloader控制台对应串口,共三处
由于通过脚本编译时会自动调用覆盖mx6q_topeet.h,所以修改该文件
#define CONFIG_MXC_UART
//#define CONFIG_UART_BASE_ADDR UART1_BASE_ADDR
#define CONFIG_UART_BASE_ADDR UART4_BASE_ADDR
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE
//#define CONFIG_CONS_INDEX 1
#define CONFIG_CONS_INDEX 4
#define CONFIG_BAUDRATE 115200
//console=ttymxc0改为3
#define CONFIG_EXTRA_ENV_SETTINGS \
"netdev=eth0\0" \
"ethprime=FEC0\0" \
"uboot=u-boot.bin\0" \
"kernel=uImage\0" \
"nfsroot=/opt/eldk/arm\0" \
"bootargs_base=setenv bootargs console=ttymxc3,115200\0"\
3. ./include/configs/mx6q_topeet.h_2G这个是向后续linux系统中传的参数。修改linux控制台串口。
这个在很多文章中没有提,可能是由于讯为启动方式的缘故,找了好久才发现
//console=ttymxc0改为3
else if(1 == boot_system_flags)//QT
{
sprintf(bootargs, "console=ttymxc3,115200 %s root=/dev/mmcblk0p1 rootwait", displayArgs);
setenv("bootargs", bootargs);
以上步骤仅为个人调试过程的总结,欢迎批评指正。