linux修改调试串口(3.0.35)

linux修改调试串口


核心板的调试UART口(UART1)多次烧录后无法输入,经过测试发现输入信号进入IMX6Q芯片后无响应,为了能够不影响调试,临时将调试串口修改为UART4。
当前UART4被复用为I2S引脚(用于录音,连接到SGTL5000),由于暂时不需要调试SGTL5000,临时修改该引脚作为串口使用。
在这里插入图片描述
1、 找到UART4的复用定义
MX6Q_PAD_KEY_COL0__AUDMUX_AUD5_TXC, //UART4_TXD/I2S5_TXC
MX6Q_PAD_KEY_ROW0__AUDMUX_AUD5_TXD, //UART4_RXD/I2S5_TXD
如果KEY_COL0/ROW0复用作为UART,引脚定义如下
MX6Q_PAD_KEY_COL0__UART4_TXD
MX6Q_PAD_KEY_ROW0__UART4_RXD
2、 修改uboot的setup_uart函数
cid_uboot-imx/board/freescale/mx6q_sabresd$ vim mx6q_sabresd.c
使用UART4的引脚
3、 修改UART索引号、配置基地址和传递参数
$ vi include/configs/mx6q_sabresd.h
#define CONFIG_UART_BASE_ADDR UART4_BASE_ADDR
#define CONFIG_CONS_INDEX 4
bootargs console=ttymxc3
4、 内核修改UART4的引脚复用,屏蔽掉I2S复用的定义
//MX6Q_PAD_KEY_COL0__AUDMUX_AUD5_TXC, //UART4_TXD/I2S5_TXC
//MX6Q_PAD_KEY_ROW0__AUDMUX_AUD5_TXD, //UART4_RXD/I2S5_TXD
/ used for temp debug with uart4/
MX6Q_PAD_KEY_COL0__UART4_TXD
MX6Q_PAD_KEY_ROW0__UART4_RXD
此时解压到内核的部分就没有打印了
5、 修改内核的解压串口
/arch/arm/plat-mxc/include/mach$ vim uncompress.h
case MACH_TYPE_MX6Q_SABRESD:
uart_base = MX6Q_UART4_BASE_ADDR;
修改解压串口后,启动停止在内核解压完成的地方
6、 修改采样时钟的名称,控制台串口基地址(arch/arm/mach-mx6/board-mx6q_sabresd.c)
mx6_sabresd_timer_init(void)
->uart_clk = clk_get_sys(“imx-uart.3”, NULL);
-> early_console_setup(UART4_BASE_ADDR, uart_clk);
文件系统修改登录console
对于cid的文件系统
在etc/rc.d/rc_mxc.S中添加对对应UART口的支持

猜你喜欢

转载自blog.csdn.net/weixin_40983190/article/details/84940561