uboot使用笔记
文章摘要: 本文是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