UBOOT与系统移植之编译脚本分析

编译脚本的分析,其实来说是比较简单的,只要懂一下基本的shell语言就行。

我们来分析一下4412的编译脚本的语法哈。

 

 

 

第三行首先判断参数为不为空,不为空则执行13行,为空的话执行执行then,打印三行信息之后退出。

 

第12行到第29行判断判断参数的类型之后,在给sec_path赋值为当前目录的上一目录的文件夹CodeSign4SecureBoot_xxx(这个是三星的加密文件),然后在给核心板的类型赋值。CoreBoard_type=xxx.如果传入的参数都不匹配前面的内容。就退出。

第32行 CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}'),这个是打印cpu使用的核心数。

我在搭建虚拟机的时候给cpu分配了两核(主机是八核的),我们可以运行一下。

结果的确是2.(哈哈)

第33行和34行,给ROOT_DIR和CUR_DIR赋值。

之后39行删除编译的。然后42和43行删除两个.S文件。

 

之后进入case 语句,显然执行万能匹配符后面的几个参数,判读是否存在sec_path目录(因为必须要三星提供的安全启动文件)之后根据传入参数,执行make命令,进行编译

 


93行代表的是make -j 4代表加速linux的编译。花费的时间肯定比较短了。

95行检验checksum_bl2_14k.bin文件是否存在,不存在就退出。

然后103行104行分别赋值check_bl2_14k.bin和u-boot.bin文件到 安全目录

在删除check_bl2_14k.bin

107行进入安全目录,之后通过比较核心板的类型,在确定执行哪行语句。然后将cat 后面的文件组合,创建成新的uboot文件。

samsung4412的uboot组成图是这样的。

 

可见就是将cat后面的内容组合成可烧录的文件,第一次生成的uboot.bin并不能直接烧录到开发板里面去。

cat 完之后将u-boot-itop-4412.bin移动到根目录去。(注意当前是在安全目录,那个uboot的根目录和安全目录在同一目录下,同等地位)

之后删除checksum_bl2_14k.bin u-boot.bin这两个文件后退出。

 

 

可见uboot的编译脚本分析也是比较简单的。

晚上给大家打来uboot的start.S文件分析。

谢谢大家!