三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Firefly RK3588Q开发板开箱实录:从烧写Buildroot到解决PCIe启动卡死的完整避坑指南

Firefly RK3588Q开发板开箱实录:从烧写Buildroot到解决PCIe启动卡死的完整避坑指南

Firefly RK3588Q开发板开箱实录:从烧写Buildroot到解决PCIe启动卡死的完整避坑指南

第一次拿到Firefly RK3588Q开发板时,那种既兴奋又忐忑的心情至今记忆犹新。作为一款基于Rockchip RK3588处理器的嵌入式开发平台,它强大的性能参数和丰富的接口配置确实令人心动,但随之而来的各种"坑"也让我这个嵌入式老手栽了不少跟头。本文将完整记录从开箱到成功启动的全过程,特别是那些官方文档没有明确说明的关键细节,希望能帮助后来者少走弯路。

1. 开箱与初始准备

拆开Firefly RK3588Q的包装盒,你会看到以下标准配件:

  • 开发板本体(核心配置:RK3588四核Cortex-A76+四核Cortex-A55,8GB LPDDR4)
  • 电源适配器(12V/2A DC输出)
  • Type-C数据线(用于烧录和调试)
  • 散热风扇套件
  • 快速入门指南

首次上电检查:建议先不连接任何外设,仅接通电源观察板载LED状态。正常情况下,电源指示灯(红色)常亮,系统状态灯(蓝色)会在启动过程中闪烁。如果连电源灯都不亮,请立即断电检查电源连接。

注意:虽然开发板默认预装了Ubuntu系统,但如果你想使用Buildroot或其他自定义系统,建议先备份原始固件。可以通过RKDevTool的"读取Flash"功能完整备份整个eMMC存储。

2. 构建Buildroot系统环境

2.1 获取正确的固件镜像

Firefly官方提供了多个版本的Buildroot固件,我选择的是AIO-3588Q_Buildroot_v1.0.6f_230819.img。下载时务必注意:

  • 确认开发板具体型号(PCB版本号通常在丝印层标注)
  • 核对镜像文件的MD5校验值
  • 建议从官方Wiki或GitHub仓库直接下载,避免第三方源可能存在的文件损坏
# 校验镜像完整性示例 md5sum AIO-3588Q_Buildroot_v1.0.6f_230819.img # 应输出:a5d3e8f1b6c7d9e0f2a4b6c8d7e9f0a1

2.2 烧写工具配置

RKDevTool是Rockchip官方提供的烧录工具,Windows环境下建议使用v2.84以上版本。关键配置步骤如下:

  1. 安装USB驱动(DriverAssistant_v4.6)
  2. 开发板进入Loader模式:
    • 断开电源
    • 按住Recovery键不放
    • 插入Type-C线连接电脑
    • 保持3秒后松开按键
  3. 设备管理器中应出现"Rockchip USB Device"

烧写参数设置:

  • 选择"统一固件升级"模式
  • 加载下载的.img文件
  • 勾选"校验"选项
  • 点击"升级"开始烧写

3. PCIe启动问题的深度排查

烧写完成后首次启动时,系统卡在PCIe初始化阶段,串口输出如下错误:

[ 1.502365] phy phy@fee80000.2: failed to power on [ 1.502385] rockchip-pcie fe190000.pcie: failed to initialize vpcie3v3 regulator [ 1.502402] rockchip-pcie: probe of fe190000.pcie failed with error -110

3.1 问题根源分析

经过反复测试和源码追踪,发现问题出在以下几个方面:

  1. 设备树配置冲突:默认dts启用了所有PCIe控制器,但部分硬件版本可能未配备相应物理接口
  2. 电源管理异常:VPCIE3V3供电使能时序不符合PHY芯片要求
  3. 固件选择错误:Buildroot生成的boot.img与extboot.img适用场景不同

3.2 解决方案实施

方法一:禁用未使用的PCIe控制器(推荐)

定位设备树文件:

find device/rockchip/rk3588/ -name "*dts*"

修改主dts文件(如rk3588-firefly-aio-3588q-mipi101-M101014-BE45-A1.dts):

&pcie30phy { status = "disabled"; }; &pcie3x4 { status = "disabled"; };
方法二:使用extboot.img替代boot.img

这是最容易被忽视的关键点。Buildroot编译会生成两个内核镜像:

文件类型用途加载方式
boot.img传统启动镜像通过bootloader
extboot.img包含extlinux配置的镜像直接由loader解析

正确编译和烧写步骤:

# 编译内核(生成extboot.img) ./build.sh extboot # 单独烧写extboot分区 rkdeveloptool write 0x0000a000 extboot.img

4. 开发环境搭建的实用技巧

4.1 本地化资源加速

官方SDK依赖在线下载大量资源,可通过以下方式优化:

  1. 配置本地镜像源:
    export BUILDROOT_DL_DIR=/path/to/local/cache
  2. 使用第三方预编译工具链:
    wget https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2022.08-1.tar.bz2

4.2 常见编译错误处理

问题1:下载失败导致编译中断

# 解决方案:手动下载后放入dl目录 wget -P dl/ https://mirror.example.com/path/to/file.tar.gz

问题2:内存不足引发OOM

# 临时解决方案:限制并行任务数 make -j$(($(nproc)/2))

5. 进阶调试与性能优化

5.1 串口调试技巧

推荐使用picocom工具:

picocom -b 1500000 /dev/ttyUSB0 --imap lfcrlf

关键启动日志过滤命令:

dmesg | grep -E 'pcie|phy|rockchip'

5.2 系统性能调优

内存配置:

# 查看内存信息 cat /proc/meminfo # 调整swappiness echo 10 > /proc/sys/vm/swappiness

CPU调频策略:

# 查看可用调速器 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors # 设置为性能模式 echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

经过三天的不懈努力,这块开发板终于在我的工作台上稳定运行起来。回顾整个过程,最大的教训就是:不要完全依赖官方文档,遇到问题时多查看源码和社区讨论。特别是对于RK3588这样复杂的SoC,每个硬件版本可能都有其特殊性,保持耐心和细致的观察力才是解决问题的关键。

← 返回列表