环境

硬件: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 串口波特率相关推荐

  1. EFR32修改开发板VCOM串口波特率的方法

    Silabs官方开发板上的Jlink CDC串口(VCOM)默认的波特率是115200,在普通的终端软件(如"串口调试助手")里设置别的波特率是不起作用的. 要让它支持其他的波特率 ...

  2. rk-rockchip修改串口波特率

    文章目录 概述 RK3568修改串口波特率 ddr bin流程 概述 以下以rk3568为例,讲述如何修改串口波特率1500000->115200 RK3568修改串口波特率 1.uboot中修 ...

  3. 修改UBOOT和LINUX调试串口(TI达芬奇芯片--DM6467)

    Posted on 2011-10-31 10:53 jamiedu 阅读(889) 评论(0) 编辑 收藏 1.1 概述 TI针对DM6467提供的UBOOT和内核默认都是串口0作为调试串口输出的, ...

  4. linux 串口波特率的修改与sdma的设置

    最近这几天准备用串口实现DMA的传输数据,刚开始研究三天DMA,结果是一脸懵逼,无奈之下,只能跑去研究串口,结果发现Linux系统串口和DMA是真的难(小白,而且没人一起研究!),芯片手册对应的页数可 ...

  5. (AM3517)修改u-boot与Linux调试串口以及文件系统显示终端串口(瑞泰ICETEK-AM3517)

    (AM3517)修改u-boot与Linux调试串口以及文件系统显示终端串口(瑞泰ICETEK-AM3517) 发布时间:2012-04-15 23:50:05 技术类别:嵌入式   1.背景 近期一 ...

  6. 香蕉派 banana pi github 最新Linux 代码升级到kernel 4.2.

    2019独角兽企业重金招聘Python工程师标准>>> 香蕉派 banana pi github 最新Linux 代码升级到kernel 4.2. https://github.co ...

  7. uboot修改linux源码中参数,将自定义参数从uboot传入kernel的并读取的方法【转】

    希望朋友们多多指点,好的技术或心得一起分享: uboot向kernel传参机制以及kernel如何解析cmdline参数大家可以参考其他前辈的博文,这方面的讲解十分详尽. 在这里我总结以下自己在ubo ...

  8. STM32单片机修改串口波特率

    文章目录 前言 一.串口配置 1.串口初始化 2.修改波特率 总结 前言 对于STM32F1系列的开发板,串口波特率设置之后,就开始进行通信了,一般情况下是不需要修改的,但是在实际的项目开发中,我们可 ...

  9. rt_thread 如何修改单个串口波特率

    rt_thread 如何修改单个串口波特率 在rt_thread实时操作系统中,串口波特率是115200.网上有教程讲解如何修改默认的串口波特率,如: https://blog.csdn.net/we ...

最新文章

  1. matlab提excel文字,matlab读取excel文字
  2. 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
  3. Windows Error Report
  4. spring boot 整合 (全)
  5. 第14、15教学周作业
  6. jsp servlet示例_Servlet和JSP中的文件上传示例
  7. c mysql存储过程 out_MySQL存储过程带in和out参数
  8. 开发smartphone应用,无法生成cab文件?
  9. 39岁阿里P9失业了,总资产1.5亿……
  10. 30岁的职场危机,人生下半场的困局
  11. 【数据分析】基于matlab GUI学生成绩查询系统【含Matlab源码 604期】
  12. 读掘金小册组件精讲总结3
  13. 计算机集成声卡输出通道,电脑如何屏蔽集成声卡使用独立声卡?
  14. SMOTE算法及其Python实现
  15. 键盘按键损坏 注册表更改_如何彻底清洁键盘(不损坏任何东西)
  16. itextpdf生成列表基本用法
  17. 蒙大拿大学计算机,2020年药学专业世界大学排名【USNEWS】
  18. 领导力学习笔记(1118 周一)
  19. 小程序关注公众号的方法总结
  20. 2022华为软件挑战赛流量管理

热门文章

  1. 计算机专业的二本大学排名及分数线,全国二本大学排名及分数线
  2. 企业邮箱如何设置邮件模板
  3. FAFU OJ 依旧水水的dp3
  4. Android OpenGL ES 画出三棱锥
  5. OV7725寄存器配置
  6. 前端项目,看我在这里管理全局后台初始化的数据,就问你飒不飒?
  7. mysql 分钟_MySQL如何获取一个指定时间中的分钟数(MINUTE函数)呢?
  8. 使用css和js实现刮刮乐(简单易懂还有趣)
  9. 树莓派 SPI,I2C,UART串行总线介绍
  10. 以智能钻井为例,深度解析数字油田的智能化建设