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 的话就需要设置此选项,指 定根文件系统的类型。

相关推荐
2401_892070981 天前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
lwx9148521 天前
Linux-Shell算术运算
linux·运维·服务器
somi71 天前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
双份浓缩馥芮白1 天前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
黄昏晓x1 天前
Linux ---- UDP和TCP
linux·tcp/ip·udp
路溪非溪1 天前
Linux驱动开发中的常用接口总结(一)
linux·运维·驱动开发
此刻觐神1 天前
IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
linux·服务器·学习
2401_892070981 天前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象
航Hang*1 天前
第3章:Linux系统安全管理——第2节:部署代理服务
linux·运维·服务器·开发语言·笔记·系统安全
-ONLY-¥1 天前
PostgreSQL运维全攻略:从基础操作到远程配置
linux