2. 开发环境搭建:工欲善其事,必先利其器

做嵌入式开发,环境搭建是第一道坎。很多新手一上来就急着编译代码,结果被各种依赖问题卡住。我个人习惯是先把环境收拾利索了,后面才能专心搞业务逻辑。这一章咱们就把 Ubuntu 系统、软件源、工具链、Git/Repo 以及 TFTP/NFS 服务器全部搞定。

本章核心目标: 搭建一套可复用的 Rockchip 开发环境,确保后续所有实验都能顺畅运行。

2.1 安装 Ubuntu 系统

我推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为 Rockchip 官方 SDK 和 Buildroot 长期支持版本都在这两个系统上验证过。你想想看,用太新的系统反而可能遇到库版本不兼容的问题。

安装方式有两种:

  • 物理机安装: 性能最好,适合长期开发。建议至少分配 120GB 磁盘空间,8GB 以上内存。
  • 虚拟机安装: 用 VirtualBox 或 VMware。我建议给虚拟机分配 4 核 CPU、8GB 内存、80GB 动态扩展磁盘。
我的经验: 如果你用虚拟机,记得开启 CPU 的虚拟化支持(VT-x/AMD-V)。否则编译速度会慢得让你怀疑人生。

2.2 配置国内软件源

Ubuntu 默认的软件源在国外,下载速度很慢。我们换成国内的镜像源,比如清华、阿里、中科大。我个人习惯用清华源,稳定且更新及时。

操作步骤:

  1. 备份原源文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 编辑源文件:sudo vim /etc/apt/sources.list
  3. 替换为以下内容(以 Ubuntu 20.04 为例):
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

然后执行 sudo apt update 和 sudo apt upgrade。嗯,这里要注意:如果你用的是 22.04,把 focal 换成 jammy。

2.3 安装必要工具链

Buildroot 本身会下载交叉编译工具链,但宿主机上需要一些基础工具。我整理了一个最小安装清单:

工具/库 用途 安装命令
build-essential 基础编译工具(gcc, g++, make) sudo apt install build-essential
libncurses-dev menuconfig 图形界面依赖 sudo apt install libncurses-dev
flex, bison 词法/语法分析器 sudo apt install flex bison
libssl-dev OpenSSL 开发库 sudo apt install libssl-dev
u-boot-tools U-Boot 镜像制作工具 sudo apt install u-boot-tools
device-tree-compiler 设备树编译工具 sudo apt install device-tree-compiler
避坑提醒: 我曾经在 Ubuntu 22.04 上遇到过 libncurses-dev 版本不兼容的问题。如果 menuconfig 界面花屏,试试安装 libncurses5-dev 替代。

2.4 配置 Git 与 Repo

Rockchip 的 SDK 用 Repo 管理多个 Git 仓库。说白了,Repo 就是一个 Python 脚本,帮你批量操作多个 Git 仓库。

安装 Git:

sudo apt install git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

安装 Repo:

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
小技巧: 如果 Google 的 Repo 源下载慢,可以用清华的镜像:export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'。我每次搭建新环境都会先设这个变量。

2.5 搭建 TFTP/NFS 服务器

这两个服务在嵌入式开发中非常实用。TFTP 用来通过网络下载内核和设备树,NFS 用来挂载根文件系统。调试阶段不用反复烧写 SD 卡或 eMMC,效率提升很明显。

2.5.1 安装 TFTP 服务器

sudo apt install tftpd-hpa
sudo systemctl start tftpd-hpa
sudo systemctl enable tftpd-hpa

默认目录是 /srv/tftp。把编译好的 uImage、rkxxxx.dtb 放进去就行。我习惯把目录权限改成 777:

sudo chmod 777 /srv/tftp

2.5.2 安装 NFS 服务器

sudo apt install nfs-kernel-server
sudo mkdir -p /srv/nfs/rootfs

编辑 /etc/exports,添加:

/srv/nfs/rootfs *(rw,sync,no_subtree_check,no_root_squash)

重启服务:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server
注意: no_root_squash 允许客户端以 root 权限访问。调试时很方便,但生产环境不要这么干。我曾经因为忘记关这个选项,导致一个测试脚本误删了宿主机文件……嗯,从那以后我调试完就立刻改回 root_squash。

2.6 环境验证与测试

装完别急着走,先验证一下:

  1. Git 测试: git --version 和 repo --version 都能正常输出。
  2. TFTP 测试: 在开发板上执行 tftp 192.168.1.100 -g -r uImage,能下载成功。
  3. NFS 测试: 在开发板上执行 mount -t nfs 192.168.1.100:/srv/nfs/rootfs /mnt,能挂载成功。

如果哪一步卡住了,先检查防火墙:sudo ufw disable。嵌入式开发环境一般在内网,关掉防火墙省心很多。

最终检查清单:
  • ✅ Ubuntu 20.04/22.04 已安装并更新
  • ✅ 国内软件源已配置
  • ✅ 基础工具链已安装
  • ✅ Git 和 Repo 已配置
  • ✅ TFTP 和 NFS 服务已启动
开发环境搭建流程 Ubuntu 系统安装 配置国内软件源 安装必要工具链 配置 Git 与 Repo 搭建 TFTP/NFS 服务器 关键提示 • 推荐 Ubuntu 20.04/22.04 • 清华源速度最快 • 记得关防火墙 避坑指南 • menuconfig 花屏装 libncurses5-dev • NFS 用 no_root_squash