uboot环境变量
一. uboot运行时环境变量分布
1.1. 环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Flash中环境变量。下次开机时又会从Flash中再读一次。
二. ubooth环境变量分析
x210 # print
baudrate=
ethaddr=::5c::0a:5b
gatewayip=192.168.1.1
ipaddr=192.168.1.20
netmask=255.255.255.0
serverip=192.168.1.141
bootdelay=
bootcmd=movi read kernel ; bootm
bootargs=console=ttySAC2, root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3 Environment size: / bytes
2.1. 常见变量说明
a. bootdelay:启动运行倒数时间
b. baudrate:通讯波特率
c. ipaddr是开发板的本地IP地址
d. serverip是开发板通过tftp指令去tftp服务器下载东西时,tftp服务器的IP地址。
e. gatewayip是开发板的本地网关地址
f. netmask是子网掩码
g. ethaddr是开发板的本地网卡的MAC地址。
2.2. bootcmd变量
a. uboot启动后会开机自动倒数bootdelay秒,如果没有人按下回车打断启动,则uboot会自动执行启动命令来启动内核。
b. uboot开机自动启动时实际就是在内部执行了bootcmd这个环境变量的值所对应的命令集。
c. bootcmd=movi read kernel 30008000; bootm 30008000 意思是:将iNand的kernel分区读取到DDR内存的0x30008000地址处,然后使用bootm启动命令从内存0x30008000处去启动内核。
2.3. bootargs变量
2.3.1. linux内核启动时可以接收uboot给他传递的启动参数,这些启动参数是uboot和内核约定好的形式、内容,linux内核在这些启动参数的指导下完成启动过程。这样的设计是为了灵活,为了内核在不重新编译的情况下可以用不同的方式启动。
2.3.2. 在uboot的环境变量中设置bootargs,然后bootm命令启动内核时会自动将bootargs传给内核。
2.3.3. 示例:bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
a. console=ttySAC2,115200 控制台使用串口2,波特率115200.
b. root=/dev/mmcblk0p2 rw 根文件系统在SD卡端口0设备(iNand)第2分区,根文件系统是可读可写的
c. init=/linuxrc linux的进程1(init进程)的路径
d. rootfstype=ext3 根文件系统的类型是ext3
三. uboot阶段对Flash的分区
3.1. 分区一般规则
a. 各分区彼此相连,前面一个分区的结尾就是后一个分区的开头。
b. 整个flash充分利用,从开头到结尾。
c. uboot必须在Flash开头,其他分区相对位置是可变的。
d. 各分区的大小由系统移植工程师自己来定,一般定为合适大小(不能太小,太小了容易溢出;不能太大,太大了浪费空间)
e. 分区在系统移植前确定好,在uboot中和kernel中使用同一个分区表。将来在系统部署时和系统代码中的分区方法也必须一样。
3.2. 查看uboot分区
x210 # fastboot
[Partition table on MoviNAND]
ptn name='bootloader' start=0x0 len=N/A (use hard-coded info. (cmd: movi))
ptn name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi))
ptn name='ramdisk' start=N/A len=0x300000(~3072KB) (use hard-coded info. (cmd: movi))
ptn name='config' start=0xAECC00 len=0x1028DC00(~264759KB)
ptn name='system' start=0x10D7A800 len=0x1028DC00(~264759KB)
ptn name='cache' start=0x21008400 len=0x65F7000(~104412KB)
ptn name='userdata' start=0x275FF400 len=0xC0C6FC00(~3158463KB)
3.2.1. bootloader:存放uboot一类的启动文件,最终目标是启动操作系统内核。
3.2.2. kernel:存放内核,操作系统的核心。
3.2.3. ramdisk:内存盘,把系统内存划出一部分当作硬盘使用,速度快。
3.2.4. config:存放配置文件。
3.2.5. system:存放系统镜像文件。
3.2.6. cache:存放缓存数据。
3.2.7. userdata:存放用户数据。
PS:刷系统常用bootloader,kernel,system三个分区。
参考《朱老师.1.2ARM裸机课件》
uboot环境变量的更多相关文章
- uboot环境变量实现分析
u-boot的环境变量用来存储一些经常使用的参数变量,uboot希望将环境变量存储在静态存储器中(如nand nor eeprom mmc). 其中有一些也是大家经常使用,有一些是使用人员自己定义的, ...
- 在Linux里读取UBOOT环境变量
转载:http://falloutmx.blog.163.com/blog/static/39236020201211145010154/ 可以通过mtd方式读取,也可以用ioremap方式.不过这些 ...
- u-boot 环境变量参数设置
今天本来是烧写内核,结果一不小心把uboot也整不能用了,无奈之下只好重新烧个uboot,等都弄好以后,发现系统还是启动不了,原来是启动参数设置不对,于是找到了这篇文章,//是我添加的内容. 原文地址 ...
- OK335xS U-boot 环境变量解析
/************************************************************************************************** ...
- MPC8313ERDB在Linux从NAND FLASH读取UBoot环境变量的代码分析
MPC8313ERDB在Linux从NAND FLASH读取UBoot环境变量的代码分析 Yao.GUET@2014-05-19 一.故事起因 由于文件系统的增大,已经大大的超出了8MB的NOR FL ...
- I.MX6 Linux U-boot 环境变量解析
/********************************************************************************** * I.MX6 Linux U- ...
- Linux系统——访问U-BOOT环境变量
Linux系统下访问U-BOOT环境变量 移植过U-BOOT的人,都知道:在U-BOOT中存有ENV.但U-BOOT在引导内核启动之后,U-BOOT的生命周期就结束了.那么启动LINUX内核之后,U- ...
- uboot 环境变量
从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址. 这个地方就涉及到u ...
- uboot环境变量与内核MTD分区关系
uboot 与系统内核中MTD分区的关系: 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 1:在内核MTD中可以定义分区A~B, ...
- uboot环境变量(设置bootargs向linux内核传递正确的参数)
这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误.查看了很多资料后猜想应该是uboot传递 ...
随机推荐
- java.lang.IllegalArgumentException: java.io.IOException: Alias name [tomcat] does not identify a key entry
java.lang.IllegalArgumentException: java.io.IOException: Alias name [tomcat] does not identify a key ...
- 阿里jetcache
- CDOJ 1063 堆排序模板
D - 秋实大哥与妹纸 Time Limit:1000MS Memory Limit:1500KB 64bit IO Format:%lld & %llu Submit Sta ...
- SpringCloud 入门知识篇
SpringCloud 入门 springcloud 学习 7天学会springcloud 教程 https://www.cnblogs.com/skyblog/category/738524.htm ...
- 【转】Django之Model层的F对象,Q对象以及聚合函数
转自:https://blog.csdn.net/wsy_666/article/details/86692050 一.F对象: 作用:用于处理类属性(即model的某个列数据),类属性之间的比较.使 ...
- 大数据笔记(二十三)——Scala语言基础
一.Scala简介:一种多范式的编程语言 (*)面向对象 (*)函数式编程:Scala的最大特点 (*)基于JVM 二.Scala的运行环境 (1)命令行:REPL 进入: scala 退出::qui ...
- [LeetCode]-011-Integer_to_Roman
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- 5 个优秀前端 UI 框架
随着 Web 技术的不断发展,前端开发框架层出不穷,各有千秋,今天小编为大家奉上前端 UI 框架的开源项目,希望大家能够喜欢!如果大家有 UI 框架相关的开源项目,也可以托管到码云上,我们会及时给予推 ...
- 利用IKVM在C#中调Java程序(总结+案例)
IKVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java程序.本文将比较详细的介绍这个工具的原理.使用入门(如何java应用转换为.NET应用.), ...
- PM项目跟进护航文档模板
护航文档 版本需求列表 需求 开发责任人 MMDrawerController.GCDTimer.Speex_armv7s等11个库迁移 熊文杰 相关人员 职称 开发人员 开发 熊文杰 测试 xxx ...