版权声明:本文为博主原创文章,未经博主允许不得转载。 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