用户工具

站点工具


jaysnote:pack_tool

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

jaysnote:pack_tool [2018/12/18 19:34]
jaylee
jaysnote:pack_tool [2021/06/22 23:14]
行 1: 行 1:
-<markdown> 
- 
-# pack tool 
- 
-编译打包相关脚本文件。 
- 
-```bash 
-vim -p  build.sh buildroot/scripts/mkcommon.sh buildroot/scripts/mkcmd.sh tools/pack/pack  
-``` 
- 
- 
-## boot0 
- 
-* 拷贝`tools/pack/chips/sun50iw1p1/bin/boot0_sdcard_sun50iw1p1.bin`到`out/boot0_sdcard.fex` 
- 
-    ```bash 
-    #tools/pack/pack line 132 
-    boot_file_list=( 
-    chips/${PACK_CHIP}/bin/boot0_sdcard_${PACK_CHIP}.bin:out/boot0_sdcard.fex 
-    ) 
-    #tools/pack/pack line 132 
-    for file in ${boot_file_list[@]} ; do 
-            cp -f `echo $file | awk -F: '{print $1}'` \ 
-                    `echo $file | awk -F: '{print $2}'` 2>/dev/null 
-    done 
-    ``` 
- 
-* 通过sys_config.bin 更新boot0,最终生成boot0_sdcard.fex。 
- 
-    ``` 
-    #tools/pack/pack line 132 
-    update_boot0 boot0_sdcard.fex   sys_config.bin SDMMC_CARD > /dev/null 
-    ``` 
- 
-## u-boot 
- 
-```bash 
-$./build.sh -p sun50iw1p1 
-``` 
- 
-* `brandy/build.sh` 会编译uboot并且将其拷贝到`tools/pack/chips/sun50iw1p1/bin/u-boot-sun50iw1p1.bin`。 
- 
-* tools/pack/pack 将其拷贝为u-boot.fex; 
- 
-    ```bash 
-    #tools/pack/pack line 132 
-    boot_file_list=( 
-    chips/${PACK_CHIP}/bin/u-boot-${PACK_CHIP}.bin:out/u-boot.fex 
-    ) 
-    ``` 
- 
-    ```bash 
-    #tools/pack/pack line 132 
-    for file in ${boot_file_list[@]} ; do 
-            cp -f `echo $file | awk -F: '{print $1}'` \ 
-                    `echo $file | awk -F: '{print $2}'` 2>/dev/null 
-    done 
-    ``` 
- 
-* 通过sys_config更新uboot 文件头的元数据; 
- 
-    ```bash 
-    update_uboot u-boot.fex sys_config.bin > /dev/null 
-    ``` 
-* 合并monitor.fex、scp.fex、sunxi.fex 
- 
-    ```bash 
-    merge_uboot u-boot.fex monitor.fex u-boot.fex secmonitor 
-    merge_uboot u-boot.fex scp.fex u-boot.fex scp 
-    ``` 
- 
-    ```bash 
-    #偏移地址 0xda800 
-    update_uboot_fdt u-boot.fex sunxi.fex u-boot.fex 
-    ``` 
- 
-    > **提示**:monitor.fex、scp.fex 直接位应用,sunxi.fex 为sys_config.fex 最终文件,参考[sys_config](#sys_config) 
- 
-## sys_config 
- 
-sys_config 是全志 sunxi的配置脚本,区别linux kernel的dts,但是会作用于dts,以下梳理其完整链路。 
- 
-*  应用sys_config.fex,通过dts生成sunxi.dtb; 
- 
-    ```bash 
-    local DTC_INI_FILE_BASE=${LICHEE_OUT}/../../../../tools/pack/out/sys_config.fex 
-    local DTC_INI_FILE=${LICHEE_OUT}/../../../../tools/pack/out/sys_config_fix.fex 
-    cp $DTC_INI_FILE_BASE $DTC_INI_FILE 
-    $DTC_COMPILER -O dtb -o ${LICHEE_OUT}/sunxi.dtb \ 
-            -b 0                    \ 
-            -i $DTC_SRC_PATH        \ 
-            -F $DTC_INI_FILE        \ 
-            -d $DTC_DEP_FILE $DTC_SRC_FILE 
-    ``` 
- 
-* 通过生成sys_config.bin 拷贝config.fex,sys_config.bin 用以后面的其他文件更新,config.fex暂时未发现使用; 
- 
-    ```bash 
-    busybox unix2dos sys_config.fex 
-    script  sys_config.fex > /dev/null 
-    cp -f   sys_config.bin config.fex 
-    ``` 
- 
-* 使用sys_config.bin 更新boot0、uboot、fes1、toc0。 
- 
-    ```bash 
-    update_boot0 boot0_spinor.fex   sys_config.bin SDMMC_CARD > /dev/null 
-    update_uboot u-boot-spinor.fex  sys_config.bin >/dev/null 
-     
-    update_boot0 boot0_nand.fex     sys_config.bin NAND > /dev/null 
-    update_boot0 boot0_sdcard.fex   sys_config.bin SDMMC_CARD > /dev/null 
-    update_uboot u-boot.fex         sys_config.bin > /dev/null 
-    update_fes1  fes1.fex           sys_config.bin > /dev/null 
-    update_toc0  toc0.fex           sys_config.bin 
-    ``` 
- 
-## dts 
- 
-* 应用sys_config.fex 通过dts生成sunxi.dtb 
- 
-    ```bash 
-    $DTC_COMPILER -O dtb -o ${LICHEE_OUT}/sunxi.dtb \ 
-            -b 0                    \ 
-            -i $DTC_SRC_PATH        \ 
-            -F $DTC_INI_FILE        \ 
-            -d $DTC_DEP_FILE $DTC_SRC_FILE 
-    ``` 
- 
-    > **提示**:使用sys_config 主要是更新dts中的`status` 。 
- 
-* 拷贝生成 sunxi.fex 合并到uboot 
- 
-    ```bash 
-    #偏移地址 0xda800 
-    update_uboot_fdt u-boot.fex sunxi.fex u-boot.fex 
-    ``` 
- 
-    ```bash 
-    hexdump -C -n 1000   tools/pack/out/sunxi.fex 
-    hexdump -C -n 1000 -s 0xda800  tools/pack/out/u-boot.fex 
-    ``` 
- 
-## boot-resouce 
- 
-boot-resource为用以uboot引导的一些资源文件,主要是包含一些背景图片。 
- 
-* 背景图bootlogo.bmp 
- 
-    ``` 
-    ../a64_jay/tools/pack/chips/sun50iw1p1/configs/t1/bootlogo.bmp 
-    ../a64_jay/tools/pack/out/boot-resource/bootlogo.bmp 
-    ``` 
- 
-整合资源文件后生成boot-resource.fex 和boot-resouce.ini 之后通过fat16 文件系统写入/dev/mmcblk0p2。 
- 
-##bootimg(kernel+ramdisk) 
- 
-boot.img 为安卓引导的内核格式,其主要包含描述镜像的文件头和可执行的kernel和ramdisk。相信参考[android boot image](http://docs.leconiot.com/doku.php?id=jaysnote:android_bootimg) 。 
- 
-linux-3.10/scripts/build.sh 为制作引导镜像脚本,其约定kernel和ramdisk可执行文件的偏移地址和通过mkbootimg 工具制作引导镜像文件。 
- 
-```bash 
- #"linux-3.10/scripts/build.sh"  line 287 
- if [ ${bss_sz} -gt $((16#1000000)) ]; then 
-         RAMDISK_OFFSET="0x02000000"; 
- else 
-         RAMDISK_OFFSET="0x01000000"; 
- fi 
- #modify ramdisk offset from 16m to 20m 
- RAMDISK_OFFSET="0x01400000"; 
- ${MKBOOTIMG} --kernel ${BIMAGE} \ 
-         --ramdisk ${RAMDISK} \ 
-         --board ${CHIP} \ 
-         --base ${BASE} \ 
-         --kernel_offset ${KERNEL_OFFSET} \ 
-         --ramdisk_offset ${RAMDISK_OFFSET} \ 
-         -o output/boot.img 
-``` 
- 
-pack打包工具未对镜像做任何处理,软连接到了boot.fex。 
- 
-```bash 
-ln -s ${LICHEE_OUT}/boot.img boot.fex 
-``` 
- 
-## rootfs 
- 
-rootfs 的制作通过build.sh moudle=all 制作,会选择`buildroot/scripts/mkcommon.sh`再到`buildroot/scripts/mkcmd.sh`,最终通过`buildroot/target/debian/build.sh` 打包镜像。 
- 
-```bash 
-OUT_PATH="../../../out/dragonboard" 
-#"buildroot/target/debian/build.sh" line 36 
-buildroot/target/tools/host/usr/bin/make_ext4fs  -s -l $NEW_NR_SIZE"M" $TARGET_IMAGE ${LICHEE_TOP_DIR}/debian/ 
-cp -v rootfs.ext4 $OUT_PATH/ 
-``` 
- 
-pack打包工具未对镜像做任何处理,软连接到了rootfs.fex。 
- 
-```bash 
-ln -s ${LICHEE_OUT}/rootfs.ext4 rootfs.fex 
-``` 
- 
-</markdown> 
- 
- 
  
jaysnote/pack_tool.txt · 最后更改: 2021/06/22 23:14 (外部编辑)