U-boot中常用参数设定及常用宏的解释和说明

uboot功能很强,支持各种各样的启动方式,如:U盘启动,NFS启动,NAND Flash启动,NOR Flash启动……

1、环境变量的存储设置 
如u-boot中的savenv命令,它用来保存系统的环境变量到Flash中,当我们在开发板的配置文件中,使用的宏定义为:

[cpp] view
plain
copy

  1. #define CONFIG_ENV_IS_IN_FLASH  1  
  2. #define CONFIG_ENV_SIZE     0x20000 /* Total Size of Environment Sector */  

执行savenv命令后环境变量会被保存到NOR Flash中去,而当我们使用的宏定义为:

[cpp] view
plain
copy

  1. #define CONFIG_ENV_SIZE     0x20000 /* Total Size of Environment Sector */  
  2. #define CONFIG_ENV_IS_IN_NAND   1  
  3. #define CONFIG_ENV_OFFSET   0x80000  

这是,执行savenv后,环境变量会被存储到NAND Flash中去。
2、USB的支持
当你想利用uboot的USB进行U盘启动或者是USB传输时,需要添加宏:

[cpp] view
plain
copy

  1. #define CONFIG_CMD_USB    /*add by yanghao see USB define*/  
  2. #define CONFIG_CMD_FAT    /*add by yanghao see VFAT define*/  
  3.   
  4.   
  5. /*USB support*/  
  6. #define CONFIG_USB_OHCI  
  7. #define CONFIG_USB_STORAGE  
  8. #define CONFIG_USB_KEYBOARD  
  9. #define CONFIG_DOS_PARTITION  
  10. #define CFG_DEVICE_DEREGISTER  
  11. #define CONFIG_SUPPORT_VFAT  
  12. #define LITTLEEDIAN  
  13. /*USB support*/  

3、内核启动相关宏
需要修改:

[cpp] view
plain
copy

  1. #define CONFIG_SYS_LOAD_ADDR  0x30008000 /* 默认加载地址*/  

还有比较常用的命令有:

[cpp] view
plain
copy

  1. #define CONFIG_CMDLINE_EDITING   1  
  2. #define CONFIG_AUTO_COMPLETE     1 /*自动补全命令等*/  
  3.   
  4. #define CONFIG_SETUP_MEMORY_TAGS    1      /* 向内核传递内存分布信息 */  
  5. #define CONFIG_CMDLINE_TAG          1      /* 向内核传递命令行参数 */  
  6.   
  7. #define CONFIG_BOOTDELAY 5     /*在uboot启动后会倒计时CONFIG_BOOTDELAY,如果没有收到用户的输入则自动去执行宏CONFIG_BOOTCOMMAND中设置的命令*/  

两个比较重要的宏定义有CONFIG_BOOTARGS和CONFIG_BOOTCOMMAND,CONFIG_BOOTARGS是u-boot向Linux内核传递的参数实际上这个宏值就是环境变量中的bootargs的值,CONFIG_BOOTCOMMAND是系统在上电自动执行时所执行的命令对应环境变量中bootcmd的值。
CONFIG_BOOTARGS和CONFIG_BOOTCOMMAND定义的是这两个环境变量的初始值,以后我们在u-boot烧写到Flash中后,再需要修改这两个变量,需要利用命令:
setenv bootargs 值……和 setenv bootcmd 值……来改变,如果想要断电后更新过的环境变量还能使用,需要执行savenv保存到flash中去,setenv只是修改环境变量在内存中的值。

下面我具几个具体的例子来说明bootcmd的使用方法: 

(1)利用NFS传输内核并完成启动,当Linux的内核在主机,我们想要把内核传输到开发板上启动时可以使用:

[cpp] view
plain
copy

  1. bootcmd=nfs 0x30008000 192.168.1.2:/home/yanghao/nfs/zImage; bootm 0x30008000  

这样系统在启动会就会执行这个命令去将主机IP为"192.168.1.2"的目录"/home/yanghao/nfs/"下的内核复制到内存0x30008000,然后再跳转到该地址去执行。

(2)如果内核在NAND Flash中

[cpp] view
plain
copy

  1. set bootcmd nand read 0x30008000 0x600000 0x210000; bootm 0x30008000  

u-boot先从NAND Flash中读取内核到内存,然后去执行内核

下面我具几个具体的例子来说明bootargs的使用方法: 

(1)当系统的文件系统在主机端时,可以使用nfs文件系统,这种方式很常用,便于文件系统的修改:

[cpp] view
plain
copy

  1. setenv bootargs console=ttySAC0,115200 noinitrd root=/dev/nfs rw nfsroot=192.168.1.2:/home/yanghao/nfs/rootfs ip=192.168.1.4:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off  

需要设置好主机的IP地址和DNS服务器地址,还有开发板的地址。文件系统在主机IP为"192.168.1.2"的目录"/home/yanghao/nfs/"下
(2)如果是其它的文件系统,如YAFFS文件系统则可以使用

[cpp] view
plain
copy

  1. set bootargs noinitrd console=ttySAC0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc  

内核会根据定义的分区表信息去读取yaffs文件系统在/dev/mtdblock2中

时间: 2024-10-28 01:49:47

U-boot中常用参数设定及常用宏的解释和说明的相关文章

Oracle数据库中的控制文件管理以及常用参数设置_oracle

一.控制文件 作用:         二进制文件         记录了数据库当前实例的结构和行为,数据文件日志文件的信息,维护数据库一致性         参数文件中定义了控制文件的位置和大小         很小的二进制文件,一般不超过100m         mount阶段open以后,一直在用         一套控制文件只能连接一个database         分散放置,至少一份,至多八份 相关视图:         v$controlfile ---- 列出实例的所有控制文件的名

C#中Messagebox.Show()常用参数用法详解

声明:IWin32Window owner   ,  HelpNavigator navigator ,    string keyword 上面的三个参数类型不是很了解.没有做讨论. 等以后了解多了,再做补充...   下面讨论的一些常用参数,在平时使用,已经绰绰有余了... //////////////////////////////////////////////////////////////////////////////////////////////////////////////

jvm常用参数设置 专题

  在jdk8中 -Xms2g不合法,能通过的:-Xms2G #!/bin/bash JAVA_OPTS="-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump-yyy.log -XX:ErrorFile=./jvm-crash.log -Djava.security.egd=file:/dev/./urandom" #!/bin/bash JAVA_OPTS="-Xdebug -Xrunj

比较完整的Nginx配置文件nginx.conf常用参数中文详解_nginx

概述 Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这篇是目前最完整的Nginx配置参数中文说明了.更详细的模块参数请参考:http://wiki.nginx.org/Main 配置总结 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日

MySQL中优化sql语句查询常用的30种方法

本篇文章是对MySQL中优化sql语句查询常用的30种方法进行了详细的分析介绍,需要的朋友参考下   1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以

【mongodb系统学习之五】mongodb启动最常用参数

五.mongodb启动时其他常用参数的使用(都是选用):       1).--logappend,指定日志的写入方式为追加,强烈建议使用:       2).--port,指定mongodb的端口号,当不使用这个参数的时候,默认是27017:       3).--fork,使mongodb以后台进程的方式运行,当使用这个参数启动以后,可以在同一个终端中进行其他操作,比如ps.mongo,而不需要重新打开中端:       4).-replSet,使用副本集时的参数:       5).其他参

DB2创建数据库常用参数详解(原创)

本文只介绍DB2 create database语法中的常用参数 http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp  CREATE DATABASE语法树Read syntax diagramSkip visual syntax diagram>>-CREATE--+-DATABASE-+----------------------------------------->            '-DB-------

MySQL主从复制结构中常用参数

MySQL主从复制结构中常用参数 这篇文章主要简单说一下MySQL主从复制结构中常用到的一些参数.参数是一个程序的翅膀,正是因为有了很多不同的配置参数,程序才会这么强大.一般来说,参数越多越复杂的程序,功能也越强大,因为要处理的组合关系越多,同时掌握起来也越难.即使是一个你天天用的程序,比如 ls 你也很难掌握他的全部参数,所以没事的时候多翻翻man page,你会发现,我靠!这个命令居然还有这个参数,真是NB大了.好了,进入正题: server-id ID值唯一的标识了复制群集中的主从服务器,

javascript中对Date类型的常用操作小结_基础知识

javascript中对Date类型的常用操作小结 /** 3. * 日期时间脚本库方法列表: 4. * (1)Date.isValiDate:日期合法性验证 5. * (2)Date.isValiTime:时间合法性验证 6. * (3)Date.isValiDateTime:日期和时间合法性验证 7. * (4)Date.prototype.isLeapYear:判断是否闰年 8. * (5)Date.prototype.format:日期格式化 9. * (6)Date.stringToD