uboot 中环境变量的作用就是在不改变源码、不用重新编译的情况下,可以使我们通过设置环境变量的值来改变 uboot 的一些设置。uboot 开机时会一次性从存储介质(启动介质)中读取全部的环境变量到内存中作为环境变量的初始值,uboot 运行过程中用到的环境变量,都是内存中的环境变量,用户可以使用saveenv 指令将内存中的环境变量重新写入存储介质(启动介质)中,下次重启系统时会从存储介质(启动介质)中读取更新过的环境变量。
1 、查看环境变量
输入 printenv 命令,即可查看所有环境变量:(或者使用print命令),另外在特定的平台中,使用回车命令=print命令

图中我们看到环境变量的基本模式是:变量名=变量值,这个变量值就是一串字符串,程序通过解析字符串,得到所需参数(如 baudrate=115200)或者所要执行的操作(如 mmcargs)。
2 、增改删环境变量
1)我们可以添加一个自己的环境变量,比如添加一个 firstenv 变量,并设置值为 forlinx: =>setenv firstenv forlinx
保存
=>saveenv


saveenv 命令是保存环境变量到 eMMC Flash,如果不使用此命令,那么只是将环境变量存储到了内存中,断电之后,此变量将丢失。
然后使用 printenv 命令查看环境变量添加成功:

或者使用“printenv 变量名”查看:
=> printenv firstenv

2).删除一个环境变量,删除 firstenv 环境变量,使用 setenv 变量名,不赋任何值:

=> setenv firstenv
=> savenv

使用 printenv 查看结果,发现该变量不存在,表示删除成功:

3 、bootargs

bootargs 是一个重要的环境变量,主要是给内核传递参数,整个环境变量都是围绕着 bootargs 来设置的。bootargs 非常的灵活,内核和文件系统的不同搭配就会有不同的设置方法。下面介绍一下 bootargs常用参数,bootargs 的种类繁多,而且随着 kernel 的发展会出现一些新的参数,使得设置会更加灵活多样。
我们现在使用 printenv bootargs 命令查看一下 bootargs 环境变量:
=> print bootargs


可以看到 bootargs 并没有设置,使用 print 命令查看,发现 bootargs 是在 mmcargs 环境变量中设置的,而 mmcargs 是在 bootdelay 倒计时结束之后,由 bootcmd(bootcmd 介绍在下一节)执行的:


我们使用 run 命令执行一下 mmcargs:
=> run mmcargs
然后再 print bootargs,可以看到 bootargs 环境变量设置成功:

 其中,

console:表示使用的串口终端控制台,这里使用的是 ttymxc0,波特率是 115200。
root:表示文件系统相关参数。其中/dev/mmcblk1p2 表示 rootfs 文件系统挂载分区为 mmcblk1 的 p2分区。rootwait 是指等待设备/dev/mmcblk1p2 设备就绪后才尝试挂载 rootfs。如果没有此参数,Linux 内核启动时可能会在存储设备尚未就绪时就尝试挂载 rootfs,此时肯定挂载失败,那么启动也就失败了。
rw:声明启动权限,即以读写方式启动。
rootfstype:表示文件系统类型,如果所使用的文件系统类型是 ext2、3、4 类型,此参数可以不写,但对于 yaffs 或者 ubi 的文件系统,需要指明文件系统类型,如我们的 NAND 版,使用的是 yaffs2 文件系统。
看一下 NAND 版的 bootargs:


可以看到 NAND 版的 bootargs 所挂载的根文件系统所在分区为/dev/mtdblock5,文件系统类型为
rootfstype=yaffs2

4 、bootcmd
bootcmd 在 bootdelay 倒计时结束之后开始执行的第一条命令,主要用于启动内核。
例如:


bootcmd=if mmc rescan; then if run loadbootscript; then run bootscript; else if test ${bootdev} = sd1;then echo update from sd ···;run update_from_sd;else echo boot from emmc ···;if run loadimage; thenrun mmcboot; elif run loadimagebak; then run mmcboot; else run netboot; fi; fi; fi; else run netboot; fi
这个 bootcmd 的就是一个命令集,根据设置好的环境变量,按照一定的逻辑启动内核。关于此处的启动逻辑不再深入讲解,有兴趣的可以展开其中环境变量进行深究。
5 、bootdelay
用于倒计时,等待用户进入命令行。经过以上章节讲解,通过 senenv 可以设置 bootdelay 时间。

下次分析常用的网络的相关命令。

嵌入式系统学习笔记之五-- uboot常用命令 环境变量相关推荐

  1. 嵌入式系统学习笔记之五-uboot常用命令之补充

    1.nand 命令 uboot 也支持 NAND Flash 的操作命令,现在我们使用的 NAND 版的开发板,进行本节讲解. 输入"help nand"即可查看 NAND 相关命 ...

  2. 嵌入式系统学习笔记之五-- uboot常用命令 概述

    首先,先看看uboot都有那些命令:(这里我使用的是OKMX6ULL-S2开发板的linux版),不同的开发板的系统中的命令可能会稍有差异,对于我们学习影响不大. => help ? - ali ...

  3. Linux学习笔记:Linux常用命令总结

    文章目录 前言 Linux学习笔记:Linux常用命令总结 1. 目录命令 1.1 Linux目录结构 1.2 cd命令 切换工作目录 1.3 ls命令 显示目录下文件 1.4 mkdir命令 创建目 ...

  4. uboot和系统移植2(uboot常用命令)

    1.5.uboot的常用命令1 1.5.1.类似linux终端的行缓冲命令行 (1)行缓冲的意思就是:当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓存区(也就是系统认 ...

  5. 嵌入式系统想学习笔记之五--uboot之常用命令

    1. 常用操作命令 1..1 网络命令 使用网络命令之前,首先需要设置开发板的 IP 地址和 mac 地址: => setenv ipaddr 192.168.0.232=> setenv ...

  6. 嵌入式系统学习笔记之ftp

    虽然在嵌入式系统中,我们可以通过串口的Xmodem模式传送小的文件,但是毕竟不符合我们的使用习惯,并且串口传输速率太低,不能满足我们大部分的需求,要传输文件的时候,我们还是使用网络较为熟悉,今天我将我 ...

  7. Linux学习笔记(四)-Linux常用命令

    常用命令格式 #command(指令) [-options] parameter1(参数1) parameter2(参数2)... 大小写区分,tab自动补全 Shell特殊字符 通配符 管道Pipe ...

  8. Emacs学习笔记(6):常用命令备忘(打印版)

    博客搬家,加上换办公区,Emacs的学习计划就耽搁了. 可能是因为年纪大了,记性大不如以前,新学的很多Emacs快捷键/命令都记不住.所以要整理一个常用命令清单(与当初学习Vim一样),并且打印出来贴 ...

  9. Linux学习笔记之Linux常用命令

    从事IT行业的很多人都会使用Linux的常用命令,但是知道这些常用命令全称的人并不多,让我们来看看这些常用命令对应的全称吧! Linux命令大全(手册) https://www.linuxcool.c ...

最新文章

  1. 迁移学习(Transfer learning)、重用预训练图层、预训练模型库
  2. 贵港职称计算机,2015广西职称计算机考试报名:贵港职称计算机报名入口
  3. module 'itertools' has no attribute 'izip'
  4. OpenCV启动Viz
  5. [Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能
  6. OpenSSL再曝CCS注入漏洞-心伤未愈又成筛子
  7. python实现背景抠除_利用Python代码实现一键抠背景功能
  8. CVPR2021 最具创造力的那些工作成果!
  9. 判断一个文件是否可以使用
  10. OpenWRT in VirtualBox
  11. 简单调用exe的方法
  12. 网页自动填表html,韶关网页自动填表基础教程从简单开始 - MutouSoft - 时间财富网...
  13. 希尔伯特变换(1)-基础理论
  14. OpenGL着色器语言
  15. Re10:读论文 Are we really making much progress? Revisiting, benchmarking, and refining heterogeneous gr
  16. LWN: 利用 DAMON 进行内存主动回收!
  17. Java工程师职业怎么规划?
  18. uniapp中根据URL链接生成二维码(适用所有Javascript运行环境的前端应用),保存二维码到本地相册。
  19. 什么事MVC?什么是MVC!
  20. 田忌赛马java lms_【044】:田忌赛马

热门文章

  1. huffman java_详解Huffman编码算法之Java实现
  2. Android 3.0 r1 API中文文档(107) —— AsyncPlayer
  3. python-切片实例
  4. IntelliJ IDEA 2016.3.1 学习git 码云插件 学习笔记
  5. 用微信点单 订餐系统打造属于个人的O2O外卖订餐行业商业平台
  6. 高级特性(4)- 数据库编程
  7. delphi处理消息的几种方式
  8. Linux网络管理之四:创建一个简单的vsftpd服务器
  9. Document 对象的常用方法
  10. Android 源码编译相关