向Flash中烧写uboot和linux操作系统

来源:互联网 发布:线性窥孔优化的特点 编辑:程序博客网 时间:2024/05/21 09:31
向Flash中烧写uboot和linux操作系统
2011年03月28日
  向Flash中烧写uboot和linux操作系统
  ================================================================================
  from:http://www.diybl.com/course/6_system/linux/Linuxjs/20090428/165769.html
  一、片内启动
  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
  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
  bootp协议:
  1)bootp 21000000 lb/boot.bin
  2)cp.b 21000000 10000000 5ffff
  3)protect on 10000000 10005fff
  4、烧写 Uboot.gz 到 Flash
  在Uboot提示符下键入命令:装入Uboot.gz6
  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)
  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之后程序就会自动运行"T1X$m
  二、烧写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 设置变量
  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操作系统就开始运行。
  ================================================================================
  ================================================================================
  from: http://www.91linux.com/html/article/qianrushiyingyong/20081227/15061.html
  u-boot命令介绍及烧写程序实例
  bootdelay
  定义执行自动启动的等候秒数
  baudrate
  定义串口控制台的波特率
  netmask
  定义以太网接口的掩码
  ethaddr
  定义以太网接口的MAC地址
  bootfile
  定义缺省的下载文件
  bootargs
  定义传递给Linux内核的命令行参数
  bootcmd
  定义自动启动时执行的几条命令
  serverip
  定义tftp服务器端的IP地址
  ipaddr
  定义本地的IP地址
  stdin
  定义标准输入设备,一般是串口
  stdout
  定义标准输出设备,一般是串口
  stderr
  定义标准出错信息输出设备,一般是串口
  u-boot命令介绍及烧写程序实例zz
  Printenv 打印环境变量。
  Uboot> printenv
  baudrate=115200
  ipaddr=192.168.1.1
  ethaddr=12:34:56:78:9A:BC
  serverip=192.168.1.5
  Environment size: 80/8188 bytes
  Setenv 设置新的变量
  Uboot> setenv myboard AT91RM9200DK
  Uboot> printenv
  baudrate=115200
  ipaddr=192.168.1.1
  ethaddr=12:34:56:78:9A:BC
  serverip=192.168.1.5
  myboard=AT91RM9200DK
  Environment size: 102/8188 bytes
  Saveenv 保存变量
  命令将当前定义的所有的变量及其值存入flash中。用来存储变量及其值的空间只有8k字节,应不要超过。
  Loadb 通过串口Kermit协议下载二进制数据。
  Tftp 通过网络下载程序,需要先设置好网络配置
  Uboot> setenv ipaddr 192.168.0.1
  Uboot> setenv serverip 192.168.1.115 (tftp服务器的地址)
  下载bin文件到地址0x20000000处。
  Uboot> tftp 20000000 u-bo.bin (u-boot.bin应位于tftp服务程序的目录)
  Uboot> tftp 32000000 vmlinux
  把server(IP=环境变量中设置的serverip)中/tftpdroot/ 下的vmlinux通过TFTP读入到物理内存32000000处。
  Md 显示内存区的内容。
  Mm 修改内存,地址自动递增。
  Nm 修改内存,地址不自动递增。
  Mw 用模型填充内存
  mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF)
  Cp 拷贝一块内存到另一块
  Cmp 比较两块内存区
  这些内存操作命令后都可加一个后缀表示操作数据的大小,比如cp.b表示按字节拷贝。
  Protect 写保护操作
  protect on 1:0-3(就是对第一块FLASH的0-3扇区进行保护)
  protect off 1:0-3取消写保护
  Erase 擦除扇区。
  erase: 删除FLASH的扇区
  erase 1:0-2(就是对每一块FLASH的0-2扇区进行删除)
  对DataFlash的操作
  U-Boot在引导时如果发现NPCS0和NPCS3上连有DataFlash,就会分配虚拟的地址给它,具体为 :
  0xC0000000---NPCS0
  0xD0000000---NPCS3
  run 执行设置好的脚本
  Uboot> setenv flashit tftp 20000000 mycode.bin\; erase 10020000 1002FFFF\;
  cp.b 20000000 10020000 8000
  Uboot> saveenv
  Uboot> run flashit
  bootcmd 保留的环境变量,也是一种脚本
  如果定义了该变量,在autoboot模式下,将会执行该脚本的内容。
  Go 执行内存中的二进制代码,一个简单的跳转到指定地址
  Bootm 执行内存中的二进制代码
  要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。
  起动UBOOT TOOLS制作的压缩LINUX内核, bootm 3200000
  Bootp 通过网络启动,需要提前设置好硬件地址。
  ? 得到所有命令列表
  help help usb, 列出USB功能的使用说明
  ping 注:只能开发板PING别的机器
  usb
  usb start: 起动usb 功能
  usb info: 列出设备
  usb scan: 扫描usb storage(u 盘)设备
  kgo 起动没有压缩的linux内核
  kgo 32000000
  fatls 列出DOS FAT文件系统
  fatls usb 0列出第一块U盘中的文件
  fatload 读入FAT中的一个文件
  fatload usb 0:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  0 32000000
  
   u-boot.bin 把USB中的u-boot.bin 读到物理内存0x32000000处!
  flinfo 列出flash的信息
  nfs
  nfs 32000000 192.168.0.115:u-boot.bin
  把192.168.0.115(LINUX 的NFS文件系统)中的NFS文件系统中的u-boot.bin读入内存0x32000000处。
  例:通过串口更新u-boot程序
  [
  u-boot@wpf
  ]# loadb
  ## Ready for binary (kermit) download to 0x33000000 at 115200 bps...
  loadb这个指令以kermit协议从串口下载二进制文件到开发板的内存中,默认下载到0x33000000。当然你可以改在别的地址,例如:loadb 30000000
  就是下载到0x30000000。这时候选择超级终端菜单上:传送〉发送文件,文件名选择编译好的U-Boot.bin,协议选择Kermit,点发送。可以看到发
  送进度。
  发送结束出现提示:
  ## Total Size = 0x0001d73c = 120636 Bytes
  ## Start Addr = 0x33000000
  这时可以测试新的修改好不好使:
  [
  u-boot@wpf
  ]# go 33000000
  ## Starting application at 0x33000000 ...
  go指令可以直接执行内存地址上的程序,
  然后烧写在NOR Flash中的U-boot。先看看NOR Flash的情况:
  [
  u-boot@wpf
  ]# flinfo
  Bank # 1: AMD: 1x Amd29LV800BB (8Mbit)
  Size: 1 MB in 19 Sectors
  Sector Start Addresses:
  00000000 (RO) 00004000 (RO) 00006000 (RO) 00008000 (RO) 00010000 (RO)
  00020000 00030000 00040000 00050000 00060000
  00070000 00080000 00090000 000A0000 000B0000
  000C0000 000D0000 000E0000 000F0000 (RO)
  一共有19个sector,其中前5个总计128kb的sector有U-Boot程序。要烧写首先要去掉写保护:
  [
  u-boot@wpf
  ]# protect off 0 1ffff
  [
  u-boot@wpf
  ]# flinfo
  Bank # 1: AMD: 1x Amd29LV800BB (8Mbit)
  Size: 1 MB in 19 Sectors
  Sector Start Addresses:
  00000000 00004000 00006000 00008000 00010000
  00020000 00030000 00040000 00050000 00060000
  00070000 00080000 00090000 000A0000 000B0000
  000C0000 000D0000 000E0000 000F0000 (RO)
  可以看到写保护已经去掉,然后擦除:
  [
  u-boot@wpf
  ]# erase 0 1ffff
  Erasing sector 0 ... ok.
  Erasing sector 1 ... ok.
  Erasing sector 2 ... ok.
  Erasing sector 3 ... ok.
  Erasing sector 4 ... ok.
  Erased 5 sectors
  烧写:(33000000下载地址 0 Nor起始地址 1d73c 文件长度)
  [
  u-boot@wpf
  ]# cp.b 33000000 0 1d73c
  Copy to Flash... done
  重启开发板,U-Boot的烧写就完成了。当然,一个更好的下载方法是利用tftp命令
  http://hi.baidu.com/vcmfc_linux/blog/item/9d07dfef11001c36acafd5d0.html
  ================================================================================
  ================================================================================
  from: http://www.ubuntuchina.com/viewthread.php?tid=3492
  uboot 下载内核和文件系统的步骤http://hi.baidu.com/xuhailong330 ... aa9bdc8d1029ab.html
  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操作系统就开始运行。
  一、片内启动
  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)
  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操作系统就开始运行。
  ================================================================================
  ================================================================================
  from: http://blog.21ic.com/user1/5165/archives/2008/50377.html
  u-boot命令解释
  lanxch 发表于 2008-9-4 13:42:00
  0
  推荐
  U-Boot上电启动后,敲任意键能够退出自动启动状态,进入命令行。
  U-Boot 1.1.2 (Apr 26 2005 - 12:27:13)
  U-Boot code: 11080000 -> 1109614C BSS: -> 1109A91C
  RAM Configuration:
  Bank #0:
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  10000000 32
  
   MB
  Micron StrataFlash MT28F128J3 device initialized
  Flash: 32 MB
  In: serial
  Out: serial
  Err: serial
  Hit any key to stop autoboot: 0
  U-Boot>
  在命令行提示符下,能够输入U-Boot的命令并执行。U-Boot能够支持几十个常用命令,通过这些命令,能够对研发板进行调试,能够引导Linux内核,还能够擦写Flash完成系统部署等功能。掌控这些命令的使用,才能够顺利地进行嵌入式系统的研发。
  输入help命令,能够得到当前U-Boot的任何命令列表。每一条命令后面是简单的命令说明。
  => help
  ? - alias for 'help'
  autoscr - run from memory
  base - print or set address offset
  bdinfo - print Board Info structure
  boot - boot default, i.e., run 'bootcmd'
  bootd - boot default, i.e., run 'bootcmd'
  bootm - boot application image from memory
  bootp - boot image via network using BootP/TFTP protocol
  cmp - memory compare
  coninfo - print console devices and information
  cp - memory copy
  crc32 - checksum calculation
  dhcp - invoke DHCP client to obtain IP/boot params
  echo - echo args to console
  erase - erase FLASH memory
  flinfo - print FLASH memory information
  go - start application at address 'addr'
  help - print online help
  iminfo - print header information for application image
  imls - list all images found in flash
  itest - return true/false on integer compare
  loadb - load binary file over serial line (kermit mode)
  loads - load S-Record file over serial line
  loop - infinite loop on address range
  md - memory display
  mm - memory modify (auto-incrementing)
  mtest - simple RAM test
  mw - memory write (fill)
  nfs - boot image via network using NFS protocol
  nm - memory modify (constant address)
  printenv - print environment variables
  protect - enable or disable FLASH write protection
  rarpboot - boot image via network using RARP/TFTP protocol
  reset - Perform RESET of the CPU
  run - run commands in an environment variable
  saveenv - save environment variables to persistent storage
  setenv - set environment variables
  sleep - delay execution for some time
  tftpboot - boot image via network using TFTP protocol
  version - print monitor version
  =>
  U-Boot还提供了更加周详的命令帮助,通过help命令还能够查看每个命令的参数说明。由于研发过程的需要,有必要先把U-Boot命令的用法弄清楚。接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。
  => help bootm
  bootm [addr [arg ...]]
  - boot application image stored in memory
  passing arguments 'arg ...'; when booting a Linux kernel,
  'arg' can be the address of an initrd image
  bootm命令能够引导启动存储在内存中的程式映像。这些内存包括RAM和能够永久保存的Flash。
  第1个参数addr是程式映像的地址,这个程式映像必须转换成U-Boot的格式。
  第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也能够是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。
  => help bootp
  bootp [loadAddress] [bootfilename]
  bootp命令通过bootp请求,需要DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文档到内存。
  第1个参数是下载文档存放的内存地址。
  第2个参数是要下载的文档名称,这个文档应该在研发主机上准备好。
  => help cmp
  cmp [.b, .w, .l] addr1 addr2 count
  - compare memory
  cmp命令能够比较2块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续敲入命令。
  第1个参数addr1是第一块内存的起始地址。
  第2个参数addr2是第二块内存的起始地址。
  第3个参数count是要比较的数目,单位按照字节、字或长字。
  => help cp
  cp [.b, .w, .l] source target count
  - copy memory
  cp命令能够在内存中复制数据块,包括对Flash的读写操作。
  第1个参数source是要复制的数据块起始地址。
  第2个参数target是数据块要复制到的地址。这个地址假如在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。
  第3个参数count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。
  => help crc32
  crc32 address count [addr]
  - compute CRC32 checksum [save at addr]
  crc32命令能够计算存储数据的校验和。
  第1个参数address是需要校验的数据起始地址。
  第2个参数count是要校验的数据字节数。
  第3个参数addr用来指定保存结果的地址。
  => help echo
  echo [args..]
  - echo args to console; \c suppresses newline
  echo命令回显参数。
  => help erase
  erase start end
  - erase FLASH from addr 'start' to addr 'end'
  erase N:SF[-SL]
  - erase sectors SF-SL in FLASH bank # N
  erase bank N
  - erase FLASH bank # N
  erase all
  - erase all FLASH banks
  erase命令能够擦Flash。
  参数必须指定Flash擦除的范围。
  按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除0x20000
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫预售30天不发货怎么办 天猫搞活动的商品总不发货怎么办 淘宝买的东西物流把货物损坏怎么办 苹果手机5s每部存满怎么办 天猫退货分开发货退的话怎么办 淘宝优惠券电脑端显示不出来怎么办 天猫退货退款寄错了怎么办 天猫已退款货又发过来了怎么办 小米商城预售订单点错退款了怎么办 淘宝发布宝贝类目价格受限制怎么办 2019天猫续签评分不达标怎么办 天猫店铺动态不达标不能续签怎么办 京东自提发现货有问题怎么办 京东试用成功商家不发货怎么办 在淘宝主页搜不到我的店铺名怎么办 淘宝发货单号填到别人那去了怎么办 买家申请淘宝介入后同意退款怎么办 淘宝卖家手机版购买装修模块怎么办 天猫店铺和淘宝店铺想要装修怎么办 支付宝转账银行卡卡号错误怎么办 淘宝图片空间照片全部删除了怎么办 我把淘宝图片空间照片删除了怎么办 淘宝发布宝贝怎么没知道品牌怎么办 淘宝提前确认收货了怎么办已经发货 苹果支付安全提示问题忘记了怎么办 没有在规定日期交首付款怎么办 淘宝申请退款又不想退了怎么办 淘宝申请退款后又不想退了怎么办 申请退款后如果不想退了怎么办 世纪明德申请退款但不想退了怎么办 天猫申请换货商家不换怎么办 乐视手机刷机不想清除数据怎么办 捡的苹果手机刷机了要id怎么办 苹果6plus玩王者荣耀卡怎么办 华为荣耀3c的手机内存不足怎么办 红米4x玩王者荣耀卡怎么办 华为手机荣耀10一直重启怎么办 荣耀9青春版老自动重启怎么办 手机开不开机停在华为界面怎么办 华为荣耀9老是反复的重启怎么办 华为荣耀4x老是反复的重启怎么办