博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(三)ubuntu学习前传—uboot常见环境变量
阅读量:5240 次
发布时间:2019-06-14

本文共 1844 字,大约阅读时间需要 6 分钟。

1、环境变量如何参与程序运行

(1)环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Flash中环境变量。下次开机时又会从Flash中再读一次。
(2)环境变量在uboot中是用字符串表示的,也就是说uboot是按照字符匹配的方式来区分各个环境变量的。因此用的时候一定要注意不要打错字了。

(3)如果环境变量写写错了,例如打算写:set bootdelay 10而写成了set botdelay 10然后save后重启后,发现bootdelay并没有改变。这是因为我们环境变量写错了,此时我们重新输入set bootdelay便可删除已建好的botdelay环境变量。

2、自动运行倒数时间:bootdelay

3、网络设置:ipaddr serverip

(1)ipaddr是开发板的本地IP地址
(2)serverip是开发板通过tftp指令去tftp服务器下载东西时,tftp服务器的IP地址。
(3)gatewayip是开发板的本地网关地址
(4)netmask是子网掩码
(5)ethaddr是开发板的本地网卡的MAC地址。

 4、自动运行命令设置:bootcmd

(1)uboot启动后会开机自动倒数bootdelay秒,如果没有人按下回车打断启动,则uboot会自动执行启动命令来启动内核。

(2)uboot开机自动启动时实际就是在内部执行了bootcmd这个环境变量的值所对应的命令集。

(3)bootcmd=movi read kernel 30008000; bootm 30008000 意思是:将iNand的kernel分区读取到DDR内存的0x30008000地址处,然后使用bootm启动命令从内存0x30008000处去启动内核。
(4)set bootcmd printenv,然后saveenv;然后重启则会看到启动倒数后自动执行printenv命令打印出环境变量。这个小实验说明开机自动执行了bootcmd。

执行了set bootcmd printenv后,然后save。然后重启,uboot bootdelay也会倒数,但是倒数结束后并不执行启动内核。而是只会执行printenv,打印环境变量。   

(5)set bootcmd 'movi read kernel 30008000; bootm 30008000'

 如果写成 set bootcmd 'movi read kernel 30008000; bootm 30008000就会出错,因为中间有分号,不是一体的。因此我们要加单引号,即:set bootcmd 'movi read kernel 30008000; bootm 30008000'便可,加单引号后,uboot便认为单引号内是一体的。

 5、uboot给kernel传参:bootargs

(1)linux内核启动时可以接收uboot给他传递的启动参数,这些启动参数是uboot和内核约定好的形式、内容,linux内核在这些启动参数的指导下完成启动过程。这样的设计是为了灵活,为了内核在不重新编译的情况下可以用不同的方式启动。

(2)我们要做的事情就是:在uboot的环境变量中设置bootargs,然后bootm命令启动内核时会自动将bootargs传给内核。
(3)bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3 意义解释:
console=ttySAC2,115200 控制台使用串口2,波特率115200.
root=/dev/mmcblk0p2 rw 根文件系统在SD卡端口0设备(iNand)第2分区,根文件系统是可读可写的
init=/linuxrc linux的进程1(init进程)的路径
rootfstype=ext3 根文件系统的类型是ext3
(4)内核传参非常重要。在内核移植的时候,新手经常因为忘记给内核传参,或者给内核传递的参数不对,造成内核启动不起来。

 

转载于:https://www.cnblogs.com/zhangshenghui/p/5841874.html

你可能感兴趣的文章
对象的属性绑定一个函数
查看>>
ubuntu14.04无法安装Curl
查看>>
[转帖]Oracle 查询各表空间使用情况--完善篇
查看>>
beego——获取参数
查看>>
[Spark]-Streaming-调优
查看>>
计算机软考笔记之《标准化和知识产权基础知识》
查看>>
Jeecg+fixflow,工作流框架分享
查看>>
顺序表应用3:元素位置互换之移位算法
查看>>
HDU 5763 Another Meaning (kmp + dp)
查看>>
常用DOS指令备忘
查看>>
SQL语句使用详解
查看>>
一起来构建前端工具链吧~(开发项目)
查看>>
Redmine2.0.3+Mysql55+RailsInstaller2.1.0+Win7成功安装记录(适用于Redmine2.3.0)
查看>>
Flexible 弹性盒子模型之CSS flex-basis 属性
查看>>
mysql(5.7)在CentOs7下的安装、配置与应用
查看>>
List Comprehension ()(一)
查看>>
Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法
查看>>
下载数据库包
查看>>
AngularJs的UI组件ui-Bootstrap
查看>>
HttpURLConnection、HttpClient和Session
查看>>