全志编译环境分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ReturningProdigal/article/details/81780662

全志编译环境分析(cqa64_ubuntu16.04_bv3_20180515)

~/: 编译环境的根目录
常用环境变量值

${LICHEE_BR_DIR}        ~/buildroot/
${LICHEE_BR_OUT}        ~/out/${chip}/${platform}/common/buildroot/        ~/out/sun50iw1p1/ubuntu16/common/buildroot/
${LICHEE_KERN_DIR}        ~/linux-3.10
${LICHEE_MOD_DIR}        ~/linux-3.10/output/lib/modules/3.10.105
${LICHEE_KDIR}            ~/linux-3.10

sh文件作用

~/buildroot/scripts/build.sh 解压交叉编译工具链

./build.sh

一、mkbr -> build_toolchain 构建工具链

二、mkkernel

mkkernel -> prepare_toolchain -> ~/linux-3.10/scripts/build.sh(build_kernel -> build_modules -> build_ramfs -> gen_output -> [0;31;1msun50iw1p1 compile Kernel successful)

1) build_kernel
1.拷贝 rootfs.cpio.gz
cp -f rootfs.cpio.gz output/
2.拷贝配置文件 .config

cp arch/${ARCH}/configs/${LICHEE_KERN_DEFCONF} .config
    ${ARCH}        "arm64"
    ${LICHEE_KERN_DEFCONF}     ""
    arch/${ARCH}/configs/ 目录下有以下默认配置 .config 文件:
        defconfig sun50iw1p1smp_defconfig sun50iw1p1smp_android_defconfig sun50iw1p1smp_min_defconfig

3.编译所有模块

make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} -j${LICHEE_JLEVEL} all modules

4.更新内核版本,并更新 LICHEE_MOD_DIR 变量
update_kern_ver
5.找到所有 drivers sound crypto block fs security net 驱动路径并拷贝到 ${LICHEE_MOD_DIR}

for file in $(find drivers sound crypto block fs security net -name "*.ko");
do
    cp $file ${LICHEE_MOD_DIR}
done

问题:
vmlinux是什么文件,有什么作用
Module.symvers是什么文件,有什么作用

2) build_modules
1.安装系统驱动文件,即将 *.ko 文件拷贝到 ${LICHEE_MOD_DIR}
2.编译安装 nand 驱动文件
3.编译安装 aw_schw 驱动文件
4.编译安装 gpu 驱动文件

3) build_ramfs

${LICHEE_PLAT_OUT}        ./out/sun50iw1p1/ubuntu16/common/

1.生成 boot.img

${MKBOOTIMG} --kernel ${BIMAGE} \
    --ramdisk ${RAMDISK} \
    --board ${CHIP} \
    --base ${BASE} \
    --kernel_offset ${KERNEL_OFFSET} \
    --ramdisk_offset ${RAMDISK_OFFSET} \
    -o output/boot.img

${MKBOOTIMG}        ~/tools/pack/pctools/linux/android/mkbootimg
${CHIP}                sun50i
${RAMDISK}            当前函数中有赋值
${BIMAGE}            当前函数中有赋值

4) gen_output
编译安卓平台,才会调用

三、mkrootfs

./build.sh pack

${LICHEE_OUT}        ~/out/sun50iw1p1/ubuntu16/common
$DTC_COMPILER         ~/linux-3.10/scripts/dtc

1) do_prepare

2) do_ini_to_dts

1.通过 sys_config.fex 文件 生成 dtb 设备树文件

$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

3) do_common
问题:
script sys_config.fex > /dev/null
4) do_pack_${PACK_PLATFORM}
5) do_finish

猜你喜欢

转载自blog.csdn.net/ReturningProdigal/article/details/81780662