Linux内核驱动之Uboot环境变量.doc

上传人:自*** 文档编号:126187023 上传时间:2020-03-23 格式:DOC 页数:7 大小:43.95KB
返回 下载 相关 举报
Linux内核驱动之Uboot环境变量.doc_第1页
第1页 / 共7页
Linux内核驱动之Uboot环境变量.doc_第2页
第2页 / 共7页
Linux内核驱动之Uboot环境变量.doc_第3页
第3页 / 共7页
Linux内核驱动之Uboot环境变量.doc_第4页
第4页 / 共7页
Linux内核驱动之Uboot环境变量.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Linux内核驱动之Uboot环境变量.doc》由会员分享,可在线阅读,更多相关《Linux内核驱动之Uboot环境变量.doc(7页珍藏版)》请在金锄头文库上搜索。

1、一 概述Uboot环境变量根据配置文件存在两种定义方式:外部环境变量和内部环境变量外部环境变量指的是将环境变量定义在外部介质上面比如nand flash,nor flash,mmc等等,具体定义在什么外部介质需要根据配置文件的宏CONFIG_ENV_IS_IN_XX来定义比如:#define CONFIG_ENV_IS_IN_MMC 1 :环境变量在MMC卡上面 #define CONFIG_ENV_IS_IN_NAND 1 :环境变量在nandflash上面#define CONFIG_ENV_IS_IN_FLASH 1:环境变量在nor flash上面#undef CONFIG_ENV_I

2、S_NO_WHERE :废除内部环境变量的定义内部环境变量指的是定义在uboot镜像里边的环境变量,由于不使用外部环境变量必须在配置文件中间定义宏#define CONFIG_ENV_IS_NO_WHERE二 环境变量的类型和用途 Uboot环境变量大概包括四种类型的变量 (1) 网络方面的环境变量 比如 serverip ipaddr netmask gatewayip (2) bootcmd (3) bootargs (4) 杂项类型的 比如bootdelay ,baudrate,stdin,stdout1 网络类型的环境变量此方面的环境变量具体包括如下几种serverip 服务器端的ip

3、地址ipaddr 板卡自己的ip地址netmask 网络掩码gatewayip 网关ethaddr 以太网的mac地址网络类型的环境变量主要是为tftp下载文件,挂载nfs根文件系统等网络行为做准备的下面的指令将网络参数都设置好setenv gatewayip 192.168.0.1;setenv netmask 255.255.255.0;setenv ipaddr 192.168.2.2;setenv serverip 192.168.1.1;saveenv2 bootcmdbootcmd是uboot启动完之后自动执行的命令(延时3秒后执行),bootcmd最重要的任务是加载内核到DDR上

4、去,当然内核可能来自不同的介质包括nand ,mmc,网络等等,所以也存在不同类型的bootcmd命令下面介绍几种常用的.nand 中加载内核setenv bootcmd nboot 0x81000000 nand0 0x580000;bootm 0x81000000;saveenv;mmc卡加载内核setenv bootcmd mmc rescan 0;fatload mmc 0 0x81000000 uImage;bootm 0x81000000;saveenv;tftp网络加载内核setenv bootcmd tftpboot 0x81000000 192.168.1.108:uImag

5、e;bootm0x81000000;saveenv;上面的都是较为简单的bootcmd命令都是从相应的的介质中间读取内核到DDR上,然后bootm(bootm就是cpu跳转到这个地址执行代码),对于上述bootcmd命令必须有bootargs环境变量的配合,这样内核起来之后能够正确挂载文件系统同时获得来自uboot传给内核的参数较为复杂的如下setenv bootcmd mmc rescan 0;fatload mmc 0 0x80900000 boot.scr;source 0x80900000;saveenv或者是如下setenv bootcmd tftpboot 0x80900000 1

6、92.168.4.51:boot.scr;source 0x80900000;saveenv上述bootcmd命令使用的是脚本方式,也就是说从外部介质中间读入boot.scr的uboot脚本,然后uboot解析该脚本.由于是执行的脚本,其中可以嵌入较多的命令,可以进行较多的操作包括加载内核,设置bootargs环境变量对于使用脚本的bootcmd,我们去设置bootargs可能会不起作用,因为uboot脚本中可能也存在设置bootargs的命令,这样就会替换我们自己设置的bootargs假如不想要使用boot.scr也可以使用上面的bootcmd来代替。总的来说bootcmd是告诉uboot该

7、从哪里加载内核并从哪里启动,每一个bootcmd都是一个可以执行的命令比如mmc rescan 0;fatload mmc 0 0x81000000 uImage;bootm 0x81000000可以使用上述方法直接启动内核再比如mmc rescan 0;fatload mmc 0 0x80900000 boot.scr;source 0x80900000可以使用上述方法做系统还原,只要在boot.scr中间放一些烧写内核,uboot的命令即可3 bootargs bootargs环境变量实质是uboot传给内核的参数,包括调试终端,内存信息,内核起来之后的ip地址,其中最重要的应该是内核将要

8、挂载的根文件系统信息bootargs包括如下参数mem : Linux内核管理的内存大小console : 调试终端115200n8 : 上述调试终端的波特率,8bit数据init : 系统起来之后运行的第一个脚本比如init=/sbin/initinitrd/noinitrd : 是否使用了ramdisk启动系统,没有的话是noinitrdroot : 根文件系统的设备文件比如root=/dev/mtdblock0rw/ro : 配合root使用的-根文件系统读写属性rootfstype : 配和root使用的-根文件系统的类型比如yaffs2,ubifs等等ip : linux内核起来之后

9、的网络参数设置可以设置成ip=dhcp自动获取也可以设成是固定ip比如ip=$ipaddr:$serverip:$gatewayip:$netmask:eth0:off 使用固定ip上面的顺序必须对,不然内核起不来pcie_mem : 在系统引导的时候获得专用缓冲区,这是获得大量连续内存页面的唯一方法,比如这样使用pcie_mem=8M表示linux系统为pcie预留8M内存空间,此部分空间不属于linux内核的管理范围看下面的bootargssetenv bootargs mem=256M console=ttyO0,115200n8 root=/dev/nfs rw nfsroot=192

10、.168.4.51:/export/rootfs_rfs,nolock ip=dhcp pcie_mem=20M ;saveenv该bootargs表示Linux内核管理的内存是256MB,调试终端是串口0,根文件系统是nfs,挂载的服务器ip地址是192.168.4.51,该文件系统可读写内核起来之后ip地址是自动获取,内核预留20M给pcie再看看下面几条bootargssetenv bootargs mem=256M console=ttyO0,115200n8 ubi.mtd=4,2048 root=ubi0:rootfs rootwait rootfstype=ubifs rw ip=dhcp pcie_mem=20M;saveenv与上面不同的是内核起来后加载的根文件系统是ubifs在比如setenv bootargs mem=256M console=ttyO0,115200n8 root=/dev/mtdblock4 rootfstype=jffs2 rw ip=dhcp pcie_mem=20M;saveenv内核起来后加载的根文件系统是jffs2总的来说bootargs是uboot传递给linux内核的参数4 杂项 Uboot还有一些其他环境变量比如 setenv bootdelay 3 设置uboot自动等待时间为3秒

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号