`
vvznj72m
  • 浏览: 12399 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 
阅读更多

向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
分享到:
评论

相关推荐

    uboott移植实验手册及技术文档

    在文件的最后加入Nand Flash的初始化函数,该函数在后面Nand Flash的操作都要用到。 u-boot运行到第2阶段会进入start_armboot()函数。其中nand_init()函数是对nand flash的最 初初始化函数。nand_init()函数在两个...

    Zynq7045 linux系统挂载EMMC及使用.pdf

    关于xilinx的XC7Z045芯片(简称Zynq7045)在linux环境下挂载emmc,以及进行EMMC分区,格式化和文件使用测试。在zynq045的板卡上测试使用过的。

    LINUX系统移植及UBOOT代码分析.zip

    2.1.2 Linux 操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境.................................................

    总结分析:ARM的启动,系统升级,烧写过程和文件系统

    本文所述的ARM的指的是CortexA系列以及ARM9,ARM11,跑Linux操作系统。对于CortexM系列并不一定完全适用;   谈到ARM以及启动和烧写等方面,首先我们要明确一下几个关键词:Uboot,Cmdline,启动方式选择,...

    ARM 嵌入式LINUX 系统构建与驱动开发

    在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。 所以,不要讨论这个,好好玩转自己的板子才是关键...

    史上最强的嵌入式底层驱动开发课程 Linux系统开发+Linux高级程序+主板开发+ARM等

    ├<1 Linux操作系统基础> │ ├01 - 说在前面的话1.mp4 │ ├02 - 说在前面的话2.mp4 │ ├03 - 说在前面的话3.mp4 │ ├04 - 说在前面的话4.mp4 │ ├05 - 计算机组成原理概述1 .mp4 │ ├06 - 计算机组成原理概述2...

    嵌入式Linux系统移植步步通

    2.1.2 Linux操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境....................................................

    正点原子MFG_TOOL出厂固件烧录工具mini板

    任何一个linux开发板都需要将uboot、linux kernel、.dtb(设备树)和 rootfs 这四个文件烧写到板子上的 EMMC、NAND 或 QSPI Flash 等其他存储设备上。也就是系统烧写之后才能进行后学的编程操作。

    ARM-Linux系统移植

    2.1.2 Linux操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境..................................................

    Hi3518_SDK中文资料

    # 以下操作假设您的单板上已经有u-boot,使用网口烧写uboot、kernel及rootfs到Flash中。 # Demo单板默认为从SPI Flahs启动。 1、配置tftp服务器 # 可以使用任意的tftp服务器; # 如果使用hi3518a,将package/...

    ELDK使用与开发手册

    文档中描述了如何在嵌入式PowerPC, ARM和MIPS系统上配置、编译、使用Das U-Boot(常常缩写为“U-Boot”)和Linux操作系统。文档中涵盖了所有你可能需要的用于配置、编译、运行U-Boot和Linux的工具。 2. 绪论 首先,...

Global site tag (gtag.js) - Google Analytics