Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109832
  • 博文数量: 29
  • 博客积分: 447
  • 博客等级: 下士
  • 技术积分: 414
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-05 23:03
个人简介

整天捣鼓嵌入式,兼职搞搞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

阅读(2262) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~