2. 开发环境搭建:工欲善其事,必先利其器
做嵌入式开发,环境搭建是第一道坎。很多新手一上来就急着编译代码,结果被各种依赖问题卡住。我个人习惯是先把环境收拾利索了,后面才能专心搞业务逻辑。这一章咱们就把 Ubuntu 系统、软件源、工具链、Git/Repo 以及 TFTP/NFS 服务器全部搞定。
2.1 安装 Ubuntu 系统
我推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为 Rockchip 官方 SDK 和 Buildroot 长期支持版本都在这两个系统上验证过。你想想看,用太新的系统反而可能遇到库版本不兼容的问题。
安装方式有两种:
- 物理机安装: 性能最好,适合长期开发。建议至少分配 120GB 磁盘空间,8GB 以上内存。
- 虚拟机安装: 用 VirtualBox 或 VMware。我建议给虚拟机分配 4 核 CPU、8GB 内存、80GB 动态扩展磁盘。
2.2 配置国内软件源
Ubuntu 默认的软件源在国外,下载速度很慢。我们换成国内的镜像源,比如清华、阿里、中科大。我个人习惯用清华源,稳定且更新及时。
操作步骤:
- 备份原源文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak - 编辑源文件:
sudo vim /etc/apt/sources.list - 替换为以下内容(以 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 |
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
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 环境验证与测试
装完别急着走,先验证一下:
- Git 测试:
git --version和repo --version都能正常输出。 - TFTP 测试: 在开发板上执行
tftp 192.168.1.100 -g -r uImage,能下载成功。 - NFS 测试: 在开发板上执行
mount -t nfs 192.168.1.100:/srv/nfs/rootfs /mnt,能挂载成功。
如果哪一步卡住了,先检查防火墙:sudo ufw disable。嵌入式开发环境一般在内网,关掉防火墙省心很多。
- ✅ Ubuntu 20.04/22.04 已安装并更新
- ✅ 国内软件源已配置
- ✅ 基础工具链已安装
- ✅ Git 和 Repo 已配置
- ✅ TFTP 和 NFS 服务已启动