第三十章 U-boot使用实验

一、U-Boot简介
uboot官网为:http://www.denx.de/wiki/U-Boot/
nxp下载地址为:http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tag/?h=imx_v2016.03_4.1.15_2.0.0_ga&id= 
rel_imx_4.1.15_2.1.0_ga
文件:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
原子:uboot-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2

二、U-Boot初次编译
sudo apt-get install libncurses5-dev
tar -vxjf uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

三、U-boot烧写与启动
chmod 777 imxdownload
./imxdownload u-boot.bin /dev/sdd

四、U-Boot命令使用
help或?
help或?命令名,例如:help bootz

1、信息查询命令:bdinfo、printenv、version

2、环境变量操作命令:setenv、saveenv

2.1、修改环境变量
setenv bootdelay 5
saveenv

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' 
saveenv

2.2、新建环境变量
setenv author jiangjunhua
saveenv

2.3、删除环境变量
setenv author
saveenv

3、内存操作命令:md、nm、mm、mw、cp、cmp

3.1、md命令:用于显示内存值
md[.b, .w, .l] address [# of objects]
md.b 80000000 14  //uboot 命令中的数字都是十六进制的!不是十进制的!

3.2、nm命令:用于修改指定地址的内存值
nm[.b, .w, .l] address
修改后,输入q退出

3.3、mm命令:修改指定地址内存值,地址会自增,输入q退出

3.4、mw命令:用于使用一个指定的数据填充一段内存
mw[.b, .w, .l] address value [count]

3.5、cp命令:用于将DRAM中的数据从一段内存拷贝到另一段内存中,或者把Nor Flash中的数据拷贝到DRAM中
cp[.b, .w, .l] source target count

3.6、cmp命令:用于比较两段内存的数据是否相等
cmp[.b, .w, .l] addr1 addr2 count

4、网络操作命令:dhcp、ping、nfs、tftpboot
setenv ipaddr 192.168.1.50 
setenv ethaddr 00:04:9f:04:d2:35 
setenv gatewayip 192.168.1.1 
setenv netmask 255.255.255.0 
setenv serverip 192.168.1.250 
saveenv 

4.1、ping命令
ping 192.168.1.250

4.2、dhcp命令
DHCP不单单是获取IP地址,其还会通过TFTP来启动linux内核

4.3、nfs命令
nfs [loadAddress] [[hostIPaddr:]bootfilename]
nfs 80800000 192.168.1.250:/home/yy/linux/nfs/zImage

4.4、tftp命令
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
tftp 80800000 zImage

5、EMMC和SD卡操作命令
mmc是一系列的命令,其后可以跟不同的参数,输入?mmc即可查看mmc有关的命令
5.1、mmc info 命令
用于输出当前选中的 mmc info 设备的信息

5.2、mmc rescan 命令
用于扫描当前开发板上所有的 MMC 设备

5.3、mmc list 命令
用于来查看当前开发板一共有几个 MMC 设备

5.4、mmc dev 命令
用于切换当前 MMC 设备
mmc dev [dev] [part]  //[dev]用来设置要切换的 MMC 设备号,[part]是分区号。如果不写分区号的话默认为分区 0
mmc dev 0             //切换到 SD 卡,0 为 SD 卡,1 为 eMMC

5.5、mmc part 命令
mmc dev 1      //切换到 EMMC 
mmc part       //查看 EMMC 分区 

5.6、mmc read 命令
mmc read addr blk# cnt //addr 是数据读取到 DRAM 中的地址,blk 是要读取的块起始地址,一个块是 512字节,这里的块和扇区是一个意思,在 MMC 设备中我们通常说扇区,cnt 是要读取的块数量
mmc dev 1 0                        //切换到 MMC 分区 0 
mmc read 80800000 600 10           //读取数据 

5.7、mmc write 命令
mmc write addr blk# cnt 
mmc dev 1 0                                //切换到 EMMC 分区 0 
tftp 80800000 u-boot.imx                   //下载 u-boot.imx 到 DRAM 
mmc write 80800000 2 32E                   //烧写 u-boot.imx 到 EMMC 中 
mmc partconf 1 1 0 0                       //分区配置,EMMC 需要这一步! 

5.8、mmc erase 命令
mmc erase blk# cnt 

6、FAT格式文件系统操作命令
6.1、fatinfo 命令
fatinfo <interface> [<dev[:part]>] //interface 表示接口,比如 mmc,dev 是查询的设备号,part 是要查询的分区
fatinfo mmc 1:1

6.2、fatls命令
fatls <interface> [<dev[:part]>] [directory]
fatls mmc 1:1

6.3、fstype命令
fstype <interface> <dev>:<part>
fstype mmc 1:0
fstype mmc 1:1
fstype mmc 1:2

6.4、fatload命令
fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
fatload mmc 1:1 80800000 zImage

6.5、fatwrite命令
uboot默认没有使能fatwrite命令
#define CONFIG_FAT_WRITE  /* 开发板配置头文件中使能 fatwrite 命令 */ 
fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
tftp 80800000 zImage
fatwrite mmc 1:1 80800000 zImage 0x5c2720 /* 0x5c2720为文件大少 */

7、EXT格式文件系统操作命令
常用的命令,分别为:ext2load、ext2ls、ext4load、ext4ls 和 ext4write。这些命令的含义和使用与 fatload、fatls 和 fatwrit一样

8、NAND操作命令

9、BOOT操作命令
9.1、bootz命令
bootz [addr [initrd[:size]] [fdt]]
tftp 80800000 zImage
tftp 83000000 imx6ull-alientek-emmc.dtb
bootz 80800000 – 83000000

9.2、bootm命令
bootm addr
如果要使用设备树,那么bootm命令和bootz一样,命令格式如下: 
bootm [addr [initrd[:size]] [fdt]]

9.3、boot命令
boot 会读取环境变量 bootcmd 来启动 Linux
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000' 
saveenv 
boot 

10、其他常用命令
10.1、reset命令

10.2、go命令:用于跳到指定的地址处执行应用
go addr [arg ...] //可以用于测试裸机程序
tftp 87800000 printf.bin 
go 87800000

10.3、run命令:用于运行环境变量中定义的命令
run bootcmd

setenv mybootemmc 'fatload  mmc 1:1  80800000  zImage;  fatload mmc 1:1  83000000  imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000' 
setenv  mybootnand  'nand  read  80800000  4000000  800000;nand  read  83000000  6000000 100000; bootz 80800000 - 83000000' 
setenv  mybootnet  'tftp  80800000  zImage;  tftp  83000000  imx6ull-alientek-emmc.dtb;  bootz 80800000 - 83000000'
saveenv

run mybootemmc
run mytoobnand
run mybootnet

10.4、mtest命令:简单的内存读写测试命令
mtest [start [end [pattern [iterations]]]]
结束测试Ctrl+C
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值