15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

【uboot】Uboot烧录及使用

一、UBOOT学习

0、基础知识

进入uboot,查询到dram 起始地址为0x80000000,大小为0x20000000(512Mb)

bdinfo
arch_number = 0x00000000
boot_params = 0x80000100
DRAM bank   = 0x00000000
-> start    = 0x80000000
-> size     = 0x20000000
eth0name    = FEC1
ethaddr     = 88:30:6D:AF:F4:8F
current eth = FEC1
ip_addr     = 192.168.1.3
baudrate    = 115200 bps
TLB addr    = 0x9FFF0000
relocaddr   = 0x9FF55000
reloc off   = 0x18755000
irq_sp      = 0x9EF52EA0
sp start    = 0x9EF52E90
DDR ADDR程序
0x80800000zImage
0x83000000dtb

1、UBOOT裸程序构成

由 IVT + Boot Data + DCD + bin 构成,在DDR中的存放地址如下:

DDR ADDR内容
0x877ff000boot load start
…(+ 1KB, block 0, block 1)reserve
0x877ff400 (bolck 2)IVT(u-boot.imx)
Boot data
DCD
(+ 3Kb)( IVT+BOOTDATA+DCD)
0x87800000bin

①IVT内容

TAG、指定IVT大小
bin PC指针
DCD地址(ddr)
boot data地址(ddr)
IVT地址(ddr)
②Boot Data内容

xxx.imx起始地址
镜像大小
③DCD内容

TAG、DCD大小、版本
寄存器及值,配置基础功能(时钟、DDR等)

2、Uboot烧写方法


①从linux用户空间直接将uboot.imx烧录到SD/EMMC设备

烧录到SD卡

#将SD卡插入开发板或者ubunto开发环境
$ sudo fdisk -l #查看SD卡/dev名
$ sudo dd if=u-boot.imx of=/dev/yourSdName bs=1024 seek=1 conv=fsync

烧录到EMMC

$ echo 0 > /sys/block/mmcblk1boot0/force_ro #开启emmc写功能
$ dd if=u-boot.imx of=/dev/mmcblk1boot0 bs=1024 seek=1 conv=fsync
$ echo 1 >/sys/block/mmcblk1boot0/force_ro #关闭写
$ mmc bootpart enable 1 1 /dev/mmcblk1 #使能分区1

②从uboot中下载后,再写入到SD/EMMC设备block 2处

=> setenv serverip 192.168.1.101
=> tftp 80800000 u-boot.imx
Using FEC1 device
TFTP from server 192.168.1.101; our IP address is 192.168.1.3
Filename 'u-boot.imx'.
Load address: 0x80800000
Loading: #########################
	 938.5 KiB/s
done
Bytes transferred = 363520 (58c00 hex)
 => mmc dev 0 0
switch to partitions #0, OK
mmc0 is current device
=> mmc write 80800000 2 2c6 #363520/512

MMC write: dev # 0, block # 2, count 710 ... 710 blocks written: OK 
#emmc需要这一步
=>mmc partconf 1 1 0 0
#重启后,查看版本
=> version  

③ 使用mfgtool通过串口烧录

1、配置BOOT_CFG 为01000000
2、连接串口
3、烧录

④ 在ubuntu开发环境下使用imxdownload

1、插入SD卡
2、找到/dev名
3、./imxdownload u-boot.bin /dev/sdd

3、Uboot下常用命令

=> mmc info #查看当前mmc设备信息
=> mmc list #查看mmc设备列表
=> mmc dev 1 [可选part]#切换到mmc设备1(默认到分区part=0)
=> mmc part #查看当前设备分区
=> mmc read/write/erase 80800000 600 10 #读取0x600块开始10个块到80800000ddr addr.
=> nand info
=> nand device
=> nand erase addr size
=> nand wrete/read addr off size
=> fatinfo mmc 0:1 #产看分区文件系统信息
=> fat[ext2/ext4]ls mmc 0:1 #查看mmc0分区1下文件
=> fat[ext]load mmc 0:1 80800000 file #将文件读取到ddr
=> fdt addr 80800000 #设置设备树地址
=> fdt print #查看设备树文件内容
=> bootz 80800000 - 83000000 #从ddr启动linux镜像zImage(808) 、inidrd(-)、dtb(830)
=> bootm 80800000 #从ddr启动镜像uImage
=> boot #从bootcmd读取,并执行命令
=> reset #重启
=> go addr #跳转到addr并运行bin程序
=> run xxxcmd #运行自定义的xxxcmd(类似于bootcmd)
anyShare分享到:
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。
stormwind