am335x 更改调试串口
/********************************************************************* * am335x 更改调试串口 * * am335x的调试串口是uart0,uart硬件连接上与其他功能出现了冲突。 * 打算将其更改为uart1。本文并没有全部更改成功。 * 记录其过程,方便以后继续尝试。 * * Tony Liu, 2016-4-47, Shenzhen *********************************************************************/ 本文主要内容: 1. kernel调试串口更改 2. rootfs调试串口更改 3. uboot调试串口更改 参考链接: http://bbs.ednchina.com/BLOG_ARTICLE_3003157.HTM http://www.cnblogs.com/zym0805/archive/2011/07/17/2108573.html 1. kernel 1.1 更改kernel调试串口 通过uboot传参数,更改内核的uart端口,默认是ttyO0,更改为ttyO1 uboot/include/configs/ok335x.h #define CON \ "console=ttyO1,115200n8\0" \ "optargs=\0" \ "mmcroot=/dev/mmcblk0p2 ro\0" \ "mmcrootfstype=ext3 rootwait\0" \ "nandroot=ubi0:rootfs rw ubi.mtd=7,2048\0" \ "nandrootfstype=ubifs rootwait=1\0" #endif 1.2 关闭kernel的调试串口 include/configs/ok335x.h 通过uboot传参数,更改内核的uart端口,默认是ttyO0,更改为ttynull #define CON \ "console=ttynull,115200n8\0" \ "optargs=\0" \ "mmcroot=/dev/mmcblk0p2 ro\0" \ "mmcrootfstype=ext3 rootwait\0" \ "nandroot=ubi0:rootfs rw ubi.mtd=7,2048\0" \ "nandrootfstype=ubifs rootwait=1\0" #endif 2. rootfs 2.1 更改文件系统的调试端口 更改为ttyO1, getty命令用于设置uart的参数 /etc/inittab 0:2345:respawn:/sbin/getty 115200 ttyO1 2.2 关闭rootfs调试串口 将对应的行注释即可 /etc/inittab #0:2345:respawn:/sbin/getty 115200 ttyO0 3. uboot uboot中更改没有成功,但也把过程记录,方便之后查看。 uboot/include/configs/ok335x.h 更改下面的宏,注释的时候使用"/* */"进行注释,用“//”注释,编译会出现问题。 /* tony */ /*#define CONFIG_SERIAL2 1 #define CONFIG_CONS_INDEX 2 */ #define CONFIG_SERIAL1 1 #define CONFIG_CONS_INDEX 1 //并添加下面两个宏, 定义UART1,UART2的寄存器地址 /* tony */ #define CONFIG_SYS_NS16550_COM2 0x48022000 /* UART1 */ #define CONFIG_SYS_NS16550_COM3 0x48024000 /* UART2 */ /*******/ board/forlinx/ok335x/pll.c 添加使能uart1 static void per_clocks_enable(void) { ...... /* UART0 */ __raw_writel(PRCM_MOD_EN, CM_WKUP_UART0_CLKCTRL); while (__raw_readl(CM_WKUP_UART0_CLKCTRL) != PRCM_MOD_EN); /* UART1, add by Tony */ __raw_writel(PRCM_MOD_EN, CM_PER_UART1_CLKCTRL); while (__raw_readl(CM_PER_UART1_CLKCTRL) != PRCM_MOD_EN); /* UART3 */ __raw_writel(PRCM_MOD_EN, CM_PER_UART3_CLKCTRL); while (__raw_readl(CM_PER_UART3_CLKCTRL) != PRCM_MOD_EN); ...... } //添加uart1的时能 board/forlinx/ok335x/mux.c void enable_uart1_pin_mux(void) { configure_module_pin_mux(uart1_pin_mux); } 添加调用 board/forlinx/ok335x/evm.c void s_init(void) { ...... enable_uart0_pin_mux(); enable_uart1_pin_mux(); ...... }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?