整天捣鼓嵌入式,兼职搞搞iOS,这么折腾为了啥?都是为了俺的娃!
分类: Android平台
2015-02-12 09:36:03
环境:天嵌E9开发板
CPU:freescale imx6q
系统:Android
天嵌提供了MfgTool2.exe工具进行烧写.但是每次修改内核驱动都要烧写,很麻烦,于是想利用uboot通过tftp来单独烧写内核.
1.首先要知道mmc的分区结构,通过系统查看:
# cat /proc/partitions
major minor #blocks name
179 0 7634944 mmcblk0
179 1 8192 mmcblk0p1
179 2 8192 mmcblk0p2
179 3 1 mmcblk0p3
179 4 4395008 mmcblk0p4
179 5 524287 mmcblk0p5
179 6 524287 mmcblk0p6
179 7 2097151 mmcblk0p7
259 0 8191 mmcblk0p8
259 1 8191 mmcblk0p9
179 16 4096 mmcblk0boot1
179 8 4096 mmcblk0boot0
179 24 7707648 mmcblk1
2.查看各分区的起始块位置(块大小为512Bytes):
# cat mmcblk0p1/start //blocks:0x4000~0x7FFF(8M):boot.img
16384
# cat mmcblk0p2/start //blocks:0x8000~0xBFFF(8M):recovery.img
32768
# cat mmcblk0p3/start //0xC000 (512B)
49152
# cat mmcblk0p4/start //0x62 8000
6455296
# cat mmcblk0p5/start //0xC001 (512M):system.img
49153
# cat mmcblk0p6/start //0x10 C001 (512M)
1097729
# cat mmcblk0p7/start //0x20 C001 (2G)
2146305
# cat mmcblk0p8/start //0x60 C001 (8M)
6340609
# cat mmcblk0p9/start //0x61 0001
3.进入uboot将MMC的各个起始块位置的数据打印出来进行对比,由此判断其镜像文件烧录在哪个块.
MX6Q SABRESD U-Boot > mmc dev 3
MX6Q SABRESD U-Boot > mmc read 0x10800000 0x4000 0x10
MX6Q SABRESD U-Boot > md 10800000 0x10
10800000: 52444e41 2144494f 004dba68 10808000 ANDROID!h.M.....
10800010: 0003b248 11800000 00000000 11700000 H.............p.
10800020: 10800100 00000800 00000000 00000000 ................
10800030: 00000000 00000000 00000000 00000000 ................
对比文件后可以判断这个位置写的是boot.img镜像文件
4.通过tftp下载到内存后进行烧录:
MX6Q SABRESD U-Boot > mw 0x10800000 0 0x4000 //清理内存
MX6Q SABRESD U-Boot > tftp 10800000 boot.img
PHY indentify @ 0x0 = 0x001cc915
mx6_rgmii_rework fin to rework network!
FEC: Link is Up 796d
Using FEC0 device
TFTP from server 192.168.29.230; our IP address is 192.168.29.226
Filename 'boot.img'.
Load address: 0x10800000
Loading: T #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#######################################
done
Bytes transferred = 5341184 (518000 hex)
MX6Q SABRESD U-Boot > mmc write 0x10800000 0x4000 0x4000
recovery.img和system.img也可以用同样的方式烧写.
5.烧录成功,写成uboot命令,一键烧录:
setenv tftpburn_bootimg 'mw 10800000 0 4000;tftp 10800000 boot.img;mmc dev 3;mmc write 10800000 4000 4000'
saveenv