当前位置: 首页 > news >正文

保姆级教程:在Ubuntu 18.04上为爱芯元智AX630A编译Linux系统镜像(含完整依赖包清单)

从零构建AX630A嵌入式Linux系统的全流程实战指南

当第一次拿到爱芯元智AX630A开发板时,许多开发者都会面临一个共同挑战:如何快速搭建起完整的Linux开发环境?不同于常见的树莓派或Jetson系列,这款国产AI芯片的开发环境配置有着自己独特的工具链和依赖要求。本文将带你从一台干净的Ubuntu 18.04主机开始,逐步完成从环境配置到镜像烧录的全过程,特别针对那些容易导致编译失败的依赖项进行重点说明。

1. 开发环境的基础配置

在开始AX630A的SDK编译之前,我们需要确保Ubuntu系统具备所有必要的编译工具和库文件。Ubuntu 18.04作为长期支持版本,其软件仓库中的包版本与AX630A SDK有着最佳的兼容性。以下是分步骤的环境准备指南:

1.1 系统级依赖安装

执行以下命令安装基础编译工具链和32位兼容库:

sudo apt-get update && sudo apt-get install -y \ build-essential \ make \ gcc \ g++ \ gdb \ libgcc1 \ u-boot-tools \ device-tree-compiler

对于嵌入式开发特别关键的32位兼容库,需要单独安装:

sudo apt-get install -y \ libc6:i386 \ lib32stdc++6 \ lib32z1

提示:如果在安装过程中遇到"无法定位软件包"错误,请先执行sudo dpkg --add-architecture i386启用32位架构支持

1.2 内核编译专用工具

Linux内核编译需要一组特定的工具链,这些工具往往容易被忽略:

工具名称作用安装命令
bison语法分析器生成器sudo apt-get install bison
flex词法分析器生成器sudo apt-get install flex
ncurses终端界面库sudo apt-get install libncurses5-dev ncurses-term libncursesw5-dev
openssl加密支持sudo apt-get install libssl-dev openssl

1.3 Shell环境配置

AX630A的编译脚本对shell环境有特殊要求,需要将默认的dash切换为bash:

sudo dpkg-reconfigure dash

在出现的对话框中选择"No",保持系统使用bash作为默认shell。

2. 交叉编译工具链部署

AX630A采用ARM Cortex-A53架构,需要在x86主机上安装对应的交叉编译工具链。Linaro提供的GCC 7.5版本与AX630A SDK兼容性最佳。

2.1 工具链下载与安装

创建专用目录并下载工具链:

sudo mkdir -p /usr/local/ARM-toolchain cd /usr/local/ARM-toolchain sudo wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

2.2 环境变量配置

将工具链路径添加到系统环境变量中:

echo 'export PATH="/usr/local/ARM-toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/:$PATH"' | sudo tee -a /etc/profile source /etc/profile

验证安装是否成功:

aarch64-linux-gnu-gcc -v

正常情况应显示类似以下版本信息:

gcc version 7.5.0 (Linaro GCC 7.5-2019.12)

3. SDK解压与内核准备

爱芯元智提供的SDK包包含了uboot、内核以及各种外设驱动,是整个开发环境的核心。

3.1 SDK解压流程

将获取到的SDK压缩包传输到Ubuntu系统后,执行解压操作:

tar -xvf AX630A_SDK_V1.50.0_20220328180857_NO1097.tgz cd AX630A_SDK_V1.50.0_xxxxx ./sdk_unpack.sh

注意:执行此脚本需要保持网络连接,因为它会自动下载Linux内核源码并打补丁

3.2 手动内核配置(可选)

如果网络环境受限,可以预先下载好内核源码:

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.125.tar.gz ./sdk_unpack.sh ~/linux-4.19.125.tar.gz

4. 系统镜像编译与生成

进入SDK的build目录,开始正式的编译过程:

cd AX630A_SDK_V1.50.0_xxxxx/build make p=AX630A_demo clean all install axp

编译过程可能会持续20-60分钟,取决于主机性能。成功编译后会在build目录下生成out文件夹,其中包含以下关键文件:

  • AX630A_demo/:包含所有生成的镜像文件
    • fdl1.bin:第一阶段引导加载程序
    • fdl2.bin:第二阶段引导加载程序
    • u-boot.bin:U-Boot引导程序
    • boot.img:内核和initramfs
    • rootfs.img:根文件系统
  • AX630A_demo_vX.X.X_xxxxxxxxxx.axp:打包好的完整系统镜像

5. 镜像烧录到eMMC存储

AX630A开发板支持从eMMC启动,我们需要将编译好的系统镜像烧录到板载存储中。

5.1 Windows端工具准备

  1. 从SDK的tools/pc_tools/目录获取:

    • Driver_V1.20.46.1.7z:USB驱动
    • AXDL.exe:烧录工具
  2. 解压驱动包并安装驱动程序

  3. 将AXDL工具解压到方便访问的目录

5.2 开发板进入烧录模式

  1. 找到开发板上的拨码开关S1,将第5位拨到右侧
  2. 按住SW2按键不松开
  3. 按下SW1按键一次
  4. 通过USB线连接开发板与电脑

5.3 使用AXDL工具烧录

  1. 运行AXDL.exe
  2. 点击工具栏的"axp加载"按钮,选择生成的.axp文件
  3. 点击"设置"按钮,确认各项参数
  4. 在Options页面勾选"Uart Download"和"Upgrade Frequency"
  5. 点击"开始"按钮后给开发板上电

烧录过程通常需要3-5分钟,进度条会显示当前状态。完成后开发板会自动重启进入新系统。

6. 常见问题排查指南

在实际操作过程中,可能会遇到以下典型问题:

问题1:编译时提示缺少头文件

  • 原因:某些开发库未安装完整
  • 解决:根据错误信息安装对应的-dev包,例如:
    sudo apt-get install zlib1g-dev

问题2:工具链命令未找到

  • 原因:环境变量未正确加载
  • 解决:重新执行source /etc/profile或重启终端

问题3:烧录工具无法识别设备

  • 检查步骤:
    1. 确认驱动程序已正确安装
    2. 确保开发板进入了正确的下载模式
    3. 尝试更换USB端口或数据线

问题4:内核编译卡死

  • 可能原因:主机内存不足
  • 解决方案:增加swap空间或使用make -jN中的N调小并行编译任务数

对于更复杂的问题,建议查看SDK目录下的doc/文件夹中的技术文档,或联系爱芯元智的技术支持团队。

http://www.jsqmd.com/news/679490/

相关文章:

  • Harness 中的动态批处理:合并多个轻量请求
  • MyBatisPlus条件构造器避坑指南:为什么你的eq查询有时会漏数据?
  • 保姆级教程:用Python的data_downloader包搞定Sentinel-1精密轨道数据下载(含NASA账号配置)
  • 告别‘找不到磁盘’:用ESXi-Customizer-PS为任意品牌服务器定制带驱动的ESXi 6.7安装镜像
  • Tsukimi播放器技术深度解析:Rust与GTK4构建的现代化媒体中心架构
  • 收藏!2026年85%企业必做AI大模型应用,程序员/小白入门必看
  • VisionMaster脚本模块实战:用C#实现条码识别结果自动写入日志文件
  • 从‘仅追加’到‘伪更新’:深入拆解Elasticsearch Data Streams的底层机制与灵活操作
  • STM32 HAL库实战:PWM输出在写Flash时如何避免舵机抖动?一个真实案例的两种解法
  • 别扔!手把手教你用U盘和Telnet救活WD MyCloud Gen2变砖(保姆级图文教程)
  • 从一条CAN报文说起:深入理解J1939多帧传输(BAM/TP.DT)的底层逻辑与抓包分析
  • 全面掌控英雄联盟游戏体验:基于LCU API的智能自动化工具集深度解析
  • 收藏|2026最新版大语言模型(LLM)系统化学习路线,小白程序员都适用
  • DataGrip连接MySQL报错‘无效时区’?5分钟搞定配置并解锁它的SQL智能补全
  • CN3392 PFM 升压型双节锂电池充电控制集成电路
  • 强化学习核心算法与工程实践全解析
  • 2026年泥浆压滤机租赁排行:河道泥浆固化机/河道清淤压滤机/泥浆脱水机/湖泊清淤泥浆固化机/电厂脱硫专用压滤机/选择指南 - 优质品牌商家
  • Cadence IC617实战:手把手教你用Virtuoso仿真共源级放大器(含电阻负载分析)
  • 别再让IT团队管车了!聊聊车企搭建VSOC(车辆安全运营中心)必须独立的5个坑
  • 【电池-超级电容器混合存储系统】单机光伏电池-超级电容混合储能系统的能量管理系统附Simulink仿真
  • AI Agent Harness Engineering 辅助创意设计:从 Midjourney 到自主设计
  • 计算机毕业设计:Python农产品电商数据可视化分析大屏 Flask框架 数据分析 可视化 机器学习 数据挖掘 大数据 大模型(建议收藏)✅
  • VSCode集成ChatGPT提升开发效率全指南
  • 保姆级教程:在Ubuntu 20.04上搞定arm-linux-gnueabi交叉编译环境(含libmpfr.so.4报错解决方案)
  • CN3862 具有太阳能最大功率点跟踪功能的降压型 4A 两节锂电池充电管理集成电路
  • 别再只测距了!用HC-SR04+STM32做个智能防撞小车(附完整代码)
  • 别再死记硬背了!一张图帮你搞懂SRv6里那些‘End.X’、‘End.DT4’指令到底在干啥
  • 【电磁】两个不同介电常数的区域2D FDTD研究附Matlab代码
  • Buildroot启动报错‘/dev/console找不到’?手把手教你排查mdev与设备节点问题
  • 从AUTOSAR标准看VCU/MCU/BMS开发:为什么说软件定义汽车时代,架构先行?