Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1683059
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2010-04-09 23:47:27

u-boot 简单使用手册
 
Andrew Haung 转载请注明作者及联络方式
 
1.u-boot 简介
-----------------------------------------------------------------
1.u-boot
2.它有两种模式
   引导模式(用于引导OS)
   下载模式(用于开发,在u-boot启动按任意键)进入控制台。
    在控制台执行 boot 命令,则进入引导模式去引导OS。
   
2.u-boot 控制台常用命令
--------------------------------------------------------------------
  help 显示帮助命令
  boot 用引导常数来引导OS。
  bootm 从内存引导OS。.
  bootp/tftpboot 从TFTP/BOOTP服务器引导OS
 
  go 从某一个地址开始直接运行程序
  mtdparts 管理flash上的分区
  ping 简单发送一个ICMP包测试。
  printenv 打印环境变量
  setenv 设置环境变量
  saveenv 把内存的环境变量存到flash上的param分区.
 
  usbslave 从USB下载文件 (PC机要运行dnw)
  version 显示u-boot 版本
  
4. 设置环境变量
  printenv 打印环境变量
    
bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
bootcmd=nboot 0x32000000 kernel; bootm 0x32000000
bootdelay=0
baudrate=115200
ethaddr=0a:1b:2c:3d:4e:5f
ipaddr=192.168.1.6
serverip=192.168.1.8
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(log)
partition=nand0,0
mtddevnum=0
mtddevname=bios
Environment size: 453/131068 bytes
  经常修改是 bootargs (Linux 启动参数)
         ipaddr (开发板IP地址)
         serverip( 默认tftp/NFS/...下载主机)
    setenv 命令只是改变内存的环境变量值,如果不调用saveenv,下次的设置仍然是旧的配置。
   
    设置开发板的ip
      u-boot>setenv ipaddr 192.168.1.8
    设置引导参数,注意引导参数内部带有空格,所以必须加""
   
      setenv bootargs "..." 
 
  自定义环境变量
      除了预定义的环境变量外,u-boot还支持自定义环境变量。直接采用setenv var_name var_value 即可.在其它的变量中直接用 $(var_name)
  比如两个启动模式,一种是本地启动的引导参数,一种是网络NFS引导参数。在调试阶段需要经常切算参数。可以预先做好两个bootarg_nfs bootarg_flash 可以在设置在
      setenv bootargs $({bootarg_nfs}
     
5.从tftp引导操作系统
    5.1 在PC机安装TFTP服务器
    5.2 配置网络让开发板与PC机在同一子网,并且网线相连
         设置服务器ip  setenv serverip 192.168.1.100
    5.3 在u-boot ping主机
            ping 192.168.1.100
           dm9000 i/o: 0x20000300, id: 0x90000a46
            MAC: 0a:1b:2c:3d:4e:5f
           host 192.168.1.100 is alive
    5.4 把操作系统映像uImage放入PC机的/tftpboot
        直接编译的OS Image称为 zImage
        u-boot需要一些额外的引导信息(64byte),用mkimage来处理,处理后的image 称为uImage
        
     5.5 在开发板运行tftpboot命令
        在不使用MMU情况下,第一块SDRAM的起始物理地址是 0x30000000
        把uImage 下载到0x3200000地址上。
       
          tftp 0x32000000 uImage
    4.6 用bootm 启动内存内核
 
dm9000 i/o: 0x20000300, id: 0x90000a46
MAC: 0a:1b:2c:3d:4e:5f
TFTP from server 192.168.1.100; our IP address is 192.168.1.50
Filename 'uImage'.
Load address: 0x32000000
Loading: T #################################################################
         #################################################################
         #########
done
Bytes transferred = 2021620 (1ed8f4 hex)

    
    bootm 0x32000000
## Booting image at 32000000 ...
   Image Name:  
   Created:      2009-06-18  18:50:52 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2021556 Bytes =  1.9 MB
   Load Address: 30008000
   Entry Point:  30008040
   Verifying Checksum ... OK
OK

 6.启动时自动用tftp引导
    
    如果想一上课就执行tftp下载引导,得修改 bootcmd 
    从本地引导
            bootcmd=nand read.i c0008000 80000 500000;bootm c0008000

从tftp的引导的命令
     setenv bootcmd "tftp 50008000 uImage;bootm 50008000"
  mini6410修改的uboot,直接使用zImage
      setenv bootcmd "tftp 52000000 zImage;bootm 52000000"

 7.用NFS远程引导根文件系统
 
    6.1 把文件系统的tar 解压到一个目录,并将这个目录设为NFS目录.
    6.2 在本地测试一下NFS路径是否可用
       mount -t nfs 192.168.1.8:/home/rootfs /mnt/nfs
      
    6.3 让u-boot通知内核不要从本地引导文件系统,而且从远程NFS引导.方法是修改bootargs
     本地引导参数.
     bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
    
     NFS引导参数
       console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.8:/home/rootfs ip=192.168.1.6
       ip是开发板IP,注意要环境变量IP一致,还要保证LINUX启动后也要设这个IP。否则NFS在执行一半后会中断。
       Linux 引导后IP是在 /home/rootfs/etc/init.d/rcS中设置.在其中加一句 ifconfig eth0 192.168.1.6 测试发现,如果使用标准的网络设置脚本 ifconfig-eth0 将会造成NFS启动中断,如果在启动文件使用这个命令,需要换成ifconfig eth0 命令

       最后在控制台上用如下命令设置
      setenv bootargs ""
     
      setenv bootargs "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.8:/home/rootfs ip=192.168.1.6"
       
    
    
  
 
4附录
   help
?       - alias for 'help'
autoscr - run script from memory
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
boot_noos - boot User Program
boot_zImage - boot Linux 's zImage
bootd   - boot default, i.e., run 'bootcmd'
bootelf - Boot from an ELF image in memory
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
bootvx  - Boot vxWorks from an ELF image
chpart  - change active partition
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
date    - get/set/reset date & time
dcache  - enable or disable data cache
eboot  - Run Wince Ethernet Bootloader(eboot)
echo    - echo args to console
erase   - erase FLASH memory
flinfo  - print FLASH memory information
fsinfo  - print information about filesystems
fsload  - load binary file from a filesystem image
go      - start application at address 'addr'
help    - print online help
icache  - enable or disable instruction cache
iminfo  - print header information for application image
itest   - return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loadx   - load binary file over serial line (xmodem mode)
loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
ls      - list files in a directory (default /)
md      - memory display
menu - display a menu, to select the items to do something
mm      - memory modify (auto-incrementing)
mtdparts- define flash/nand partitions
mtest   - simple RAM test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
ping    - send ICMP ECHO_REQUEST to network host
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
usbslave - get file from host(PC)
version - print monitor version
wince [ram] - Run Wince from flash or ram
    
 

tftp 0x30000000 u-boot.bin
nand erase 0 0x100000
nand write 0x30000000 0 0x100000
tftp 0x30000000 uImage
nand erase 0x100000 0x200000
nand write 0x30000000 0x100000 0x200000
reset
boot
 
阅读(3015) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~