sd_fusing.sh将uboot烧写到SD卡

以前只知道使用“./sd_fusing.sh  /dev/sdb”命令来烧写uboot.bin到SD卡中,对其中的细节并不了解。

心存忐忑,于是乎花了些功夫,去了解sd_fusing文件夹下的内容。


1、sd_fusing文件夹中有哪些文件?

如下图:

sd_fusing.sh将uboot烧写到SD卡


打开Makefile文件,可知mkbl1、sd_fdisk分别由C110-EVT1-mkbl1.c、 sd_fdisk.c文件编译得到。

sd_fusing.sh将uboot烧写到SD卡


2、sd_fusing.sh脚本的解释

(1)首先明白,烧录uboot.bin文件到sd卡,所使用的命令是“./sd_fusing.sh /dev/sdb”

  • 由此可知$0=./sd_fusing.sh,$1=/dev/sdb,$#=1(参数的个数)

(2)其次,了解sd_fusing.sh的代码

  • 首先了解下dd命令的用法:                    sd_fusing.sh将uboot烧写到SD卡
  • 对sd卡进行分区,执行文件是编译得到的sd_fdisk。后面将分析sd_fdisk.c这个文件。

                     sd_fusing.sh将uboot烧写到SD卡

  • 然后烧写BL1和uboot到sd卡对应的位置 
                      sd_fusing.sh将uboot烧写到SD卡

                       sd_fusing.sh将uboot烧写到SD卡


存疑:

1、sd_fdisk.c(编译得到sd_fdisk)这个文件是如何对sd卡进行分区的?

2、C110-EVT1-mkbl1.c(编译得到mkbl1)这个文件是如何将uboot的前8k复制到SD-bl1-8k.bin文件的?为什么是8k?8k中完成了什么任务?

3、如何将BL1、uboot烧写至sd卡对应的位置?为什么是1和49?

  • 使用dd命令进行对块设备的烧写。
  • BL1必须放在第1个 block开始的区域(三星规定的),而49可以变为其他合适的。