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

相关推荐
绿箭柠檬茶2 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
工藤新一¹3 小时前
Linux —— 虚拟进程地址空间
linux·运维·服务器·c/c++·虚拟进程地址空间
Aspiresky3 小时前
浅析Linux内核scatter-gather list实现
linux·dma·scatter/gather
奔跑吧 android4 小时前
【linux kernel 常用数据结构和设计模式】【数据结构 3】【模拟input子系统input_dev和input_handler之间的多对多关系】
linux·数据结构·input·kernel·input_dev·input_handler·input_handle
再难也得平4 小时前
Linux初级篇
linux·运维·服务器
小猫挖掘机(绝版)5 小时前
通过tailscale实现一台电脑上vscode通过ssh连接另一台电脑上的VMware Linux 虚拟机
linux·windows·vscode·ubuntu·ssh
ajassi20005 小时前
开源 C++ QT Widget 开发(十三)IPC通讯--本地套接字 (Local Socket)
linux·c++·qt·开源
方先森有点懒6 小时前
CentOS 7.2 虚机 ssh 登录报错在重启后无法进入系统
linux·运维·centos·ssh
shylyly_6 小时前
Linux->日志的实现
linux·运维·服务器
想成为大佬的每一天7 小时前
Linux:NTP服务
linux·网络