第三部分 ARM裸机系列之教你学会刷操作系统

来源:互联网 发布:南京市软件行业协会 编辑:程序博客网 时间:2024/04/30 21:11

第三部分 ARM裸机系列之教你学会刷操作系统
一、什么是刷系统
刷系统就是利用刷机工具,向开发板中烧录预先编译好的系统镜像,使之在开发板上运行起来。有些同学也了解手机android进行刷系统操作吧,其实是类似的!
二、如何破坏开发板自带操作系统
首先需要说明的是九鼎开发板S5PV210是自带操作系统,从内部iNand进行启动的,也就是前面我们说过的1st启动方式。所以为了实现从SD卡(2nd)进行系统的启动。需要对iNand中的bootloader进行破坏。代码如下:
在进入android系统后(系统完全启动起来了),使用下列命令:
busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync
这里写图片描述
命令解读:(其实这些都是linux命令 android是建立在Linux的内核基础之上的)
dd:linux下的命令主要是用于读写磁盘操作。
if:input file
of:output file
bs:扇区大小是512BYTE
seek:扇区编号是1 (emmc是从block1开始)
count:破坏扇区数目为1
sync:同步
意思就是:第一条命令的含义是将0写入到板载的inand的第一个扇区中(数据擦除),这样板载的inand中boorloader就会被破坏在开机时IROM会去inand区读取16KB,结果进行校验会出差错,导致无法启动,会从SD2去执行2nd启动。
注意:破坏板载iNand的bootloader后,不插外部SD卡,启动时串口得到:SD checksum Error(串口配置默认是 115200 8 N 1 无流控 uart2)
三、如何制作烧录uboot到SD卡中
有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。
1、 在windows中用刷卡工具去制作启动U盘
使用工具将uboot_inand加载 写入到SD卡(其实就是uboot)。
这里写图片描述
制作完SD后将SD卡插入开发板SD2通道,然后开机就可以进入uboot界面了。在uboot开机自动启动倒数3秒之内迅速按下电脑回车键,打断自动启动。(否则会自动启动iNand中的android)如何进入uboot呢?倒数3、2、1进行回车操作即可进入
(checking mode for fastboot …Hit any key to stop autoboot: 3 )
2、linux下使用dd命令刷写uboot
(1)linux下连接外部设备
如果你需要将该设备连接到linux中,需要在VMware软件的菜单“虚拟机 -> 可移动设备”中点选该设备,选择连接
(2)如何在linux下查看设备
连接进linux中,在命令行中:ls /dev/sd*查看,和之前对比,就知道我们的SD卡在linux中的设备编号了。一般是/dev/sdb
例如:
gec@ubuntu:~$ ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb
/dev/sda1 /dev/sda5 /dev/sdb1
(3)制作SD启动卡
执行 ./nand_fusing.sh /dev/sdb(这些东西是在F:winshare)
root@ubuntu:/mnt/hgfs/winshare# cd uboot_sd_fusing
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.0120124 s, 42.6 kB/s
mkfs.vfat -F 32 /dev/sdb1
mkfs.vfat 3.0.7 (24 Dec 2009)
BL1 fusing
16+0 records in
16+0 records out
8192 bytes (8.2 kB) copied, 0.992972 s, 8.2 kB/s
u-boot fusing
768+0 records in
768+0 records out
393216 bytes (393 kB) copied, 6.77224 s, 58.1 kB/s
U-boot image is fused successfully.
Eject SD card and insert it again.
(4)使用SD卡启动的前提有哪些:
先确定开发板是从SD卡启动的
然后确定板子内的iNand中的uboot是被破坏的,不能启动的。
SD卡插入SD2通道,启动即可。启动后(看有没必要fdisk -c 0来分区)使用fastboot继续刷机。
(5)为什么破坏了板载uboot,而使用SD卡能启动?
因为板载的iNAND(4G)是uboot坏了而已,android系统是没有被破坏的
当板子从SD0启动发现不行,会去执行2nd启动,发现有uboot则进行启动(内部代码设计的时候就会去读取inand其他扇区的操作系统数据),进而将iNAND的OS系统启动。
四、fastboot简单介绍
(1)fastboot是uboot中用来快速下载镜像的一个命令,fastboot同时还是一个windows上的软件。
fastboot常用命令:
fastboot devices 命令用来查看当前连接的设备。(我们开发板看到的是:SMDKC110-01)
fastboot flash xxx 命令用来烧录的
fastboot reboot 命令用来重启系统
(2)使用fastboot烧录android4.0.4镜像
在dos下使用以下三个命令来完成烧录
fastboot flash bootloader android4.0/uboot.bin 烧uboot
fastboot flash kernel android4.0/zImage-android 烧linux kernel
fastboot flash system android4.0/x210.img 烧android rom
这里写图片描述

0 0
原创粉丝点击