瑞芯微RK3568核心板开箱实测:从零开始搭建你的第一个嵌入式Linux系统
当你第一次拿到瑞芯微RK3568核心板时,那种既兴奋又忐忑的心情我完全理解。作为一个从零开始接触嵌入式Linux的开发者,我清楚地记得自己第一次面对这块小巧但功能强大的核心板时的迷茫。本文将带你一步步完成从开箱到系统启动的全过程,避开那些我踩过的坑。
1. 开箱与硬件准备
拆开包装,你会看到一块约信用卡大小的绿色PCB板——这就是RK3568核心板。与普通开发板不同,核心板通常不包含外围接口,需要配合底板使用。我使用的是官方推荐的配套底板,这样可以避免兼容性问题。
核心组件清单:
- RK3568核心板(65mm×55mm)
- 配套底板(含电源接口、USB、网口等)
- 5V/3A电源适配器
- USB转串口调试模块(CH340G芯片)
- 散热片与导热胶
- 40pin排线(用于连接显示器)
注意:市面上有些廉价电源适配器输出电压不稳定,可能导致核心板工作异常。建议使用官方推荐电源或知名品牌产品。
连接核心板到底板时需要格外小心。RK3568使用的是高密度0.5mm间距的连接器,安装时要确保:
- 对齐核心板和底板的连接器标记
- 保持平行下压,避免倾斜
- 听到"咔嗒"声表示安装到位
2. 搭建开发环境
2.1 串口调试工具配置
串口是嵌入式开发的"生命线",RK3568核心板通过UART0提供调试输出。我推荐使用Putty或Minicom作为终端工具,在Windows和Linux下都能良好工作。
连接步骤:
- 将USB转串口模块的TX接核心板的RX(UART0_RXD)
- 将USB转串口模块的RX接核心板的TX(UART0_TXD)
- 接地线(GND)相连
# Linux下查看串口设备 ls /dev/ttyUSB* # 使用minicom连接(波特率1500000) minicom -D /dev/ttyUSB0 -b 1500000常见问题排查:
- 无输出:检查线序是否正确,尝试交换TX/RX
- 乱码:确认波特率设置为1500000
- 设备未识别:检查USB转串口模块驱动是否安装
2.2 编译工具链准备
RK3568使用ARM64架构,需要aarch64交叉编译工具链。我推荐使用Linaro提供的预编译版本:
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz tar xf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz export PATH=$PATH:/path/to/toolchain/bin验证工具链是否正常工作:
aarch64-linux-gnu-gcc --version3. 系统镜像烧写
RK3568支持多种启动方式,我们使用最常用的TF卡启动。官方提供了预编译的Debian和Buildroot镜像,初学者建议从Debian开始。
烧写步骤:
- 下载官方镜像(约500MB)
- 使用Etcher或dd命令写入TF卡
- 插入底板TF卡槽
- 设置启动模式跳线为TF卡启动
# Linux下使用dd命令烧写 sudo dd if=rk3568_debian.img of=/dev/sdX bs=4M status=progress sudo sync提示:首次启动时系统会自动扩展根文件系统,可能需要几分钟时间,请耐心等待。
启动成功后,你会在串口终端看到类似输出:
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050] [ 0.000000] Linux version 4.19.193 (build@rockchip) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)) #1 SMP Fri Jun 18 12:03:39 CST 2021 [ 0.000000] Machine model: Rockchip RK3568 EVB1 DDR4 V10 Board4. 系统配置与开发
4.1 网络连接
RK3568核心板支持千兆以太网和WiFi(部分型号)。有线网络通常会自动获取IP,无线网络需要手动配置:
# 扫描可用WiFi网络 nmcli dev wifi list # 连接网络 nmcli dev wifi connect "SSID" password "PASSWORD" # 查看IP地址 ip a4.2 GPIO控制实战
让我们通过一个简单的LED闪烁示例验证系统工作状态。RK3568的GPIO可以通过sysfs接口控制:
# 导出GPIO(以GPIO0_C5为例,对应底板LED) echo 197 > /sys/class/gpio/export # 设置为输出 echo out > /sys/class/gpio/gpio197/direction # 控制LED echo 1 > /sys/class/gpio/gpio197/value # 亮 echo 0 > /sys/class/gpio/gpio197/value # 灭GPIO编号计算: RK3568使用三维编号系统(bank×32 + group×8 + pin)。例如:
- GPIO0_C5 = 0×32 + 2×8 + 5 = 0 + 16 + 5 = 21
- 但Linux中GPIO编号从GPIO0_A0开始为0,所以GPIO0_C5 = 21 + 176 = 197
4.3 性能测试
RK3568作为中高端SoC,性能表现如何?让我们运行几个简单测试:
# CPU压力测试 stress --cpu 4 --timeout 60 # 内存测试 mbw -n 5 256 # eMMC读写速度 hdparm -Tt /dev/mmcblk0 dd if=/dev/zero of=./testfile bs=1M count=512 conv=fdatasync典型测试结果:
| 测试项目 | 结果 |
|---|---|
| CPU单核性能 | 800 DMIPS |
| 内存带宽 | 约4GB/s |
| eMMC顺序读 | 约150MB/s |
| NPU性能 | 0.8TOPS(INT8) |
5. 进阶开发指南
5.1 内核编译与定制
当需要添加自定义驱动或修改内核配置时,需要从源码编译内核。RK3568的官方内核源码托管在GitHub:
git clone https://github.com/rockchip-linux/kernel -b develop-4.19 cd kernel make ARCH=arm64 rockchip_linux_defconfig make ARCH=arm64 -j$(nproc) Image dtbs编译完成后,将生成的arch/arm64/boot/Image和arch/arm64/boot/dts/rockchip/rk3568-evb.dtb复制到TF卡的boot分区。
5.2 外设开发示例
RK3568丰富的外设接口是其强大之处。以下是一个通过I2C读取传感器数据的Python示例:
import smbus import time # I2C总线1(查看/sys/bus/i2c/devices/确定) bus = smbus.SMBus(1) # 传感器地址(以BMP280为例) address = 0x76 def read_pressure(): # 读取校准数据 dig_P1 = bus.read_word_data(address, 0x8E) # 更多校准参数读取... # 读取原始数据 raw_press = bus.read_i2c_block_data(address, 0xF7, 3) # 数据转换... return pressure while True: print("Pressure: %.2f hPa" % read_pressure()) time.sleep(1)5.3 散热与功耗管理
长时间高负载运行时,RK3568的温度可能达到70°C以上。建议:
- 安装散热片(核心板预留了安装孔)
- 对于密闭环境,考虑增加风扇
- 通过cpufreq调节CPU频率平衡性能与功耗
# 查看温度 cat /sys/class/thermal/thermal_zone0/temp # 设置CPU最大频率(单位kHz) echo 1800000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq第一次成功点亮RK3568上的Linux系统时,那种成就感至今难忘。记得当时为了正确连接串口调试器,我反复检查了三次线序;第一次看到内核启动日志滚动时,差点从椅子上跳起来。嵌入式开发就是这样,每一个小成功都值得庆祝。