总结: 通过如上框图我们可以发现:v210在启动过程中会先根据OM pin选择是那种启动方式,然后再去判断确认1st是否可以启动(通过校验和的方式checksum判断是否能成功启动),如果第一次启动失败,就会进入second启动。
刷系统就是利用刷机工具,向开发板中烧录预先编译好的系统镜像,使之在开发板上运行起来。
刷系统就是利用刷机工具,向开发板中烧录预先编译好的系统镜像,使之在开发板上运行起来。 有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。
原理:先破坏正常的第一次启动(目的就是让v210进入第二次启动),这样我们就可以使用SD卡将对应的刷系统了。
如何进入android控制台/ # ? 我们的开发板预装了Android ,我们可以在启动过程中观察开发板图标Android时注意串口如果出现/#就按回车。 如下是进入android控制台/ # 模式下破坏iNand中的bootloader的指令
busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync sync解释:这句话的意思就是说把板载的iNand的第一个扇区用全0来填充,其实就是擦除它,这样我们板载的iNand的bootloader的开始第1个扇区就被破坏了。将来启动时iROM还是会先从iNand中读取前16KB,然后计算校验和。这时候因为有1个扇区被擦掉了,所以校验和不通过,所以启动失败(会从SD2去执行2nd启动)
有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。 本节介绍第一种(比较简单),刷卡工具:x210_Fusing_Tool.rar 制作SD启动卡的过程就是将对应的uboot.bin烧写进SD卡,成功后插入SD卡重新启动就可以了。
Fastboot,英语翻译意思是快速启动。在安卓手机中fastboot是一种比recovery更底层的刷机模式(俗称引导模式)。就是使用USB数据线连接手机的一种刷机模式。相对于某些系统(如iOS)卡刷来说,线刷更可靠,安全。
1.连接开发板和电脑并安装对应的驱动工具,因为我们要使用fastboot进行线刷。 2.启动开发板,让其进入uboot模式后输入fastboot我们可以看到对应的分区如下
x210 # x210 # x210 # fastboot [Partition table on MoviNAND] ptn 0 name='bootloader' start=0x0 len=N/A (use hard-coded info. (cmd: movi)) ptn 1 name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi)) ptn 2 name='ramdisk' start=N/A len=0x300000(~3072KB) (use hard-coded info. (cmd: movi)) ptn 3 name='config' start=0xB11E00 len=0x1024BC00(~264495KB) ptn 4 name='system' start=0x10D5DA00 len=0x1024BC00(~264495KB) ptn 5 name='cache' start=0x20FA9600 len=0x6751800(~105798KB) ptn 6 name='userdata' start=0x276FAE00 len=0xC3CC2A00(~3207946KB)分区介绍 bootloader:存放uboot一类的启动文件,最终目标是启动操作系统内核。 kernel:存放内核,操作系统的核心。 ramdisk:内存盘,把系统内存划出一部分当作硬盘使用,速度快。 config:存放配置文件。 system:存放系统镜像文件。 cache:存放缓存数据。 userdata:存放用户数据。
当在windows的cmd命令行下找到fastboot文件夹并且输入fastboot devices 有设备显示则表示连接成功
3.我们下来要将要刷的bootloader、kernel、system放置在固定位置(我们放在fastboot的文件夹下)
fastboot devices 命令用来查看当前连接的设备。(我们开发板看到的是:SMDKC110-01) fastboot flash xxx 命令用来烧录的 fastboot reboot 命令用来重启系统
4.使用fastboot的烧录命令逐条进行烧录
使用fastboot烧录android4.0.4镜像fastboot flash bootloader android4.0.4/uboot.bin 烧uboot fastboot flash kernel android4.0.4/zImage-android 烧linux kernel fastboot flash system android4.0.4/x210.img 烧android rom 开始一直USB连不上,一直弹出,最后发现是虚拟机识别到了设备导致的,关掉后就成功了。
同理,烧录linux+QTfastboot flash bootloader linuxQT4.8/uboot.bin 烧uboot fastboot flash kernel linuxQT4.8/zImage-qt 烧linux kernel fastboot flash system linuxQT4.8/rootfs_qt4.ext3 烧rootfs uboot的参数不用特意设置(因为我们刷了专为linux+QT定制的uboot,这个uboot中估计已经预制好了所有的启动参数) 结果:可以成功显示linuxQT4.8
使用如上的方法就可以进行相应系统的刷系统了。
准备工作 1.使用USB线连接开发板和电脑 2.安装dnw驱动 3.遇到的问题:
连接上没反应,可能是USB线的问题,重新更换尝试识别出来设备了,驱动也安装成功了,但是设备管理器显示感叹号,可能是数字签名的问题准备两个镜像文件 x210_usb.bin 地址为0xd0020010 uboot.bin 地址为0x23e00000 刷机步骤 1.使用dnw将上面两个镜像烧录进去 2.刷uboot.bin的时候快速按回车进入uboot 3.分区,fdisk -c 0 4.然后输入fastboot就可以按照(3.3 刷机步骤)进行即可。准备工作 1.连接SD卡到Linux下 将装有SD卡的读卡器插入电脑,在虚拟机中打开可移动设备,设置连接。 2.第一步成功后,在Linux下输入:ls /dev/sd*(表示Linux下所有的磁盘,带数字是分区,不带是磁盘) 查看是否有磁盘连接
root@ubuntu:/# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdb1 root@ubuntu:/# root@ubuntu:/#刷机步骤 1.将uboot_sd_fusing放置到Winshare底下 2.执行./nand_fusing.sh /dev/sdb,显示如下则表示成功制作了SD启动卡
root@ubuntu:/mnt/hgfs/winshare/uboot_sd_fusing# ls mkbl1 nand_fusing.sh sd_fdisk uboot.bin root@ubuntu:/mnt/hgfs/winshare/uboot_sd_fusing# ./nand_fusing.sh /dev/sdb /dev/sdb reader is identified. make sd card partition ./sd_fdisk /dev/sdb 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.0255295 s, 20.1 kB/s mkfs.vfat -F 32 /dev/sdb1 mkfs.fat 3.0.26 (2014-03-07) BL1 fusing 16+0 records in 16+0 records out 8192 bytes (8.2 kB) copied, 2.02476 s, 4.0 kB/s u-boot fusing 768+0 records in 768+0 records out 393216 bytes (393 kB) copied, 3.76901 s, 104 kB/s U-boot image is fused successfully. Eject SD card and insert it again. root@ubuntu:/mnt/hgfs/winshare/uboot_sd_fusing# 详细的实现原理需要在uboot中进行深入研究我们刷系统的所有方法都是将uboot的镜像烧录进开发板,Windows中的工具有:x210_Fusing_Tool、dnw工具;在Linux中通过shell脚本(本质通过dd命令)以实现Windows中类似x210_Fusing_Tool的功能。 成功烧写了uboot后我们就可以利用fastboot将uboot、kernel、Android、linux+qt烧录进开发板
