晶晨A311D开发板:从零构建Ubuntu/Debian固件的完整指南

张开发
2026/4/10 20:58:57 15 分钟阅读

分享文章

晶晨A311D开发板:从零构建Ubuntu/Debian固件的完整指南
1. 环境准备搭建Ubuntu编译环境第一次接触晶晨A311D开发板时我也被复杂的编译环境吓到过。但实际搭建起来只要跟着步骤走半小时就能搞定。建议使用Ubuntu 20.04 LTS系统这是经过验证最稳定的选择。我试过在Ubuntu 22.04上编译会遇到一些依赖库版本冲突的问题新手不建议尝试。安装基础工具链时这个组合是我踩过几次坑后总结出来的黄金配置sudo apt-get install -y git-core gnupg flex bison gperf build-essential zip \ curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev \ ccache libgl1-mesa-dev libxml2-utils xsltproc unzip特别提醒两点一定要执行sudo apt update更新软件源否则可能找不到某些包如果遇到依赖冲突可以尝试sudo apt --fix-broken install自动修复交叉编译器的选择很关键。实测发现Linaro 6.3.1版本与A311D的兼容性最好。下载后建议统一存放到/opt/toolchains目录方便管理sudo mkdir -p /opt/toolchains wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz sudo tar xvJf gcc-linaro-*.tar.xz -C /opt/toolchains2. 获取Fenix编译工具链Fenix脚本是Khadas官方提供的编译神器相当于把整个编译流程打包成了自动化工具。我习惯在~/project目录下操作mkdir -p ~/project cd ~/project git clone --depth 1 https://github.com/khadas/fenix克隆完成后先别急着编译。有3个关键配置需要特别注意在env/setenv.sh中检查交叉编译器路径是否正确建议修改build/config/boards/目录下的板级配置国内用户最好设置镜像源加速设置环境变量时有个小技巧先用env/setenv.sh --dry-run预览将要设置的变量确认无误后再实际执行cd fenix source env/setenv.sh3. 固件编译全流程详解3.1 基础固件编译首次编译建议直接运行完整构建命令make这个过程会比较漫长视网络情况约1-3小时因为会下载U-Boot和Linux内核源码构建rootfs基础系统生成最终的.img固件文件我在Jetson Xavier NX上实测编译时间约2小时期间可能会提示输入sudo密码。如果中途断网失败可以尝试make clean make -j$(nproc) # 使用多核加速编译3.2 模块化编译技巧全量编译太耗时试试这些实用命令make uboot # 仅编译U-Boot make kernel # 仅编译Linux内核 make debs # 生成所有Debian软件包有个特别实用的功能是内核菜单配置make kernel-config这会启动经典的Linux内核配置界面可以调整各种驱动和功能选项。修改后记得执行make kernel-saveconfig4. 高级配置与优化4.1 编译加速技巧ccache是提升编译速度的利器但有时会导致奇怪的问题。我建议首次编译时禁用NO_CCACHEyes make对于多核CPU一定要启用并行编译make -j$(nproc) # 使用所有CPU核心4.2 固件定制选项这几个参数在实际项目中很实用COMPRESS_IMAGEyes make # 生成压缩固件节省空间 BUILD_TYPErelease make # 发布模式优化性能 DOWNLOAD_MIRRORchina make # 使用国内镜像加速如果想深度定制可以修改build/config/boards/[板型].conf - 硬件相关配置build/config/system.conf - 系统全局设置build/config/linux/[版本]/defconfig - 内核配置5. 常见问题解决方案5.1 依赖问题处理遇到包缺失错误时先尝试sudo apt update sudo apt --fix-broken install如果提示特定库版本冲突可以指定版本安装sudo apt install libssl1.11.1.1f-1ubuntu25.2 网络问题排查国内用户可能会遇到下载超时建议设置国内镜像源使用proxychains临时加速手动下载缺失的源码包放到dl/目录5.3 固件烧写技巧生成固件后用Etcher工具写入TF卡时注意先sync确保数据写入完成拔插存储设备要彻底断电首次启动建议连接串口查看日志我在实际项目中发现A311D对电源稳定性很敏感。如果遇到随机死机可以尝试更换5V/3A以上的优质电源。另外散热片也是必备的持续高负载运行时SoC温度能到70℃以上。

更多文章