1. RV1126平台概述:芯片特性、应用场景、开发板介绍、开发环境搭建
好,咱们直接进入正题。RV1126这颗芯片,我接触它也有两三年了。说实话,第一次拿到样片时,我还有点怀疑——一颗国产芯片,真能扛住AI视觉这种高负载场景吗?后来做了几个项目,嗯,它确实没让我失望。
1.1 芯片特性:这颗芯片到底强在哪?
RV1126是瑞芯微推出的一款AI视觉处理器。它基于四核Cortex-A7架构,主频最高1.5GHz。你可能会问,A7架构是不是有点老了?其实不然。在嵌入式领域,A7的功耗控制非常出色,配合瑞芯微自研的NPU,算力能达到2.0 TOPS。
我个人习惯把它的核心特性归纳为三点:
- 视觉处理能力:内置ISP(图像信号处理器),支持最大500万像素的摄像头输入。我做过一个项目,用单颗RV1126同时处理两路1080P视频流,CPU占用率才60%左右。
- AI加速引擎:NPU支持INT8量化,实测MobileNet V1推理速度能达到30fps以上。说白了,做轻量级AI应用完全够用。
- 丰富的外设接口:包括千兆以太网、USB 3.0、MIPI CSI/DSI、I2S音频接口等。你想想看,做智能摄像头或者边缘计算盒子,这些接口基本都能覆盖。
核心参数速览
| CPU | 四核Cortex-A7,最高1.5GHz |
| NPU | 2.0 TOPS,支持INT8/INT16 |
| ISP | 500万像素,支持HDR |
| 内存 | 支持LPDDR4/LPDDR3,最大4GB |
| 视频编解码 | H.264/H.265,4K@30fps编码 |
1.2 应用场景:它适合做什么?
从我实际接触的项目来看,RV1126最常见的应用场景有三个:
- 智能安防摄像头:比如人脸识别门禁、车牌识别。我记得有个客户做小区门禁,要求识别速度低于200ms,RV1126配合轻量级模型,实测能做到150ms以内。
- 边缘计算盒子:把AI推理放在设备端,不用依赖云端。我曾经帮一个工厂做过产线质检,用RV1126跑缺陷检测模型,准确率能到98%。
- 智能家居中控:带屏幕显示和语音交互。RV1126的MIPI DSI接口可以直接驱动LCD屏,I2S接口接麦克风阵列,一套芯片搞定。
我的经验:如果你做的是电池供电的设备,记得把CPU频率降到800MHz左右。我在一个户外摄像头项目里试过,降频后功耗从2.5W降到了1.2W,续航直接翻倍。
1.3 开发板介绍:我推荐哪块板子?
市面上RV1126的开发板不少,但我用得最多的是瑞芯微官方的RV1126 EVB。为什么?因为它的原理图和SDK都是官方维护的,遇到问题好查资料。
这块板子的主要接口包括:
- 1个千兆以太网口
- 2个USB 3.0 Host接口
- 1个MIPI CSI摄像头接口(4-lane)
- 1个MIPI DSI显示接口
- 1个TF卡槽
- 40pin GPIO扩展接口
嗯,这里要注意:EVB板子的电源是12V/2A的,别用手机充电器去试,带不动的。我曾经有个学员就是插了5V电源,结果板子一直重启,折腾了半天才发现是供电不足。
1.4 开发环境搭建:交叉编译链与SDK目录结构
这部分是实操重点。我假设你用的是Ubuntu 20.04系统,64位的。
1.4.1 安装交叉编译链
瑞芯微官方提供了基于GCC的交叉编译工具链。你从SDK里就能找到,路径在 prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf。
安装步骤很简单:
# 解压交叉编译链
tar -xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
# 配置环境变量(建议写到 ~/.bashrc 里)
export PATH=$PATH:/your_path/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin
# 验证是否安装成功
arm-linux-gnueabihf-gcc --version
如果看到版本号输出,说明交叉编译链装好了。我习惯用 arm-linux-gnueabihf- 这个前缀,因为RV1126的Cortex-A7是ARMv7-A架构,支持硬件浮点。
避坑指南:我曾经遇到过一个问题——编译出来的程序在板子上跑不起来,提示"Floating point exception"。后来发现是交叉编译链版本不对。RV1126必须用gcc-arm-8.3或更高版本,低版本编译出来的浮点指令不兼容。
1.4.2 SDK目录结构解析
瑞芯微的SDK叫 rv1126_sdk,解压后大概长这样:
rv1126_sdk/
├── app/ # 上层应用示例代码
├── buildroot/ # 根文件系统构建工具
├── device/ # 设备树、分区表等
├── docs/ # 文档(英文为主)
├── kernel/ # Linux内核源码(4.19版本)
├── prebuilts/ # 交叉编译链、工具链
├── u-boot/ # U-Boot引导程序
├── Makefile # 顶层编译脚本
└── README.md # 说明文件
我个人觉得,刚开始接触时最需要关注的是 kernel/ 和 device/ 这两个目录。内核驱动开发主要改 kernel/drivers/ 下的文件,而设备树文件在 device/rockchip/rv1126/ 里。
举个例子,如果你想添加一个I2C设备,需要修改设备树文件 rv1126-evb.dts,然后在 kernel/drivers/i2c/ 里写驱动。这个流程我后面会详细讲。
1.4.3 编译SDK的完整流程
第一次编译SDK,建议按这个步骤来:
# 1. 安装依赖包
sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler mtools parted
# 2. 配置编译环境
source buildroot/build/envsetup.sh
# 3. 选择板型(EVB板选 rv1126_evb)
make rv1126_evb_defconfig
# 4. 开始编译(第一次编译约30分钟)
make -j4
编译完成后,生成的镜像文件在 output/images/ 目录下。包括 boot.img、rootfs.img、u-boot.img 等。
我的习惯:第一次编译时,我会用 make -j4 2>&1 | tee build.log 把编译日志保存下来。万一编译出错,直接看日志最后几行就能定位问题,不用重新跑一遍。
1.5 本章知识体系总览
为了让你更直观地理解本章内容,我画了一张结构图:
这张图把本章的核心内容串起来了。芯片特性是基础,应用场景告诉你它能做什么,开发板是硬件载体,环境搭建是动手的第一步。后面所有的驱动开发,都建立在这四个支柱之上。
可可精品资料库