uboot移植之环境变量bootargs

一. 简介

uboot 中有两个非常重要的环境变量 bootcmd 和 bootargs。本文来学习 uboot的环境变量 bootargs。

bootargs 环境变量也叫命令行参数。bootargs 保存着 uboot 传递给 Linux 内核的参数。

二. uboot移植之环境变量bootargs

环境变量 bootargs 的设置是在mx6ull_alientek_nand.h文件中。

mx6ull_alientek_nand.h文件所在目录:Uboot源码的根目录下 include/configs

如果是 NAND-Flash版的开发板,则 bootargs参数值如下设置:

复制代码
#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \
	CONFIG_MFG_ENV_SETTINGS \
	"panel=TFT43AB\0" \
	"fdt_addr=0x83000000\0" \
	"fdt_high=0xffffffff\0"	  \
	"console=ttymxc0\0" \
	"bootargs=console=ttymxc0,115200 ubi.mtd=4 "  \
		"root=ubi0:rootfs rootfstype=ubifs "		     \
		CONFIG_BOOTARGS_CMA_SIZE \
		"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
	"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
		"nand read ${fdt_addr} 0x5000000 0x100000;"\
		"bootz ${loadaddr} - ${fdt_addr}\0"

下面对上面的 bootargs环境变量值进行分析。

环境变量 bootargs值如下:

复制代码
"bootargs=console=ttymxc0,115200 ubi.mtd=4 "  \
		"root=ubi0:rootfs rootfstype=ubifs "		     \
		CONFIG_BOOTARGS_CMA_SIZE \
		"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\

CONFIG_BOOTARGS_CMA_SIZE 宏为空,如下:

复制代码
#define CONFIG_BOOTARGS_CMA_SIZE   ""

环境变量 bootargs最终展开为:

"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\

bootargs 环境变量 就是设置了很多的参数的值,这些参数 Linux 内核会使用到。

bootargs 环境变量主要设置两个参数:console,rootrootfstype

(1) console

console 用来设置 linux 终端 ( 或者叫控制台 ) ,也就是通过什么设备来和 Linux 进行交互,是
串口还是 LCD 屏幕?如果是串口的话应该是串口几等等。一般设置串口作为 Linux 终端,这样
我们就可以在电脑上通过 SecureCRT 来和 linux 交互了。这里设置 console 为 ttymxc0 ,因为 linux
启动以后 I.MX6ULL 的串口 1 在 linux 下的设备文件就是 /dev/ttymxc0 ,在 Linux 下,一切皆文
件。
设 置 ttymxc0 (也就是串口 1 )作为 Linux 的终端,并且串口波特率设置为 115200 。

(2) root

Linux系统启动以后,会有一个根文件系统的概念。这个根文件系统也就是 root。
root 用来设置根文件系统的位置。

这里根文件系统的位置是 "ubi0:rootfs "。

(3) rootfstype

此选项一般配置 root 一起使用, rootfstype 用于指定根文件系统类型。
如果根文件系统为 ext 格式的话,此选项无所谓。
如果根文件系统是 yaffs 、 jffs 或 ubifs 的话就需要设置此选项,指 定根文件系统的类型。

相关推荐
大锦终4 分钟前
【Linux】TCP协议
linux·运维·tcp/ip
任风雨1 小时前
附录I Linux命令一览
linux·服务器
黄金旺铺2 小时前
Linux 命令与运维终极手册(2025 完整版)
linux·运维·服务器
qq_398586542 小时前
小小电脑安装logisim-evolution
linux·proot
oioihoii3 小时前
不止于Linux:百花齐放的开源世界与社区的力量
linux·运维·开源
打不了嗝 ᥬ᭄3 小时前
传输层协议TCP
linux·服务器·网络·c++·tcp/ip
moringlightyn3 小时前
基础开发工具--编译器g++/gcc 自动化构建make/Makefile
linux·运维·笔记·自动化·c·编译器·make/makefile
程序员陆通4 小时前
CentOS/AlmaLinux 9 中 SSH 服务启动失败:OpenSSL 版本不匹配解决
linux·centos·ssh
ZYMFZ4 小时前
HAProxy 简介及配置
linux·负载均衡·haproxy
敲上瘾4 小时前
Linux系统C++开发环境搭建工具(三)—— brpc使用指南
linux·c++·分布式·rpc