为了支持该功能,需要两个工具sd_fdisk和u-boot-head-tool。
sd_fdisk功能是对TF卡分区,u-boot-head-tool则是修改编译生成的u-boot以适合s5p4418硬件启动的要求。
两个工具的下载地址是http://download.csdn.net/detail/u010406724/8362055,
另外还需要一个脚本,来使用这两个工具sd_fusing.sh,具体的代码如下:
#
# 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/sdj"
#如果是使用的新卡(或者没有烧写过s5p4418程序的卡),那么需要把disk_tf_enable设置为1(默认值),执行完成后再设置为0,除非更换卡才再次设置为1,否则请保持为0,避免顺坏tf卡中原有的数据
disk_tf_enable=0
if [ -z $1 ]
then
echo "usage: ./sd_fusing.sh <SD Reader's device file>"
exit 0
fi
if [ $disk_tf_enable = 1 ]
then
if [ $1 = $reader_type1 ]
then
partition1="$1"'1'
partition2="$1"'2'
partition3="$1"'3'
partition4="$1"'4'
fi
if [ -b $1 ]
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
dd iflag=dsync oflag=dsync if=sd_mbr.dat of=$1
rm 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"
sudo mkfs.vfat -F 32 $partition1
#echo "mkfs.ext2 $partition2"
#mkfs.ext2 $partition2
#echo "mkfs.ext2 $partition3"
#mkfs.ext2 $partition3
#echo "mkfs.ext2 $partition4"
#mkfs.ext2 $partition4
#mount $partition1
fi
####################################
#<BL1 fusing>
bl1_position=1
uboot_position=64
echo "2ndboot fusing"
dd iflag=dsync oflag=dsync if=2ndboot.bin of=$1 seek=$bl1_position
./u-boot-head-tool #对u-boot进行加头处理
####################################
#<u-boot fusing>
echo "u-boot fusing"
dd iflag=dsync oflag=dsync if=u-boot-tmp.bin of=$1 seek=$uboot_position
rm u-boot-tmp.bin
####################################
#<Message Display>
echo "U-boot image is fused successfully."
另外当然还需要u-boot.bin和2ndboot两个文件了,这两个文件也都会在官方的系统文件中提供了。
在执行脚本之前需要确保文件如下图所示:
另外需要注意脚本中的一个变量
disk_tf_enable=0
只有在使用新卡或者没有烧写过4418程序的卡时设置为1,其他都设置为0,免得因为格式化顺坏tf卡。