S5PV210 sd_fusing.sh SD卡镜像制作脚本分析

#
# Copyright (C) 2010 Samsung Electronics Co., Ltd.
#              http://www.samsung.com/
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
####################################
reader_type1="/dev/sdb"
reader_type2="/dev/mmcblk0"
//-z 字符串为"null".就是长度为0.
if [ -z $1 ] //判断输入参数是否为空,为空就显示sd_fusing.sh 脚本文件的作用
then
    echo "usage: ./sd_fusing.sh <SD Reader's device file>"
    exit 0
fi

if [ $1 = $reader_type1 ]// 如果输入参数=reader_type1 也就是等于="/dev/sdb"

then
    partition1="$11"
    partition2="$12"
    partition3="$13"
    partition4="$14"

elif [ $1 = $reader_type2 ]// 同上
then
    partition1="$1p1"
    partition2="$1p2"
    partition3="$1p3"
    partition4="$1p4"

else     // 如果不是上面两个的参数名字,就提示不支持的SD卡
    echo "Unsupported SD reader"
    exit 0
fi
//[ -b 文件 ] 如果 文件 存在 而且 是一个 块-特殊 文件为真
if [ -b $1 ]              //如何设备/dev/sdb 存在,就提示SD卡识别,否则...
then
    echo "$1 reader is identified."
else
    echo "$1 is NOT identified."
    exit 0
fi

####################################
# make partition
echo "make sd card partition"
echo "./sd_fdisk $1"
./sd_fdisk $1 // 仔细发现这个sd_fdisk.c里面只是给SD卡里面制作了一个10M的fat
    // 分区,所以导致我们在后面少些system.img 的时候还要在uboot      // 里面执行fdisk -c 0 命令,再次做一次分区,但是不明白为什么要    // 这样做呢,岂不是多此一举?一次性在PC端分好区不是OK了吗?
dd iflag=dsync oflag=dsync if=sd_mbr.dat of=$1
rm sd_mbr.dat
#对/dev/sdb 设备执行sd_mbr.dat 之后删除sd_mbr.dat
 
####################################
# format
umount $partition1 2> /dev/null
umount $partition2 2> /dev/null
umount $partition3 2> /dev/null
umount $partition4 2> /dev/null

echo "mkfs.vfat -F 32 $partition1"
mkfs.vfat -F 32 $partition1  // 建立一个fat32 分区

#echo "mkfs.ext2 $partition2"
#mkfs.ext2 $partition2 

#echo "mkfs.ext2 $partition3"
#mkfs.ext2 $partition3 

#echo "mkfs.ext2 $partition4"
#mkfs.ext2 $partition4 

####################################
# mount
#umount /media/sd 2> /dev/null
#mkdir -p /media/sd
#echo "mount -t vfat $partition1 /media/sd"
#mount -t vfat $partition1 /media/sd

####################################
#<BL1 fusing>
bl1_position=1
uboot_position=49

echo "BL1 fusing"
./mkbl1 ../u-boot.bin SD-bl1-8k.bin 8192  #分离出SD-bl1-8k.bin 8K大小
dd iflag=dsync oflag=dsync if=SD-bl1-8k.bin of=$1 seek=$bl1_position
rm SD-bl1-8k.bin
 #写分离出SD-bl1-8k.bin 到SD卡bl1_position位置,然后删除bl1_position

####################################
#<u-boot fusing>
echo "u-boot fusing"
dd iflag=dsync oflag=dsync if=../u-boot.bin of=$1 seek=$uboot_position
#写u-boot.bin 到uboot_position位置

####################################
#<Message Display>
echo "U-boot image is fused successfully."
echo "Eject SD card and insert it again."

总结:这个sd_fusing.sh的目的就是创建一个fat32 分区,然后用dd(一定要创建FAT32 分区才能执行!) 命令把SD-bl1-8k.bin 和u-boot.bin 文件写到/dev/sdb里面去。但是内核是什么关系呢?又是怎么回事呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值