U-boot中常用参数设定及常用宏的解释和说明
来源:互联网 发布:景云网络防病毒 编辑:程序博客网 时间:2024/06/05 02:11
uboot功能很强,支持各种各样的启动方式,如:U盘启动,NFS启动,NAND Flash启动,NOR Flash启动……
1、环境变量的存储设置
如u-boot中的savenv命令,它用来保存系统的环境变量到Flash中,当我们在开发板的配置文件中,使用的宏定义为:
#defineCONFIG_ENV_IS_IN_FLASH1#define CONFIG_ENV_SIZE0x20000/* Total Size of Environment Sector */
执行savenv命令后环境变量会被保存到NOR Flash中去,而当我们使用的宏定义为:
#define CONFIG_ENV_SIZE0x20000/* Total Size of Environment Sector */#defineCONFIG_ENV_IS_IN_NAND1#define CONFIG_ENV_OFFSET 0x80000
这是,执行savenv后,环境变量会被存储到NAND Flash中去。
2、USB的支持
当你想利用uboot的USB进行U盘启动或者是USB传输时,需要添加宏:
#define CONFIG_CMD_USB /*add by yanghao see USB define*/#define CONFIG_CMD_FAT /*add by yanghao see VFAT define*//*USB support*/#define CONFIG_USB_OHCI#define CONFIG_USB_STORAGE#define CONFIG_USB_KEYBOARD#define CONFIG_DOS_PARTITION#define CFG_DEVICE_DEREGISTER#define CONFIG_SUPPORT_VFAT#define LITTLEEDIAN/*USB support*/
3、内核启动相关宏
需要修改:
#define CONFIG_SYS_LOAD_ADDR 0x30008000 /* 默认加载地址*/
还有比较常用的命令有:
#define CONFIG_CMDLINE_EDITING 1#define CONFIG_AUTO_COMPLETE 1 /*自动补全命令等*/#define CONFIG_SETUP_MEMORY_TAGS 1 /* 向内核传递内存分布信息 */#define CONFIG_CMDLINE_TAG 1 /* 向内核传递命令行参数 */#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的内核在主机,我们想要把内核传输到开发板上启动时可以使用:
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中
set bootcmd nand read 0x30008000 0x600000 0x210000; bootm 0x30008000
u-boot先从NAND Flash中读取内核到内存,然后去执行内核
下面我具几个具体的例子来说明bootargs的使用方法:
(1)当系统的文件系统在主机端时,可以使用nfs文件系统,这种方式很常用,便于文件系统的修改:
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文件系统则可以使用
set bootargs noinitrd console=ttySAC0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 init=/linuxrc
内核会根据定义的分区表信息去读取yaffs文件系统在/dev/mtdblock2中
- U-boot中常用参数设定及常用宏的解释和说明
- U-boot中常用参数设定及常用宏的解释和说明
- U-boot中常用参数设定及常用宏的解释和说明
- U-boot中常用参数设定及常用宏的解释和说明
- U-Boot中设定的bootdelay参数不起作用
- U-Boot环境变量的解释说明
- [zz]U-Boot常用命令和常用环境变量
- U-Boot常用命令和常用环境变量
- U-Boot常用命令和常用环境变量
- 常用U-Boot命令
- 常用的U-boot命令详解
- 常用的U-boot命令详解
- U-boot中mkimage的说明
- U-Boot中初始化序列的说明
- Oracle8 的OCI常用函数及一部分参数说明
- mysql中cmake常用参数说明 和 编译安装mysql
- mysql中cmake常用参数说明 和 编译安装mysql
- U-boot中TFTP解释及nfs命令的小bug
- 大端、小端模式,网络字节序,多字节字符、Unicorn字符存储
- 面经6.30
- 第一份工作应该做什么?
- superAdmin: Quickly change the status of EmailReport && Property
- Codeforces 189A About Bacteria
- U-boot中常用参数设定及常用宏的解释和说明
- tftp-server配置
- 基类指针和子类指针相互赋值
- 生日问题
- java 获取当前路径:
- Socket通讯
- 如何在Apache环境下配置Rewrite规则
- LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 问题的解决
- openwrt编译基本教程