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

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

[cpp] view plaincopy
  1. #define CONFIG_ENV_IS_IN_FLASH  1
  2. #define CONFIG_ENV_SIZE     0x20000 /* Total Size of Environment Sector */

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

[cpp] view plaincopy
  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 plaincopy
  1. #define CONFIG_CMD_USB    /*add by yanghao see USB define*/
  2. #define CONFIG_CMD_FAT    /*add by yanghao see VFAT define*/
  3. /*USB support*/
  4. #define CONFIG_USB_OHCI
  5. #define CONFIG_USB_STORAGE
  6. #define CONFIG_USB_KEYBOARD
  7. #define CONFIG_DOS_PARTITION
  8. #define CFG_DEVICE_DEREGISTER
  9. #define CONFIG_SUPPORT_VFAT
  10. #define LITTLEEDIAN
  11. /*USB support*/

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

[cpp] view plaincopy
  1. #define CONFIG_SYS_LOAD_ADDR  0x30008000 /* 默认加载地址*/

还有比较常用的命令有:

[cpp] view plaincopy
  1. #define CONFIG_CMDLINE_EDITING   1
  2. #define CONFIG_AUTO_COMPLETE     1 /*自动补全命令等*/
  3. #define CONFIG_SETUP_MEMORY_TAGS    1      /* 向内核传递内存分布信息 */
  4. #define CONFIG_CMDLINE_TAG          1      /* 向内核传递命令行参数 */
  5. #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 plaincopy
  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 plaincopy
  1. set bootcmd nand read 0x30008000 0x600000 0x210000; bootm 0x30008000

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

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

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

[cpp] view plaincopy
  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 plaincopy
  1. set bootargs noinitrd console=ttySAC0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc

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

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

  1. 面试官 | 如何在 Spring Boot 中进行参数校验?

    作者 | 狂乱的贵公子 来源 | cnblogs.com/cjsblog/p/8946768.html 开发过程中,后台的参数校验是必不可少的,所以经常会看到类似下面这样的代码 这样写并没有什么错,还 ...

  2. C语言中实际参数太多,c – 宏的实际参数太多了?

    码: #include using namespace std; #define ADD(x,y) ((x)+(y)) int main( int argc, char** argv ) { cout ...

  3. 三菱M80操作介绍_FANUC/三菱 常用参数对照表

    [精选文章] 三菱M80/M70高精度调整介绍 三菱数控系统#6451参数引起的通信故障案例 三菱M70如何屏蔽伺服轴及主轴? 三菱M70操作履历文件的导出和查看 三菱E60/M64系统简明调试手册. ...

  4. SQLAlchemy之Column常用参数

    SQLAlchemy之Column常用参数 一.常用参数 primary_key:True 设置某个字段为主键. autoincrement:True 设置这个字段为自增长. default: 设置字 ...

  5. c语言messagebox显示变量,Messagebox.Show()常用参数设置

    private void button1_Click(object sender, EventArgs e) { MessageBox.Show(" 1 个参数 " ); } pr ...

  6. 网页中Flash播放器常用参数设置(转)

    网页中Flash播放器常用参数设置 2006-11-26 23:24 我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少 ...

  7. 变频器调试过程中的常用参数设置详解

    变频器调试过程中的常用参数设置详解 变频器的设定参数较多,每个参数均有一定的选择范围,使用中常常遇到因个别参数设置不当,导致变频器不能正常工作的现象.因此,变频器调试是从正确设置变频器参数开始的.以下 ...

  8. Spring Boot中的一些常用配置介绍!

    这篇教程将为你介绍Spring Boot 中的一些常用配置,比如:自定义 Banner.配置日志.关闭特定的自动配置等. 自定义Banner 在 Spring Boot 启动的时候会有一个默认的启动图 ...

  9. linux中vim内容定位,Linux运维行走江湖必备之:vim命令常用参数

    原标题:Linux运维行走江湖必备之:vim命令常用参数 vim是Linux运维日常工作中最常用的命令之一,vim命令的参数有很多,我们选用一些常用的命令参数,足以对付日常的文本编辑工作,如果日后有需 ...

最新文章

  1. 计算比尔盖茨財富的方法
  2. 怎么设计一个合适的延时队列?
  3. r语言上机文本分析与词云绘制_倚天屠龙记的文本分析
  4. 推荐10个CI/CD工具,用于云平台集成交付
  5. win10弹不出密码输入框_电脑互访提示输入网络密码,怎么办?
  6. 使用WEB应用时后台发生的事
  7. 日常小问题汇总(1)
  8. 【报告分享】2020年数字政府新基建发展白皮书.pdf(附下载链接)
  9. scrapy 爬虫-爬美食节
  10. JavaScript数据结构与算法基础学习笔记03----链表与双向链表
  11. 5G NR PUSCH non-codebook SRS/DMRS
  12. 自动布局神器 -- ZXPAutoLayout框架的使用
  13. lenovo服务器换系统重装系统_电脑怎么重装系统lenovo
  14. CSS实现旋转木马效果
  15. python Beautiful Soup解析html页面table标签
  16. 摇滚bono_摇滚,Paper弹枪对尼古拉斯·弗朗西斯的采访
  17. 【Python】8.有益的探索
  18. Cosmos 白皮书
  19. 20 个关于程序员的笑话,看懂了,你就不会笑了,也不会羡慕他们工资高了!...
  20. Delta tuning(只抓核心)

热门文章

  1. Excel如何快速将科学计数法数字变成正常形式
  2. 修改Hadoop的日志级别
  3. JQuery 选择器。
  4. English trip -- Review Unit1 Personal Information 个人信息
  5. c# 调用 WINDOW API DLL
  6. (转)数据挖掘——我们能从股市数据得出什么,以及一些算法
  7. ionic 项目中添加modal的步骤流程
  8. CSU1632Repeated Substrings(后缀数组/最长公共前缀)
  9. ArcGIS 9.3 安装之 Server的安装
  10. .Net WEB打印需要设置的内容和方法