香蕉派,修改 uboot 和 kernel 串口波特率
环境
硬件:bananapi m1
软件:buildroot(uboot-2018.07 + linux-4.18.12)
默认波特率
编译
$ make bananapi_m1_defconfig
$ make
编译好后,SD 卡烧录镜像 sdcard.img,插入 BPI 启动,默认情况下 uboot 和 kernel 的串口波特率为 115200。我们把串口工具调到 115200,8n1,就可以看到系统启动时的 log 了,包括 uboot 和 kernel 的 log 打印。
修改波特率
如何修改波特率呢?同样也是分为两块,uboot 和 kernel。
先看 uboot,使用 make uboot-menuconfig 命令
在 → Device Drivers → Serial drivers
路径下,将 Default baudrate 改成 57600。然后重新编译 uboot。
其实就是修改 output/build/uboot-2018.07/.config 中的 CONFIG_BAUDRATE
#
# Serial drivers
#
CONFIG_BAUDRATE=57600
CONFIG_REQUIRE_SERIAL_CONSOLE=y
CONFIG_SPECIFY_CONSOLE_INDEX=y
CONFIG_SERIAL_PRESENT=y
CONFIG_SPL_SERIAL_PRESENT=y
CONFIG_CONS_INDEX=1
CONFIG_DM_SERIAL=y
接着修改 kernel 的串口波特率。不同的板子,不同的镜像,修改的位置是不一样的,我知道的有两种
1. 修改 dts
这里我看到编译好的镜像使用的是 sun7i-a20-bananapi.dtb 这个文件,于是就去修改 output/build/linux-4.18.12/arch/arm/boot/dts/sun7i-a20-bananapi.dts
chosen {// stdout-path = "serial0:115200n8";stdout-path = "serial0:57600n8";};
重新编译 kernel,再完整编译生成 sdcard.img,重新烧录,串口工具波特率改成 57600,启动
可以看到,uboot 阶段显示正常,到 kernel 阶段出现了乱码,显然 kernel 的串口波特率并没有修改成功,那问题出现在哪呢?
2. 修改 boot.scr
仔细看了 uboot 的启动 log,没看到加载 sun7i-a20-bananapi.dtb 的打印,却看到了这一句 Found U-Boot script /boot.scr
这句是干嘛的呢?查资料知道,boot.scr 是通过 boot.cmd 编译生成的。
board/bananapi/bananapi-m1/boot.cmd
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait mmc dev 0
fatload mmc 0 $kernel_addr_r zImage
fatload mmc 0 $fdt_addr_r sun7i-a20-bananapi.dtbbootz $kernel_addr_r - $fdt_addr_r
看到 boot.cmd 的内容瞬间就找到了答案,波特率是在这里通过启动参数的形式由 uboot 传递给 kernel 的。系统启动后,执行命令 cat /proc/cmdline
也能证实这一点
Welcome to Bananapi M1
buildroot login: root
# cat /proc/cmdline
console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
#
console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
这句就是 boot.scr 里面的内容。
下面我们来修改一下
boot.cmd
setenv bootargs console=ttyS0,57600 earlyprintk root=/dev/mmcblk0p2 rootwait mmc dev 0
fatload mmc 0 $kernel_addr_r zImage
fatload mmc 0 $fdt_addr_r sun7i-a20-bananapi.dtbbootz $kernel_addr_r - $fdt_addr_r
编译
$ mkimage -A arm -T script -O linux -d boot.cmd boot.scr
我们可以不用重新编译并烧录整个镜像,只要单独编译并替换 boot.scr
这个文件就行了。替换后启动
可以看到,uboot 和 kernel 都以 57600 的波特率正常打印 log 了,通过 cat /proc/cmdline
查看波特率也是 57600。
# cat /proc/cmdline
console=ttyS0,57600 earlyprintk root=/dev/mmcblk0p2 rootwait
香蕉派,修改 uboot 和 kernel 串口波特率相关推荐
- EFR32修改开发板VCOM串口波特率的方法
Silabs官方开发板上的Jlink CDC串口(VCOM)默认的波特率是115200,在普通的终端软件(如"串口调试助手")里设置别的波特率是不起作用的. 要让它支持其他的波特率 ...
- rk-rockchip修改串口波特率
文章目录 概述 RK3568修改串口波特率 ddr bin流程 概述 以下以rk3568为例,讲述如何修改串口波特率1500000->115200 RK3568修改串口波特率 1.uboot中修 ...
- 修改UBOOT和LINUX调试串口(TI达芬奇芯片--DM6467)
Posted on 2011-10-31 10:53 jamiedu 阅读(889) 评论(0) 编辑 收藏 1.1 概述 TI针对DM6467提供的UBOOT和内核默认都是串口0作为调试串口输出的, ...
- linux 串口波特率的修改与sdma的设置
最近这几天准备用串口实现DMA的传输数据,刚开始研究三天DMA,结果是一脸懵逼,无奈之下,只能跑去研究串口,结果发现Linux系统串口和DMA是真的难(小白,而且没人一起研究!),芯片手册对应的页数可 ...
- (AM3517)修改u-boot与Linux调试串口以及文件系统显示终端串口(瑞泰ICETEK-AM3517)
(AM3517)修改u-boot与Linux调试串口以及文件系统显示终端串口(瑞泰ICETEK-AM3517) 发布时间:2012-04-15 23:50:05 技术类别:嵌入式 1.背景 近期一 ...
- 香蕉派 banana pi github 最新Linux 代码升级到kernel 4.2.
2019独角兽企业重金招聘Python工程师标准>>> 香蕉派 banana pi github 最新Linux 代码升级到kernel 4.2. https://github.co ...
- uboot修改linux源码中参数,将自定义参数从uboot传入kernel的并读取的方法【转】
希望朋友们多多指点,好的技术或心得一起分享: uboot向kernel传参机制以及kernel如何解析cmdline参数大家可以参考其他前辈的博文,这方面的讲解十分详尽. 在这里我总结以下自己在ubo ...
- STM32单片机修改串口波特率
文章目录 前言 一.串口配置 1.串口初始化 2.修改波特率 总结 前言 对于STM32F1系列的开发板,串口波特率设置之后,就开始进行通信了,一般情况下是不需要修改的,但是在实际的项目开发中,我们可 ...
- rt_thread 如何修改单个串口波特率
rt_thread 如何修改单个串口波特率 在rt_thread实时操作系统中,串口波特率是115200.网上有教程讲解如何修改默认的串口波特率,如: https://blog.csdn.net/we ...
最新文章
- matlab提excel文字,matlab读取excel文字
- 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
- Windows Error Report
- spring boot 整合 (全)
- 第14、15教学周作业
- jsp servlet示例_Servlet和JSP中的文件上传示例
- c mysql存储过程 out_MySQL存储过程带in和out参数
- 开发smartphone应用,无法生成cab文件?
- 39岁阿里P9失业了,总资产1.5亿……
- 30岁的职场危机,人生下半场的困局
- 【数据分析】基于matlab GUI学生成绩查询系统【含Matlab源码 604期】
- 读掘金小册组件精讲总结3
- 计算机集成声卡输出通道,电脑如何屏蔽集成声卡使用独立声卡?
- SMOTE算法及其Python实现
- 键盘按键损坏 注册表更改_如何彻底清洁键盘(不损坏任何东西)
- itextpdf生成列表基本用法
- 蒙大拿大学计算机,2020年药学专业世界大学排名【USNEWS】
- 领导力学习笔记(1118 周一)
- 小程序关注公众号的方法总结
- 2022华为软件挑战赛流量管理