在Ubuntu 18.04上构建东山Pi壹号开发板SDK编译环境的完整指南

第一次接触嵌入式开发的朋友,面对开发板配套的SDK编译环境搭建,往往会遇到各种意想不到的问题。特别是当官方文档过于简略,或者网络教程与你的实际环境存在差异时,一个简单的 make 命令可能就会让你卡住好几个小时。本文将基于Ubuntu 18.04系统和阿里云软件源,带你一步步搭建东山Pi壹号开发板的完整编译环境,并解决那些官方文档没告诉你的"坑"。

东山Pi壹号开发板作为一款性价比极高的Linux开发板,搭载星宸科技SSD202D芯片,非常适合作为嵌入式Linux开发的入门选择。但在开始开发前,一个稳定可靠的编译环境是必不可少的。不同于普通的应用开发,嵌入式开发需要特定的工具链、库文件和环境配置,任何一个小环节的疏漏都可能导致后续编译失败。

1. 系统准备与基础环境配置

1.1 Ubuntu 18.04系统选择与初始化

为什么选择Ubuntu 18.04?这是大多数嵌入式SDK官方测试和支持的LTS版本,能够最大程度避免因系统版本导致的兼容性问题。如果你使用的是其他版本,特别是较新的发行版,可能会遇到各种库版本冲突。

首先更新系统并切换为阿里云镜像源以加速软件下载:

sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y

安装基础开发工具集:

sudo apt install -y build-essential git wget curl

1.2 解决32位库依赖问题

嵌入式开发经常需要兼容32位库,这是新手最容易踩的坑之一。在64位系统上编译ARM架构的代码,需要安装以下关键库:

sudo apt install -y libc6-dev-i386 lib32z1 lib32ncurses5 lib32stdc++6

常见问题排查:

  • 如果遇到 E: Unable to locate package lib32z1 错误,尝试先执行 sudo dpkg --add-architecture i386 再更新软件源
  • 某些情况下可能需要手动安装特定版本的库文件,保持版本一致性很重要

2. 开发板SDK环境搭建

2.1 获取SDK源码

东山Pi壹号开发板使用 repo 工具管理多个Git仓库。首先安装必要的工具:

sudo apt install -y repo git python

创建工作目录并初始化repo:

mkdir -p ~/dongshanpi/sdk && cd ~/dongshanpi/sdk
git clone https://e.coding.net/codebug8/repo.git
./repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m SSD202D/dongshanpi-one_takoyaki_dlc00v030.xml --no-repo-verify

同步代码仓库(根据网络情况可能需要较长时间):

./repo/repo sync -j4

网络问题解决方案

  • 如果遇到同步失败,可以尝试修改repo的URL为国内镜像源
  • 对于大仓库,使用 -j4 参数限制并发数可以减少失败概率
  • 可以编写自动重试脚本处理网络中断情况

2.2 交叉编译工具链配置

东山Pi壹号开发板使用arm-linux-gnueabihf工具链。SDK中通常已经包含了预编译的工具链,位于 sdk/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf 目录。

永久添加工具链到PATH环境变量:

echo 'export PATH=$PATH:~/dongshanpi/sdk/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin' >> ~/.bashrc
source ~/.bashrc

验证工具链安装:

arm-linux-gnueabihf-gcc --version

预期输出应显示gcc版本为8.2.1。如果出现"command not found"错误,检查:

  1. 工具链路径是否正确
  2. 是否执行了 source ~/.bashrc
  3. 工具链是否具有可执行权限

3. 编译内核与U-Boot

3.1 内核编译配置

进入内核目录并设置环境变量:

cd ~/dongshanpi/sdk/kernel
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-

选择正确的配置文件:

make infinity2m_spinand_ssc011a_s01a_minigui_defconfig

配置技巧

  • 使用 make menuconfig 可以交互式调整内核配置
  • 修改配置后建议保存为新的defconfig文件以便复用
  • 对于嵌入式系统,合理裁剪不需要的模块可以显著减小内核体积

开始编译内核:

make -j$(nproc)

编译完成后,内核镜像位于 arch/arm/boot/uImage.xz 。编译过程中可能遇到的问题:

  1. 头文件缺失 :安装对应的开发包,如 libssl-dev
  2. 工具链不匹配 :确保使用SDK提供的工具链而非系统自带版本
  3. 权限问题 :避免在root用户下编译,可能导致后续烧写问题

3.2 U-Boot编译与烧写

U-Boot是嵌入式系统的引导加载程序,编译过程类似内核:

cd ~/dongshanpi/sdk/u-boot
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make infinity2m_spinand_defconfig
make -j$(nproc)

生成的U-Boot镜像通常为 u-boot.bin 。烧写方法取决于你的具体硬件连接方式:

  1. 通过USB烧写 :需要使用专用工具如 upgrade_tool
  2. 通过TF卡烧写 :将镜像写入特定偏移地址
  3. 通过串口烧写 :使用 kermit minicom 配合传输协议

4. 文件系统构建与完整镜像生成

4.1 构建根文件系统

东山Pi壹号开发板通常使用Buildroot或Yocto构建根文件系统。以Buildroot为例:

cd ~/dongshanpi/sdk/buildroot
make dongshanpi_one_defconfig
make

构建过程可能需要下载大量软件包,建议保持网络畅通。常见问题:

  • 下载失败 :手动下载包并放入 dl/ 目录
  • 编译错误 :检查依赖是否满足,特别是host工具链
  • 空间不足 :Buildroot需要至少15GB空闲空间

4.2 生成完整系统镜像

将内核、U-Boot和文件系统打包为完整镜像:

cd ~/dongshanpi/sdk/tools
./mkimage.sh

生成的镜像通常为 .img 格式,可以直接烧写到SPI NAND或SD卡。烧写工具的使用方法:

sudo ./upgrade_tool ul output/image.img

烧写注意事项

  1. 确认设备节点正确(如/dev/sdb)
  2. 备份重要数据,烧写过程会擦除目标设备
  3. 对于NAND Flash,可能需要先擦除特定分区

5. 开发环境优化与调试技巧

5.1 开发效率提升工具

  1. CCACHE加速编译

    sudo apt install ccache
    export CCACHE_DIR="$HOME/.ccache"
    export USE_CCACHE=1
    ccache -M 10G
    
  2. 分布式编译 :使用distcc在多台机器上分布式编译

  3. 自动化脚本 :编写Makefile或Shell脚本自动化常见任务

5.2 常见问题解决方案

问题1 fatal error: openssl/opensslv.h: No such file or directory 解决 sudo apt install libssl-dev

问题2 arm-linux-gnueabihf-gcc: not found 解决 :检查工具链路径,确保~/.bashrc已生效

问题3 repo sync 失败 解决 :设置git代理或更换国内镜像源

问题4 :内核编译时内存不足 解决 :减少并行编译任务数 make -j2

5.3 调试手段

  1. 串口调试 :配置 minicom screen 查看启动日志

    sudo apt install minicom
    sudo minicom -D /dev/ttyUSB0 -b 115200
    
  2. 网络调试 :配置NFS根文件系统加速开发

  3. 日志分析 :使用 dmesg logcat 查看系统日志

在实际项目中,我发现最耗时的往往不是代码编写,而是环境搭建和调试。特别是当遇到库版本冲突时,一个简单的 apt-get install 可能就会引入不兼容的版本。我的经验是:严格按照SDK要求的版本安装依赖,并做好环境隔离。使用Docker容器或虚拟机可以避免污染主机环境,也方便团队共享相同的开发环境。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐