完整工作流程
最简流程(推荐新手):
- 下载镜像 → 2. 烧录 SD 卡 → 3. 启动开发板 → 4. 开发应用
完整流程(进阶):
- 安装工具链 → 2. 获取/编译镜像 → 3. 烧录 → 4. 启动 → 5. 交叉编译开发
1. 安装交叉编译工具链(可选)
只在需要交叉编译时才需要安装:
aarch64-linux-gnu工具链可以编译任何 ARM 64位架构的程序- 针对 ARMv8-A 架构的代码基本通用
- 但不同芯片可能支持不同的指令集扩展(如 NEON、SVE 等)
方法1:apt 安装(最简单)
c++
# 方法1:apt 安装(最简单)
# 直接安装 Ubuntu 提供的交叉编译工具链
sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
aarch64-linux-gnu-gcc --version # 验证版本
查看所有安装的交叉编译工具ls /usr/bin/aarch64-linux-gnu-*
方法2:手动下载配置
C++
# 方法2:手动下载配置
# 从官网或镜像下载工具链
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
# 解压到 /opt
# 配置环境变量
方法3:Linaro 工具链
C++
# 方法3:Linaro 工具链
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
# 从镜像站下载
# 配置环境变量
配置编译环境
针对手动解压到 /opt 的工具链
C++
export CROSS_COMPILE=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
export LD_LIBRARY_PATH=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export PATH=$PATH:/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/
export ARCH=arm64
针对apt安装的
c
只需要设置这两个(如果需要编译内核/驱动)
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
1. CROSS_COMPILE(需要,但路径不同)
js
# 原来的(指向 /opt 下的工具链)
export CROSS_COMPILE=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
# 你现在的(系统已经识别)
export CROSS_COMPILE=aarch64-linux-gnu-
2. LD_LIBRARY_PATH(不需要)
c
# 原来的工具链需要手动指定库路径
# 你的工具链库已经在系统标准路径中
# /usr/lib/gcc-cross/aarch64-linux-gnu/
3. PATH(不需要)
c
# 你的工具链已经在 /usr/bin/ 中
# 系统默认就会搜索这个路径
4. ARCH(根据需要设置)
c
# 只在编译内核时需要
export ARCH=arm64
2. 获取系统镜像
方式1:下载预编译镜像(推荐)
c
# 直接从官网下载
# 不需要编译
# 省时省力
方式2:编译系统镜像(进阶)
c
# 下载 rdk-gen
git clone https://github.com/HorizonRDK/rdk-gen.git
# 编译(但可能遇到服务器问题)
sudo ./pack_image.sh
什么情况下需要编译系统镜像
需要自己编译的情况:
- 深度定制系统(修改内核配置、驱动)
- 裁剪系统大小(嵌入式应用)
- 添加私有驱动程序
- 修改启动流程
- 学习系统构建过程
不需要自己编译的情况(大多数场景):
- 使用开发板进行应用开发
- 运行 AI 算法和模型
- 测试和部署应用程序
- 学习和教学
- 使用标准功能
3. 烧录到 SD 卡
工具选择:
c
# Windows:
- Rufus(推荐)
- balenaEtcher
- Win32DiskImager
# Linux:
- dd 命令
sudo dd if=image.img of=/dev/sdX bs=4M status=progress
烧录后的完整工作流程
C++
# 1. 开发板上电启动
# 2. 系统自动初始化
# 3. 登录系统
# 4. 配置网络
# 5. 开始开发/使用
Windows 上烧录镜像和ubuntu烧录的区别
Windows 烧录
- 使用图形化工具(balenaEtcher、Rufus等)
- 操作简单直观,适合新手
- 不需要记忆命令
- 有进度条和提示
下载镜像 → 安装工具 → 打开工具 → 选择文件 → 选择SD卡 → 点击烧录 → 等待完成 时间:约10-15分钟(含工具操作)
Ubuntu 烧录
- 使用命令行(dd命令)
- 操作快速高效
- 需要知道设备名
- 适合熟悉 Linux 的用户
下载镜像 → 解压 → 插入SD卡 → lsblk查看设备 → dd烧录 → sync 时间:约5-10分钟(熟练后)
详细对比
| 特性 | Windows | Ubuntu |
|---|---|---|
| 工具 | balenaEtcher/Rufus(图形界面) | dd 命令(命令行) |
| 难度 | ⭐ 简单 | ⭐⭐⭐ 需要小心 |
| 速度 | 较慢(工具开销) | 较快(直接写入) |
| 安全性 | 有保护(防止选错盘) | 需自己确认设备名 |
| 进度显示 | 图形化进度条 | 命令行进度 |
| 验证 | 自动验证 | 需手动验证 |
| 压缩格式 | 自动处理 .xz/.zip | 需先解压 |
4. 固件说明
通常不需要烧录固件:
c
# 出厂已预装 Bootloader
# 只有变砖时才需要重新烧录
# 正常使用完全不用管
固件和系统的区别
| 项目 | 存储位置 | 谁提供 | 需要烧录? |
|---|---|---|---|
| 固件(Bootloader) | NAND Flash | 出厂预装 | ❌ 不需要 |
| 系统镜像(Ubuntu) | SD 卡 | 你下载 | ✅ 需要 |
启动流程说明
js
开发板上电启动流程:
1. NAND Flash 中的 Bootloader 启动(已有)
↓
2. 检测 SD 卡
↓
3. 从 SD 卡加载系统(你需要烧录的)
↓
4. 进入 Ubuntu 系统
5. 开始开发
开发方式:
方式1:直接在开发板上开发
C++
# SSH 连接
ssh sunrise@192.168.x.x
# 安装开发工具
sudo apt install build-essential python3-pip git
# 直接写代码编译
gcc -o app app.c
./app
方式2:交叉编译后部署
c
# 在 PC 上编译
aarch64-linux-gnu-gcc -o app app.c
# 传输到开发板
scp app sunrise@192.168.x.x:/home/sunrise/
# 在开发板上运行
ssh sunrise@192.168.x.x
./app