一、片内启动
1、用Xmodem协议,发送loader.bin和uboot.bin文件,此时uboot.bin被发送到系统的SDRAM中,发送完后uboot开始运行,如果这时断电或退出,则一切将从头开始,因为SDRAM内存储的数据会在断电或退出后消失。 2、擦除 Flash 在对Flash进行烧写之前,需要将其擦除: Uboot>protect off all 去掉Flash的扇区写保护 Uboot>erase all 擦除Flash的所有扇区 (注: 如果只是要擦除某块区域的Flash,比如0x10000000到0x10060000之间的区域,则可用命令: 1)protect off 10000000 1006ffff 2)erase 10000000 1006ffff 如果是要对某块区域加上写保护,比如0x10000000到0x10060000之间的区域,则可用命令: 1)protect on 10000000 1006ffff 可用flinfo命令来查看那些区域是受保护的,那些区域不是受保护的。 ) 3、烧写boot.bin到Flash 在Uboot提示符下键入命令: Uboot>loadb 21000000 (下完之后会显示boot.bin的大小,然后在后面用命令cp.b烧写时将其后4位变成f,假如文件大小为5e33a,则在烧写时将其变为5ffff) 将文件发送到系统的SDRAM中 然后在超级终端使用Kermit协议,发送文件boot.bin,发送完毕后,键入以下命令: Uboot>cp.b 21000000 10000000 5ffff 将发送到SDRAM中的数据写入Flash Uboot>protect on 10000000 10005ffff 对写入Flash的内容进行写保护 (注: 此处还可以用tftp或bootp协议来完成,不过要先设置网络变量,即设置本机和目标机的IP地址,还有目标机的Mac地址。 网络环境变量: Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目标板 ip 地址] 目标板 ip 地址 Uboot>setenv serverip [主机 ip 地址] 主机 ip 地址 tftp协议: 1)tftp 21000000 lb/boot.bin 2)cp.b 21000000 10000000 5ffff 3)protect on 10000000 10005fff bootp协议: 1)bootp 21000000 lb/boot.bin 2)cp.b 21000000 10000000 5ffff 3)protect on 10000000 10005fff ) 4、烧写 Uboot.gz 到 Flash 在Uboot提示符下键入命令:装入Uboot.gz Uboot>loadb 20000000 将文件发送到系统的SDRAM中 然后在超级终端使用Kermit协议,发送文件Uboot.gz,发送完毕后,键入以下命令: Uboot>cp.b 20000000 10010000 ffff 将发送到SDRAM中的数据写入Flash Uboot>protect on 10000000 1001ffff 对写入Flash的内容进行写保护 (注:此处也可以用tftp或bootp协议) 二、片外启动 一)如何在uboot内运行自己的程序 1、手动运行(只是将程序下载到SDRAM中运行,仅做测试之用,断电或退出后就会消失) 1)loadb 20000000 下载用户程序(*.bin) <注:必须是.bin文件,可用arm-linux-objcopy命令生成> 2)go 20000000 程序就会运行 2、自动运行(将程序写入Flash,uboot启动之后程序自动运行) 1)设置环境变量 Uboot>setenv usr_prg cp.b 10300000 20000000 ffff(程序的大小) Uboot>setenv run_prg go 20000000 Uboot>setenv bootcmd run usr_prg/;run run_prg Uboot>saveenv 2)写入程序,即将其烧入Flash protect off all erase 10300000 103fffff loadb 20000000 下载*.bin cp.b 20000000 10300000 ffff(用户程序的大小) 3)reset之后程序就会自动运行 二、烧写linux 1、下载linux到系统的SDRAM运行(仅做测试之用,断电或退出后就会消失) 1)运行Uboot,设置环境变量 Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目标板 ip 地址] 目标板 ip 地址 Uboot>setenv serverip [主机 ip 地址] 主机 ip 地址 2)下载linux内核,文件系统 打开tftpserver应用程序,设置根目录路径,将内核、文件系统等拷贝到所设置的根目录下。 Uboot>tftp 21100000 ramdisk.gz 下载文件系统 Uboot>tftp 21000000 uImage 下载 linux 内核 Uboot>bootm 21000000 启动 linux 然后linux操作系统就开始运行。 2、烧写 Linux 到系统的 Flash 运行 1)设置运行Linux的环境变量 Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量 Uboot>setenv image cp.b 10020000 21000000 b0000 拷贝内核到sdram Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷贝文件系统到sdram Uboot>setenv boot bootm 设置变量boot Uboot>setenv bootcmd run ramdisk/;run image/;run boot 设置默认变量bootcmd Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr 目标板 ip 地址 目标板 ip 地址,由你自己决定 Uboot>setenv serverip 主机ip地址 主机ip地址,就是你的PC的ip Uboot>saveenv 保存环境变量 2)烧写Linux内核到Flash Uboot>tftp 21100000 ramdisk.gz Uboot>cp.b 21100000 100d0000 226000 Uboot>tftp 21000000 uImage Uboot>cp.b 21000000 10020000 b0000 reset之linux操作系统就开始运行。 |