全志编译环境分析

本文详细介绍了全志编译环境的搭建流程,包括构建工具链、编译内核及模块、生成启动映像等步骤,并解释了关键文件的作用。

全志编译环境分析(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

<think&gt;我们正在处理关于全志平台sys_config.fex文件的编辑和编译问题。根据引用内容,sys_config.fex是全志平台的配置文件,类似于设备树,用于硬件配置。在编译过程中,该文件会与dts文件合并生成dtb文件,且sys_config.fex的配置项优先级更高。编辑sys_config.fex文件: 1.使用文本编辑器直接编辑该文件。根据引用[3],该文件包含多个配置项,如[product]部分的version和machine等。 编译sys_config.fex文件:根据引用[1]和[2],编译过程涉及整个系统的编译。具体步骤: -使用build.sh脚本进行编译(引用[2])。执行该脚本可以编译uboot、kernel、buildroot,并生成系统镜像。 -在编译过程中,sys_config.fex文件会被合并到设备树中,生成最终的dtb文件(引用[1])。合并后的设备树路径为:lichee/out/sunXXXX/linux/common/.sunxi.dts(其中XXXX代表具体的芯片型号,如v3s、A40I等)。因此,编译sys_config.fex文件实际上是整个系统编译的一部分。修改sys_config.fex后,需要重新执行build.sh脚本进行全系统编译,以使修改生效。总结步骤: 1.编辑sys_config.fex文件(位于SDK中的特定目录,通常为lichee/tools/pack/chips/<芯片型号&gt;/configs/<项目名&gt;/sys_config.fex)。2.运行build.sh脚本进行全系统编译,生成新的系统镜像。注意:不同全志芯片型号(如V3s、A40I)的SDK路径可能略有不同,请根据实际项目调整。 §§相关问题§§1. sys_config.fex文件中的常见配置项有哪些?2.如何定位sys_config.fex文件在SDK中的具体路径?3.全志平台编译过程中sys_config.fex与设备树合并的具体机制是什么?</think&gt;### 编辑和编译 `sys_config.fex` 文件的方法 #### 1. **编辑 sys_config.fex** - **文件位置**:该文件位于全志 SDK 的配置目录中,路径通常为: `lichee/tools/pack/chips/<芯片型号&gt;/configs/<项目名&gt;/sys_config.fex` (例如:V3s 芯片的路径可能是 `lichee/tools/pack/chips/sun8iw11p1/configs/cherrypi-v3s/sys_config.fex`) - **编辑方式**: - 用文本编辑器(如 `vim` 或 `VSCode`)直接修改文件内容。 - **关键配置项示例**(引用[3]): ```ini [product] version = "100" # SDK 版本号 machine = "magton-p1" # 项目代号 ``` - 根据硬件需求调整配置,如 GPIO 引脚、电源管理、外设参数等。 #### 2. **编译 sys_config.fex** 该文件不单独编译,而是通过 **全系统编译流程** 自动处理: 1. **执行编译脚本**(引用[2]): 在 SDK 根目录运行: ```bash ./build.sh ``` - 该脚本会编译 uboot、kernel、buildroot 并打包镜像。 - **关键过程**:编译时自动将 `sys_config.fex` 与设备树(dts)合并生成最终 dtb 文件(引用[1])。 2. **生成文件路径**(引用[1]): - 合并后的设备树:`lichee/out/sunXXXX/linux/common/.sunxi.dts` (`XXXX` 为芯片型号,如 `A40I` 对应 `sun8iw11p1`) - 最终系统镜像:`tools/pack/cherrypi-v3s-linux.img`(引用[2]) #### 3. **配置优先级说明** - **sys_config.fex &gt; dts 文件**:全志编译流程会优先采用 `sys_config.fex` 的配置项(引用[1])。 - **修改生效**:编辑后必须重新执行 `./build.sh` 才能更新镜像。 &gt; **操作总结**: &gt; 编辑配置文件 → 执行 `./build.sh` 全编译 → 获取新镜像。 &gt; 无需手动处理设备树合并,编译系统自动完成[^1][^2][^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值