文章摘要: 本文是uboot使用笔记,主要描述了命令说明,参数说明,以及配置说明.


加载内核

通过tftp加载内核:

tftpboot 30008000 192.168.9.126:/zImage.img

通过nfs加载内核:

nfs 30008000 192.168.9.126:/home/user/targetfs/zImage.img

通过NandFlash加载内核:

nand read 30008000 1f0000 200000

bootcmd命令
自动启动时(或boot命令)执行的命令.

从NandFlash启动时:

setenv bootcmd 'nand read 30008000 100000 200000;bootm 30008000'

1.从NandFlash读取数据至RAM中;
2.执行bootm启动操作(指明入口地址)。

从NFS启动时:

setenv bootcmd 'nfs 30008000 192.168.9.126:/home/user/targetfs/zImage.img;bootm 30008000'


bootm命令说明

命令格式: bootm [addr [arg ...]]

假设uImage的加载地址是0x20008000,ramdisk的加载地址是0x21000000,fdt的加载地址是0x22000000

只加载kernel的情况下

bootm 0x20008000

加载kernel和ramdisk

bootm 0x20008000 0x21000000

加载kernel和ramdisk并指明ramdisk大小

bootm 0x20008000 0x21000000:0x10000

加载kernel和fdt

bootm 0x20008000 - 0x22000000

用-替代中间省略的参数

加载kernel、ramdisk、fdt

bootm 0x20008000 0x21000000 0x22000000

bootargs
执行bootm命令时,传递给内核的参数.

NFS文件系统

console=ttyO0,115200n8 noinitrd board=0 root=/dev/nfs nfsroot=192.168.0.8:/opt/rootfs, nolock rw ip=192.168.0.251:192.168.0.8:192.168.0.1:255.255.255.0:X:eth0:off eth=00:01:02:03:04:05 

UBI文件系统

setenv bootargs 'console=ttySAC0,115200n8 noinitrd mem=512M rootwait=1 rw ubi.mtd=3,2048 rootfstype=ubifs root=ubi0:rootfs'

或者:

setenv bootargs noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 

稍后加入其他的.

注意事项:

console:指定终端串口名称及数据格式,ttySx,ttySACx(三星),ttyOx(TI);

root:指明根文件系统;
/dev/nfs, 如果是nfs文件系统,需指明路径 nfsroot= (挂载参数及本机IP)
/dev/ram

rootfstype - 指明文件系统类型

mem:指定内存大小,需要与实际相符;

init: 指明系统入口,对应的是noinitrd

board - 指明开发板

ip - 本机IP:宿主机IP:网关:子网掩码:主机名称:网卡:off 网卡MAC地址


run命令

#将程序加载至内存后,从指定位置运行    
run 30008000

#也可以将命令写成一个参数,当做脚本用run命令执行
setenv loaduimage 'load mmc ${mmcdev}:1 ${loadaddr} ${bootfile}'
run loaduimage

setenv bootnfs 'run loaduimage;run loadfdt;bootm ${loadaddr} - ${fdtldaddr};'
run bootnfs

制作内核映像:
Linux命令,mkimage命令位于内核树tools目录下.

 $mkimage -n 'dsc2410' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage zImage.img

-n 是指定启动时显示的Image Name.


常用宏定义(源码)

添加PING命令:

#define CONFIG_CMD_PING

添加NandFlash操作命令:

#define CONFIG_CMD_NAND

添加命令修改及历史命令支持:

#define CONFIG_CMDLINE_EDITING

命令补齐:

#define CONFIG_AUTO_COMPLETE

两个重要的宏定义:

// 如果不定义的话,无法从Bootloader传参数至内核
#define CONFIG_CMDLINE_TAG
#define CONFIG_SETUP_MEMORY_TAGS