2、开发环境搭建:硬件准备与软件工具链安装

说实话,做嵌入式Linux开发,环境搭建这一步最容易被忽视。很多人急着写代码,结果板子点不亮、编译不过,回头才发现是环境没配好。我刚开始做RV1126时也踩过这个坑,今天就把这些经验掰开揉碎讲给你听。

开发环境搭建 硬件准备 核心板 · 底板 · 调试器 软件工具链 交叉编译器 · SDK Ubuntu环境配置 依赖安装 · 环境变量 核心板 底板 调试器 交叉编译器 SDK 依赖库 系统更新 依赖安装 环境变量 开发环境搭建三大核心模块

2.1 硬件准备:你得先有这些家伙

做RV1126开发,硬件是基础。我个人习惯把硬件分成三块来说:核心板、底板、调试器。缺一不可。

2.1.1 核心板

RV1126核心板,说白了就是一颗SoC加上DDR和eMMC,焊在一块小板上。市面上常见的有Firefly、荣品、飞凌几家做的。我建议你选主流厂家的,原因很简单——资料多,遇到问题好搜。

我的建议: 第一次玩,买Firefly的RV1126核心板。社区活跃,SDK也相对完整。我当年图便宜买了个小厂的,结果SDK里缺了一堆驱动,折腾了半个月才跑起来。

2.1.2 底板

底板就是核心板的「座驾」。它提供电源、网口、USB、HDMI、MIPI等接口。一般买核心板时配套买底板就行。注意看底板有没有引出调试串口——这个很重要,后面烧录和调试全靠它。

2.1.3 调试器

调试器这块,我推荐用J-Link或者ST-Link。RV1126支持JTAG和SWD两种调试接口。嗯,这里要注意:

  • JTAG:占用引脚多,但调试功能全
  • SWD:只需要两根线(SWDIO和SWCLK),够用

我个人习惯用SWD模式,省引脚,接线也简单。你想想看,调试时少接几根线,少出多少错。

避坑指南: 我曾经因为调试器线序接反,烧掉了一块核心板。后来学乖了,每次接线前都用万用表量一下。记住:VCC接VCC,GND接GND,别想当然。

2.2 软件工具链安装:让电脑能跟板子说话

硬件准备好了,接下来就是软件。说白了,你的电脑是x86架构,RV1126是ARM架构,你得装个交叉编译器,让电脑能编译出ARM能跑的程序。

2.2.1 交叉编译器安装

RV1126官方推荐使用gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf这个版本。为什么是这个版本?我试过更新的版本,编译出来的内核在RV1126上跑会出段错误。所以,别折腾,用官方推荐的。

安装步骤其实很简单:

  1. 下载交叉编译器压缩包
  2. 解压到 /opt/ 目录
  3. 配置环境变量

具体命令如下:

# 下载(如果网速慢,可以用迅雷)
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz

# 解压
sudo tar -xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C /opt/

# 配置环境变量(加到 ~/.bashrc 末尾)
echo 'export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin' >> ~/.bashrc
source ~/.bashrc

# 验证安装
arm-linux-gnueabihf-gcc --version

验证是否成功: 如果终端输出gcc版本信息,说明安装成功。如果提示「command not found」,检查一下路径写对了没。

2.2.2 SDK获取与配置

RV1126的SDK,官方叫RK1126_SDK。我建议直接从Rockchip的GitHub仓库拉取。不过要注意,SDK很大,包含u-boot、kernel、buildroot等,大概有2-3GB。

拉取SDK的命令:

git clone https://github.com/rockchip-linux/rk1126_sdk.git
cd rk1126_sdk
git submodule update --init --recursive

这里有个坑:git submodule update这一步很容易因为网络问题失败。我遇到过好几次,解决办法是换个网络环境,或者用代理。实在不行,去百度网盘下载别人打包好的SDK。

2.3 Ubuntu开发环境配置:给编译铺好路

Ubuntu环境配置,说白了就是装一堆依赖库。为什么需要这些?因为编译u-boot、kernel、buildroot时,它们会调用各种工具和库。缺一个就编译不过。

2.3.1 系统更新与依赖安装

我习惯用Ubuntu 18.04或20.04 LTS版本。新版本Ubuntu(比如22.04)有些库版本太新,反而会出兼容性问题。

安装依赖:

sudo apt update
sudo apt install -y git make gcc g++ libncurses5-dev \
    build-essential u-boot-tools device-tree-compiler \
    python3 python3-pip python3-dev \
    libssl-dev libffi-dev flex bison
小技巧: 如果你用的是Ubuntu 20.04,记得装 python-is-python3 这个包。因为SDK里有些脚本写死了 python 命令,而20.04默认没有python2。

2.3.2 环境变量配置

为了方便编译,我习惯在 ~/.bashrc 里加几个环境变量:

# RV1126 SDK 路径
export RK_SDK_PATH=/home/yourname/rk1126_sdk

# 交叉编译器路径(如果没加过)
export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin

# 编译时使用的线程数(根据你的CPU核心数调整)
export JOBS=4

配置完记得 source ~/.bashrc 让它生效。

2.3.3 验证环境是否就绪

环境配好了,怎么知道能不能用?我一般会编译一个最简单的hello world试试:

# 写一个测试程序
echo '#include <stdio.h>
int main() {
    printf("Hello RV1126!\n");
    return 0;
}' > hello.c

# 用交叉编译器编译
arm-linux-gnueabihf-gcc -o hello hello.c

# 查看生成的文件信息
file hello

如果输出显示 ELF 32-bit LSB executable, ARM,说明交叉编译器工作正常。如果显示 x86-64,说明你用的是本机gcc,路径没配对。

注意: 这个hello程序不能在电脑上直接运行,它是ARM架构的。你得把它传到板子上才能跑。怎么传?后面章节会讲。

2.4 小结

环境搭建这块,说白了就是三板斧:硬件准备好、交叉编译器装好、Ubuntu依赖配好。我见过太多人卡在这一步,其实只要按部就班来,不会出大问题。

如果你在搭建过程中遇到问题,先检查:

  • 硬件接线对不对(尤其是串口和调试器)
  • 交叉编译器路径配没配
  • 依赖库装没装全

嗯,把这些搞定了,后面写驱动、调内核就顺风顺水了。


可可精品资料库