sd_fusing烧写uboot到SD卡的理解

来源:互联网 发布:网络电视机顶盒连接图 编辑:程序博客网 时间:2024/05/17 05:07

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

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


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

如下图:


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




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卡进行分区,执行文件是编译得到的sd_fdisk。后面将分析sd_fdisk.c这个文件。

                     


  • 然后烧写BL1和uboot到sd卡对应的位置

                      

                       




存疑:

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

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

  • uboot的前8K代码肯定要完成重定位,因为BL1和BL2运行在不同的链接地址(举例如,BL1链接地址为0xd0020010,BL2链接地址为0x23e00000)。
  • 这里见博文:http://blog.csdn.net/oqqhutu12345678/article/details/69365104中的七2的重定位。

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

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

0 0
原创粉丝点击