瑞芯微RK3568核心板开箱实测:从零开始搭建你的第一个嵌入式Linux系统

瑞芯微RK3568核心板开箱实测:从零开始搭建你的第一个嵌入式Linux系统 瑞芯微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接核心板的RXUART0_RXD将USB转串口模块的RX接核心板的TXUART0_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 ifrk3568_debian.img of/dev/sdX bs4M statusprogress sudo sync提示首次启动时系统会自动扩展根文件系统可能需要几分钟时间请耐心等待。启动成功后你会在串口终端看到类似输出[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050] [ 0.000000] Linux version 4.19.193 (buildrockchip) (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 1974.3 性能测试RK3568作为中高端SoC性能表现如何让我们运行几个简单测试# CPU压力测试 stress --cpu 4 --timeout 60 # 内存测试 mbw -n 5 256 # eMMC读写速度 hdparm -Tt /dev/mmcblk0 dd if/dev/zero of./testfile bs1M count512 convfdatasync典型测试结果测试项目结果CPU单核性能800 DMIPS内存带宽约4GB/seMMC顺序读约150MB/sNPU性能0.8TOPS(INT8)5. 进阶开发指南5.1 内核编译与定制当需要添加自定义驱动或修改内核配置时需要从源码编译内核。RK3568的官方内核源码托管在GitHubgit clone https://github.com/rockchip-linux/kernel -b develop-4.19 cd kernel make ARCHarm64 rockchip_linux_defconfig make ARCHarm64 -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系统时那种成就感至今难忘。记得当时为了正确连接串口调试器我反复检查了三次线序第一次看到内核启动日志滚动时差点从椅子上跳起来。嵌入式开发就是这样每一个小成功都值得庆祝。