u-boot传递给Linux内核的启动参数bootargs的学习笔记

bootargs概要介绍

在U-Boot启动过程中,bootargs是传递给Linux内核的一个关键参数,它包含了内核启动时所需要的各种配置选项。U-Boot通过设置环境变量bootargs来指定这些启动参数。

bootargs的作用

bootargs的作用是将内核启动所需的参数传递给内核,通常包括以下内容:

  1. **根文件系统(Root Filesystem)**的路径及类型。
  2. 内核启动时的设备信息,比如CPU架构、内存、串口等。
  3. 调试信息,例如内核启动时输出的日志级别、串口设置等。
  4. 其他驱动或功能的启用/禁用配置

常见的bootargs参数格式

bootargs一般以空格分隔多个键值对,常见的启动参数包括:

  1. 根文件系统

    • root=/dev/mmcblk0p2: 指定根文件系统所在的分区,这里假设根文件系统位于/dev/mmcblk0p2(比如SD卡的第二个分区)。
    • rootfstype=ext4: 指定根文件系统的类型,这里是ext4
  2. 根文件系统的挂载方式

    • rootwait: 在根文件系统未准备好时,内核会等待直到设备准备好。
  3. 启动模式和控制台配置

    • console=ttyS0,115200: 配置内核的控制台,表示使用串口ttyS0,波特率为115200。
    • console=tty1: 指定内核使用tty1作为控制台,通常用于显示登录界面。
  4. 内核调试

    • quiet: 关闭大部分内核启动时的日志输出,减少调试信息。
    • loglevel=3: 设置内核日志级别,3表示普通的错误日志输出。
  5. 内存配置

    • mem=512M: 指定内核可用的内存大小,通常用于调试或内存受限的环境。
  6. CPU架构信息

    • arch=arm: 用于指定CPU架构,arm表示ARM架构的处理器。
  7. 其他内核选项

    • earlyprintk: 启用早期内核打印功能,用于调试早期启动过程。
  8. 驱动相关配置

    • rootdelay=10: 根文件系统设备启动延迟时间,通常用来等待存储设备的初始化。
  9. 网络配置

    • ip=dhcp: 启动时自动获取IP地址,通常用于通过网络启动(比如TFTP)。

配置bootargs

U-Boot会根据环境变量bootargs来传递这些参数给Linux内核,通常的步骤是:

  1. 通过setenv命令设置bootargs变量。

    • 例如,在U-Boot命令行中输入:
      setenv bootargs "root=/dev/mmcblk0p2 rootfstype=ext4 console=ttyS0,115200 rootwait"
      
  2. 在U-Boot中启动内核时,U-Boot会将bootargs传递给内核,通常是通过bootmbootz命令将bootargs的内容传递给内核。

    • 例如,使用:
      bootm ${kernel_addr} - ${fdt_addr}
      
      其中kernel_addr是内核镜像的加载地址,fdt_addr是设备树文件的加载地址。

传递给内核的参数

内核在启动时会解析这些bootargs参数,并根据参数的值来配置系统。例如,内核会根据root=参数找到根文件系统,使用console=参数配置控制台输出,利用mem=参数设置内存。

小结

bootargs是一个非常重要的环境变量,用于在启动过程中向Linux内核传递关键配置参数。通过在U-Boot中正确设置bootargs,可以影响内核的启动行为、调试输出、文件系统挂载、控制台配置等多个方面。在嵌入式开发中,理解并灵活配置这些参数,对于调试和优化启动过程至关重要。

如何查看u-boot的环境变量bootargs的内容是什么?

在U-Boot的命令行界面,可以使用printenv命令查看所有环境变量,包括bootargs。执行以下命令会输出当前设置的bootargs值:

printenv bootargs

我对我的1号开发板运行命令printenv bootargs,结果如下:
在这里插入图片描述
这说明并没有设置这个环境变量。

如何设置u-boot的环境变量bootargs

可以使用setenv命令来设置u-boot的环境变量,比如下面这条命令:

setenv bootargs "console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"

但是要注意,由于u-boot的运行机制,很有可能你这个设置会无效,具体的原因见博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/145902134 【搜索关键词“而不是直接去修改环境变量”】

如何保存自己设置的环境变量值

参看博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/145902134 【搜索“如何对修改后的环境变量进行保存”】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值