(1)Uboot常用命令

使用Uboot下载Kernel和烧写Kernel

最近决定把自己的OK210板子玩起来,会写一些笔记把我自己的移植过程和学习过程记录下来,其中的资料参考了一些网上的学习笔记和Forlinx的源码。

1.首先准备资料
按照光盘里面的软件使用教程上的方法,将SD卡分区。其中mmc-210.bin是烧录到SD卡上的引导文件(说白了就是Uboot烧录在SD卡上,从SD卡启动),用SD_writer.exe程序把mmc-210.bin烧录到SD卡上,在SD卡文件夹下新建sdfuse文件夹,把光盘里面的zImage-210(Kernel文件),u-boot-210.bin(烧写到nand Flash的Uboot文件),rootfs-210.yaffs2(烧写到Nand flash上的文件系统),全部复制到sdfuse文件夹。

2.OK210开机
将开发板设置成SD卡启动,开机后观察一下串口的输出消息:
OK210 nand分区信息就出现了:

Partition table on NAND
ptn 0 name='bootloader' start=0x0 len=0x100000(~1024KB) (Uboot)
ptn 1 name='kernel' start=0x100000 len=0x500000(~5120KB)
ptn 2 name='system' start=0x600000 len=N/A (Yaffs)

所以我们要做的就是把自己编译的Kernel烧录到nand Flash的0x100000 处,长度为5120KB
如何烧录呢?
这里就要讲解几条命令:

tftp  
将file_name的文件通过TFTP下载到内存中的ram_addr处
例子:tftp C0008000 uImage
 
nand erase <起始地址start> <长度len>
擦掉Nand Flash中内容
例子:nand erase 0x100000 0x500000

nand write   
将内存起始地址处,长度为len的数据,写入flash起始地址处
例子:nand write C0008000 100000 500000

nand read    
将flash起始地址处,长度为len的数据,读到内存起始地址处
例子:nand read  C0008000 100000 500000

3.其它设置
我们不知道怎么设置网络,先开机,在倒数的时候迅速按下键盘上的任意字符,进入Uboot:
此时输入print,可以把所有的设置打印出来

bootcmd=nand read C0008000 100000 500000; bootm C0008000
mtdpart=80000 400000 3000000
bootdelay=3
baudrate=115200
ethaddr=00:22:12:34:56:90
ipaddr=192.168.1.20
serverip=192.168.1.129
gatewayip=192.168.1.1
netmask=255.255.255.0
bootargs=console=ttySAC2,115200 root=/dev/mtdblock2 init=/linuxrc lcdsize=70

这里要提到两个重要的命令:bootargs和bootcmd

uboot的启动参数:
bootcmd:加载并且启动内核
               setenv bootcmd tftp C0008000 zImage \; bootm C0008000 
               或者
               setenv bootcmd nand read C0008000 100000 500000\; bootm C0008000 

bootargs:内核就是一个大程序而已,执行最后需要挂接一种根文件系统,将权限交给用户,
          挂接文件系统的类型需要bootargs来指定
                setenv bootargs root=/dev/nfs nfsroot=.....
                或者
                setenv bootargs root=/dev/mtdblock2....
                或者
                setenv bootargs root=/dev/ram ....

所以总结一下:

====================================================================================
1.开发模式命令设置:
====================
1.1 服务器ip地址设置,服务器的ip为ubuntu的ip
set serverip 192.168.1.xx
save

1.2 板子ip地址设置
set ipaddr 192.168.1.yy
save

1.3 网关设置
set gatewayip 192.168.1.1
save

1.4 内核镜像下载命令配置
set bootcmd tftp C0008000 zImage\;bootm C0008000 
save

1.5 内核参数配置
set bootargs root=/dev/nfs nfsroot=192.168.7.xx:/opt/rootfs console=ttySAC2,115200 ip=192.168.1.yy
save

============================
2.产品模式命令设置
============================
2.1 内核镜像下载命令配置
set bootcmd tftp C0008000 zImage \; bootm C0008000
save

2.2 内核参数配置
set bootargs root=/dev/mtdblock3 rootfstype=yaffs2 init=/init console=ttySAC2,115200
save

在这里注意:OK210板子上使用的串口是ttySAC2,不是ttySAC0,如果这里写错了,板子起来的时候没有串口输出。

我们最后可以做个实验来烧写一下uboot(如果不成功就回到SD卡启动,重来一遍)

burn u-boot:
tftp 20008000 u-boot.bin    
nand erase 0x0 0x1000000
nand write 0x20008000 0x0 0x100000

今天就先熟悉到这里,后面等我们编译好Kernel的时候再根据今天学的内容来启动我们自己编译的内核。

你可能感兴趣的:((1)Uboot常用命令)