本片文章属于ARM裸机教程,记录在九鼎X210VB3S开发板上烧写系统镜像的几种方式。


基本操作

刷系统其实就是利用刷机工具,下载系统镜像到NAND或者Nor Flash中,使其在开发板上运行起来,专业一点叫做烧录;

烧写系统镜像需要使用串口通信,串口其实是一种硬件通信接口,用于在开发板和其他设备之间进行通信,现在的串口通常用来做调试使用,当做嵌入式系统控制台来使用,一般使用串口线连接开发板和电脑之间的串口,在电脑上打开串口监视,就可以看到开发板输出的数据,还可以通过串口监视终端向开发板发送数据,常用的串口监视终端有secureCRT,超级终端以及Linux的minicom等,但是现在的电脑很少自带串口,我们常用USB转串口工具来代替,所以需要安装USB转串口的驱动。

USB转串口工具的驱动安装和普通驱动安装的方式一样,驱动安装完之后就可以使用SecureCRT连接到该串口上,然后将串口插入开发板UART2上就可以开始工作了。

破坏iNAND的bootloader

S5PV210默认从内置的eMMC中启动,官方默认在这里iNAND中刷入了Android4.0,如果我们想要从SD卡启动,就需要先破坏iNAND中的Android镜像,方法是这样的:

进入android系统控制台,执行如下指令: busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
为了确保执行数据有效,再执行sync同步一下,即可破坏掉前一个块的数据。

linux的dd命令,是用来读写磁盘的,我们把内部的iNAND作为一个磁盘,位于:/dev/block/mmcblk0,也就是我们这里的of输出文件,输入if文件是:/dev/zero,这样就把iNAND写入了全0,写入块大小为512字节(一个扇区),seek表示写入第一个扇区,因为bootloader就是从扇区1开始的,count为1表示写入长度为1个扇区,剩余的扇区不要动,只要破坏一个扇区uboot就启动不起来了。

制作SD启动卡

在win中使用写卡工具来写入,在linux中我们可以使用dd命令来写入,

win中的方式

使用x210_Fusing_tool.exe,插入SD卡,选择要使用的bootloader,记得要使用管理员权限。

为什么还是能启动Android

之前我们把iNAND的uboot破坏掉了,但是Android还在,现在我们从SD通道2启动,这个通道的uboot是好的,所以可以完全启动uboot,这个uboot启动之后会从iNAND中去启动Android,因为这个Android是完整的。

fastboot

我们可以在uboot启动阶段暂停,从而进入ubbot中,进而可以使用fastboot来刷写系统镜像。

fasoboot是uboot中快速下载烧写镜像的一个命令,而且fastboot还是win中的一个软件,这个软件和命令要配合下载才能实现快速下载。
fastboot使用的注意事项:

  • 需要使用USB线进行传输,所以要使用USB线连接主机和开发板
  • fastboot需要安装驱动

fastboot常用命令:

  • fastboot devices,查看连接的设备
  • fastboot flash 分区 镜像路径,烧录镜像到指定的分区
  • fastboot reboot 重启

Linux 下使用dd命令烧uboot

插入SD卡到电脑上,在linux中,可以查看/dev目录下的设备,SD卡的设备名称一般为sd开头的磁盘设备,就可以确定设备上连接的存储设备。
在linux下执行刷写脚本,即可把uboot.bin 刷写到sd卡中