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

相关推荐
Sapphire~3 小时前
Linux-07 ubuntu 的 chrome 启动不了
linux·chrome·ubuntu
伤不起bb3 小时前
NoSQL 之 Redis 配置与优化
linux·运维·数据库·redis·nosql
广东数字化转型3 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
啵啵学习4 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
半桔4 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
网硕互联的小客服5 小时前
如何利用Elastic Stack(ELK)进行安全日志分析
linux·服务器·网络·安全
冰橙子id5 小时前
linux——磁盘和文件系统管理
linux·运维·服务器
无聊的小坏坏6 小时前
环境变量深度解析:从配置到内核的全链路指南
linux·bash
才鲸嵌入式6 小时前
01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
linux·c语言·单片机·嵌入式·arm·qemu·虚拟机
伤不起bb8 小时前
Kafka 消息队列
linux·运维·分布式·kafka