拓冰建站拓冰建站
首页 / 资讯中心 / 正文

RK3588联调诊断实战:从启动到NPU的排查思路与工具链

在RK3588上做联调大多数人的第一个周末是这样度过的板子到了手册翻了三遍Type-C线插上RKDevTool怎么都识别不到设备好不容易刷上固件串口又没有任何输出最后系统起来了GMAC死活link不上DTS改了一下午还是不通。如果你正在经历这些这篇文章就是写给你的。RK3588这颗芯片本身的资料其实不算少真正难的不是某个外设不会配而是联调这件事——硬件、BSP、驱动、AI部署所有环节搅在一起一个问题往往牵出一整条链路。这篇内容是我在实际项目里跑过的路围绕启动、外设、NPU、AMP几个高频战场讲讲RK3588联调诊断时真正有用的判断顺序和排查套路配合RKDevTool、串口、dmesg、rknn-toolkit2这些工具尽量把为什么这么查也说清楚。1. 联调前先建一张系统地图RK3588到底难在哪1.1 CPU、NPU、VPU各自为政问题常出在交界处RK3588是典型的异构SoC4个Cortex-A76大核加4个Cortex-A55小核Mali-G610 GPU6 TOPS算力的NPU还有支持8K编解码的VPU。听起来参数很亮眼但联调阶段它给你带来的第一个麻烦是——你不知道一个问题到底该归谁管。比如一个很奇怪的现象NPU推理偶尔出错但拉高负载跑压力测试又没问题。很多人会去怀疑模型量化最后查出来是NPU和VPU共用的DDR带宽被视频编码占满NPU访问内存延迟抖动导致推理超时。这就是交界处问题。所以联调之前我建议你先把RK3588的系统框图打印出来贴在工位上重点不是看CPU有几个核而是看这些模块之间怎么连接哪个外设挂在哪个总线上GMAC、PCIe、USB3.0各自的总线拓扑完全不同哪些模块共用电源域和时钟域DDR控制器如何被CPU、NPU、VPU、GPU共享这一步特别重要。因为后面你排查GMAC不通、音频不出声、模型加载失败时本质都是在回答同一个问题这个外设需要的电源、时钟、复位、引脚、驱动这五样东西是否全部就绪了1.2 先分清电源域、时钟域、复位域再动手改DTS很多RK3588联调问题表面上是驱动没写好实际是电源或时钟没供上。我见过最典型的是ES8311音频Codec不出声改了半天ALSA配置最后用万用表一量Codec的AVDD根本没电。RK3588的电源管理由PMIC一般是RK806系列配合多个regulator实现。在DTS里你会看到大量regulator节点它们之间存在父子关系、always-on标记、启动时序约束。排查供电问题不要光看DTS还要看实际量测用万用表量对应电源脚的电压是否稳定上电瞬间用示波器看电源时序是否符合PMIC的配置有些电源域没起来软件层面可以用cat /sys/kernel/debug/regulator/regulator_summary查看时钟域也一样。RK3588的CRUClock and Reset Unit管理着几百个时钟一个外设工作不正常先查它的时钟是否使能、频率是否正确。RK平台提供了非常方便的调试入口后面我会专门讲clk_summary的用法。这里先说结论外设联调的第一步永远不是改驱动代码而是确认电、钟、复位这三样基础资源到位了。1.3 建立一份属于自己的摸底清单接触一块新的RK3588板卡不要急着跑demo。先花半天时间把板卡的底细摸清楚记录成一份清单后面联调出问题时会救你命。我的摸底清单大概是这样的项目需要确认的内容记录方式硬件版本PCB版本号、DDR容量和型号、eMMC容量拍照文档固件版本U-Boot版本、内核版本、rootfs类型uname -a、uboot log编译环境交叉编译工具链版本、SDK commit号记录文件保存串口参数波特率、电平标准TTL/RS232写进BSP文档启动模式能否进入MaskROM/Recovery/Loader实测记录原始log第一次正常启动的完整串口log存档命名带日期这些信息在单人开发时看起来没用但一旦问题需要求助FAE、或者团队其他人接手一份完整的摸底记录比任何沟通都高效。2. 启动联调从MaskROM到进系统的每一步怎么验证2.1 MaskROM、Recovery、Loader三种模式的识别与切换RK3588的启动调试绕不开这三个模式。不少新手在这里卡住Profile方法其实是先搞清楚这几个状态是谁在什么条件下进入的。MaskROM模式是芯片出厂固化在ROM里的最底层引导代码。当外部存储介质eMMC、SD、SPI Flash里没有有效启动代码时芯片会自动进入MaskROM等待USB下载。开发阶段也可以通过按键强制进入——具体做法是按住开发板上的MaskROM键不松用USB Type-C数据线连接电脑然后上电等到RKDevTool识别到设备再松手。Recovery模式是Loader里实现的一个分支一般用于固件升级。进入方式通常是按住Recovery键上电或者用adb reboot recovery触发。Loader模式是正常的下载模式U-Boot已经跑起来等待主机下发命令。实践中最常见的坑有三个电脑识别不到设备。先确认你用的是数据线不是充电线。Type-C线外观一样里面可能根本没有USB数据线芯。驱动没装好。RK的DriverAssitant驱动工具装完必须重启电脑有些版本对Win10/11的驱动签名要求很高。按键时序不对。MaskROM键必须在上电瞬间按住手速慢了芯片已经启动到Loader了。RKDevTool识别到设备后会显示设备类型。如果显示的是MaskROM设备说明外部boot代码没跑起来如果显示Loader设备说明U-Boot已经启动。这个信息本身就很有诊断价值——如果你期望它从eMMC启动却一直停在MaskROM大概率是eMMC里没有BootLoader或者DDR初始化失败导致Loader起不来。2.2 串口打印是第一现场RK3588联调串口是你和芯片之间唯一的实时对话通道。建议第一次上电前就把串口接好因为很多问题在开机那一瞬间已经暴露了。串口的波特率要注意RK平台的调试串口常见两种15000001.5Mbps多见于U-Boot和内核早期输出另外也有用115200的具体看板卡设计。如果发现输出乱码大概率是波特率选错了。Linux下我用minicom比较多简单配置sudo minicom -s # 选择 Serial port setup # Serial Device: /dev/ttyUSB0 # Bps/Par/Bits: 1500000 8N1 # Hardware Flow Control: No或者用screen更轻量screen /dev/ttyUSB0 1500000启动日志的顺序本身就是一张诊断地图日志阶段输出特征如果卡在这里DDR初始化带DDR Version字样硬件问题概率大DDR焊接、颗粒型号配置、电压不稳Loader/U-Boot带U-Boot SPL、U-Boot 2017.09字样boot设备配置问题、SPL与U-Boot不匹配Kernel启动带Booting Linux、Starting kernel字样DTS问题或内核配置问题Rootfs挂载带VFS: Mounted root字样内核参数root配置错误、rootfs损坏一个非常典型的场景串口输出DDR Version 1.08...之后就再也没动静。这种情况不用去查内核问题几乎都在DDR初始化或DDR频率配置上。先检查板卡DDR颗粒型号和SDK里DTS的DDR配置是否对应再用示波器看DDR供电是否在初始化瞬间被拉垮。2.3 开机指示电路与假死的区分很多RK3588开发板做了开机指示LED但这颗LED亮并不代表系统正常。它可能只是接到了PWRON信号或PMIC的某个输出上只说明电源域起来了。我遇到过一个假死案例板卡LED常亮但串口完全无输出按复位键也没反应。一开始以为是内核崩了查了半天最后发现是DDR training失败芯片反复重启但LED由于接了PMIC的power-good信号所以一直亮着。这时候正确的状态判断方法是看PMIC的寄存器状态I2C访问RK806测量DDR供电和VCC_SYS的电压纹波检查复位引脚电平是否在正常范围还有一个容易忽略的点是看门狗。U-Boot阶段如果喂狗失败板卡会周期性重启。串口日志里如果出现规律性的重复片段优先怀疑硬件看门狗或内核watchdog驱动。3. 外设联调三座大山GMAC、音频Codec、PWM3.1 GMAC调试从phy模式到link up的完整链路RK3588的GMACGigabit Ethernet MAC调试是联调阶段的高频问题主要因为以太网涉及的因素太多MAC、PHY、MDIO、时钟、引脚延时、DTS配置任何一个环节错了都表现为网口不通。先说结论性的排查顺序再展开讲硬件层面确认PHY芯片型号、地址、供电、复位确认接口模式RGMII还是RMII1000M还是100M确认ref_clk由谁提供、频率和相位对不对DTS里配置phy-mode、tx/rx delay、mdio节点启动日志里看PHY是否被发现用ethtool确认link和速率RK3588的GMAC在DTS里一般有gmac0和gmac1两组调试步骤如下。第一步看启动日志。如果U-Boot阶段已经初始化了GMAC你会看到类似ethernetfe1b0000: PHY found at address 1如果没有这行输出先查MDIO总线能不能读到PHY。用下面的命令验证# 在Linux下如果phy驱动已加载 ls /sys/bus/mdio_bus/devices/ cat /sys/bus/mdio_bus/devices/stmmac-0:01/phy_id第二步查引脚和延时。RGMII模式下tx_delay和rx_delay非常关键。RK3588的DTS里通常通过tx_delay 0x2b这样的方式配置。这里的数值对应PHY或MAC内部延时。如果时钟相位不对表现是link能起来但吞吐量极低、丢包严重。这个时候可以用ethtool -S eth0看rx_errors和tx_errors计数。第三步检查PHY模式配置。DTS里的phy-mode rgmii表示延时由MAC侧提供rgmii-id表示延时由PHY提供rgmii-rxid和rgmii-txid分别表示仅RX或TX延时由PHY提供。RK3588的硬件设计文档一般会明确告诉你要用哪种不要闭眼照抄demo板。很多人GMAC不通就是因为硬件走线方式和demo板不同延时的归属搞反了。第四步link up但ping不通。这种问题多半在DMA或中断配置。检查内核日志里有没有stmmac_open、eth0: no IPv6 routers present这类信息。如果ifconfig eth0 up之后link灯和ethtool都显示up但ping网关不通用tcpdump -i eth0看一下是否有ARP请求发出如果没有检查驱动里mac地址是否有效以及DTS的local-mac-address是否配置了非法值。3.2 ES8311和ES8388I2S Codec的共性排查方法RK3588平台最常见的音频Codec是ES8311和ES8388这两颗虽然是不同型号但排查思路完全一样。音频链路是I2S控制器 Codec 外部功放 喇叭/麦克风所以问题可以发生在任何一个环节。我总结了一套音频无声排查五步法第一步确认Codec在I2C总线上被发现。# 在0-0018或0-0011这样的目录下 ls /sys/bus/i2c/devices/如果设备节点不存在说明I2C通信失败。检查I2C地址ES8311常见0x18ES8388常见0x11或0x10和I2C引脚配置。第二步确认MCLK是否有时钟输出。Codec需要MCLK才能工作。在RK3588上MCLK通常由I2S控制器的mclk-fs配置决定。可以用示波器测量Codec的MCLK引脚也可以看一眼clk_summarycat /sys/kernel/debug/clk/clk_summary | grep -i mclkMCLK常见频率是256 * fs或者512 * fs如果采样率是48000HzMCLK通常是12.288MHz或24.576MHz。如果频率不对ALSA配置多半有问题。第三步检查sound card节点是否创建成功。cat /proc/asound/cards aplay -l如果这里没有任何声卡问题在DTS的simple-audio-card或者sound节点配置。重点检查dai-link的格式、codec的#sound-dai-cells属性。第四步检查mixer和通路。很多没声音其实是通路没打通。用tinymix或者amixer检查tinymix # 查看所有控件的当前值确认DAC、HPOut、Speaker等没有被静音 tinymix DAC Mute 0第五步用tinyplay做最小验证。避免拿到板上先跑复杂的音频框架直接用ALSA底层工具# 生成一个1kHz正弦波wav sox -n test.wav synth 3 sine 1000 tinyplay test.wav -D 0 -d 0这个命令绕开了上层音频服务如果tinyplay能出声说明内核驱动链路是通的问题在更上层如果tinyplay也不出声问题锁定在Codec寄存器配置—I2S控制器—功放这条链路上。还有一个高频坑I2S的frame clock和bit clock的polarity配置错误。RK3588的I2S控制器兼容多种格式I2S、Left Justified、DSP如果DTS里配置的格式和Codec初始化时设置的格式不一致表现就是有数据但完全无声或者爆音。ES8311的寄存器0x00可以配置接口格式务必和DTS的i2s节点保持统一。3.3 PWM捕获与PWM风扇用sysfs验证硬件通路RK3588的PWM模块既可以做输出驱动风扇、屏幕背光、舵机也可以做输入捕获测频率、测脉宽。开发中PWM风扇pwm-fan和PWM捕获pwm capture是两类典型应用。PWM输出的sysfs操作# 查看可用的PWM控制器 ls /sys/class/pwm/pwmchip0 # 导出通道0 echo 0 /sys/class/pwm/pwmchip0/export # 配置周期单位ns比如25kHz 40000ns echo 40000 /sys/class/pwm/pwmchip0/pwm0/period # 配置占空比50% 20000ns echo 20000 /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 使能输出 echo 1 /sys/class/pwm/pwmchip0/pwm0/enable如果你拿示波器量不到波形优先检查三件事这个PWM通道对应的引脚是否被pinmux配置复用成了PWM功能PWM所使用的时钟源是否打开板级硬件是否需要电平转换比如PWM输出是1.8V风扇控制端需要3.3V。PWM捕获的调试要更细心一点。RK3588的PWM capture模式用来捕获外部信号的周期和脉宽常见于测距、舵机反馈、或读取遥控器信号。内核配置需要打开CONFIG_PWM_ROCKCHIP_CAPTURE。捕获后的数据通常通过/sys/class/pwm/pwmchipX/pwmY/capture接口读取输出类似period1000000 duty_cycle500000联调时最常见的坑是捕获引脚没配置成输入模式或者PWM控制器工作在输出模式而不是捕获模式。在DTS里捕获模式需要把pwm节点配置为rockchip,capture模式并确保引脚方向为输入。pwm-fan的DTS配置RK3588跑AI模型时发热严重pwm-fan几乎成了标配。DTS里常用thermal-zones联动控制fan: pwm-fan { compatible pwm-fan; pwms pwm14 0 50000 0; /* 周期50000ns 20kHz */ cooling-min-state 0; cooling-max-state 3; #cooling-cells 2; };然后在thermal-zones的cpu_thermal里加上cooling-map让温度超过阈值后自动调高风扇占空比。联调时可以通过手动写duty_cycle验证风扇是否真的能调速echo 0 /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 停转 echo 25000 /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 半速 echo 49000 /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 接近全速如果duty_cycle改了但风扇转速不变检查风扇接口是开漏输出还是推挽输出以及PWM频率是否在风扇支持的范围内。有些四线风扇对PWM频率很敏感20kHz以上才正常低于5kHz会出现嗡嗡声甚至不转。4. NPU联调rknn-toolkit2、miniloader.bin与YOLO部署的常见坑4.1 先搞懂rknn-toolkit2在转换链路里的角色RK3588的NPU没法直接运行PyTorch或TensorFlow的模型需要先把模型转换成RKNN格式。rknn-toolkit2就是干这个的工具包它跑在PC上x86 Linux或Windows转换完成后生成.rknn文件。很多人在这个阶段就开始踩坑。我见过最普遍的问题是版本错位PC端的rknn-toolkit2版本和板端的rknn runtime版本、librknnrt.so版本对不上。官方文档一般会给你一个版本对应表比如rknn-toolkit2 1.6.0配套的runtime必须是1.6.0。如果版本没对齐模型加载时会出现各种摸不着头脑的错误码。转换流程大概是准备模型文件ONNX、PyTorch、TensorFlow都支持但ONNX最稳妥用rknn-toolkit2的python API做转换和量化在PC上做模拟推理验证精度把.rknn文件推到板端结合板端的rknn runtime做推理转换的python脚本核心代码非常短from rknn.api import RKNN rknn RKNN() rknn.config(target_platformrk3588, mean_values[[0,0,0]], std_values[[255,255,255]]) rknn.load_onnx(modelyolov8n.onnx) rknn.build(do_quantizationTrue, datasetdataset.txt) rknn.export_rknn(yolov8n.rknn)但这里的target_platform、mean_values、std_values、quantized_dtype等参数每一项都可能影响最终在板端的表现。联调阶段最讨厌的是PC上模拟推理完全正常板上加载却报错或精度崩掉。这种情况优先怀疑板端运行内存不足或量化配置与板端不一致。4.2 miniloader.bin、librknnrt.so和模型demo的目录逻辑很多人第一次看到miniloader.bin这个文件不知道它是干嘛的。简单说miniloader.bin是板端RKNN runtime在NPU上加载模型固件的一个loader镜像。librknnrt.so是板端运行时的动态库miniloader.bin会随着这个库一起被加载进NPU。在rknn_model_zoo的examples目录下比如yolov8的demo目录结构大致是examples/yolov8/ ├── model/ │ ├── yolov8n.onnx │ ├── yolov8n.rknn ├── src/ │ ├── main.cpp # C推理demo │ └── postprocess.cpp # NMS后处理 ├── convert.py # 模型转换脚本 └── build.sh # 交叉编译脚本RK官方SDK里的模型demo位置一般在rknn_model_zoo/examples/下对应模型目录。如果你是从板卡的某个文件夹里找demo常见路径是/userdata/examples/或者/rknn_model_zoo/不同SDK版本稍有差异。联调时需要注意demo的交叉编译工具链必须和板端系统的glibc版本兼容。我踩过这个坑——SDK自带的交叉编译器是较老版本编出来的可执行文件在板端报GLIBC_2.34 not found。解决办法是升级SDK的交叉工具链或者用板端buildroot重新编译整个demo。4.3 模型加载失败和精度劣化的排查套路模型放到板端调用rknn_init时如果返回非零值一般的排查顺序先看错误码含义。板端运行时会打印类似E RKNN: [10:43:30] ...的日志。常见有RKNN_ERR_PARAM_INVALID参数错误、RKNN_ERR_MODEL_INVALID模型文件损坏或版本不符、RKNN_ERR_DEVICE_UNAVAILABLENPU设备不可用。确认librknnrt.so版本。strings librknnrt.so | grep version | head确认NPU固件和电源域。miniloader.bin加载失败往往和NPU的电源没起来有关。检查DTS里npu节点的power-domain配置。可以通过软件强制打开电源域echo on /sys/devices/platform/电源域节点/power/control内存不足。多路视频、多模型同时加载时NPU使用的连续物理内存可能不够。查看系统内存和CMA分配情况cat /proc/meminfo | grep Cma cat /proc/buddyinfo精度劣化。用rknn-toolkit2的rknn.accuracy_analysis()做逐层精度对比找到误差最大的层针对性调整量化策略。尽量不要用默认的全int8量化优先尝试hybrid_quantization混合量化保精度效果明显。把这些常见坑写在前面实际部署yolov8到RK3588时就能少走至少两天弯路。尤其是版本对齐这一点每次升级rknn-toolkit2板端的runtime库一定要一起升级这两者的版本号必须严格一致。5. AMP与多系统联调Linux和RTOS同时跑时的诊断逻辑5.1 AMP模式的启动链路和核间通信约定RK3588支持AMPAsymmetric Multi-Processing可以在一颗芯片上同时跑Linux和RTOS比如4个A55核跑RTOS做实时控制4个A76核跑Linux做复杂逻辑。这个架构在需要实时响应强算力的场景很常见但也让联调复杂度直接翻倍。AMP的启动方式有两种主流做法一是由U-Boot先启动RTOS再启动Linux二是由Linux通过remoteproc框架动态加载RTOS镜像。RK官方SDK里一般推荐remoteproc方式因为可以在Linux运行时动态启停RTOS方便调试。启动RTOS后Linux侧可以通过/sys/class/remoteproc/remoteproc0/接口控制其状态# 查看当前状态 cat /sys/class/remoteproc/remoteproc0/state # 停止RTOS echo stop /sys/class/remoteproc/remoteproc0/state # 启动RTOS echo start /sys/class/remoteproc/remoteproc0/state核间通信IPC一般使用共享内存ring buffer的方式辅以核间中断来通知对方。RK平台常使用rpmsg框架或者裸写共享内存。联调时一个典型问题是Linux侧读到的共享内存数据是乱序或旧数据。这通常是缓存一致性问题——CPU访问共享内存时需要确保cache line被正确invalid。RK平台需要在DTS的reserved-memory节点中标出这块区域并配置no-map属性避免Linux的cache管理把这块内存搞乱。5.2 内存隔离是AMP的生死线AMP系统中最严重的问题就是内存踩踏RTOS的代码段、数据段、堆栈区域和Linux的内存区域如果发生重叠Linux可能随时panic而且表现诡异——有时候跑几个小时才崩有时候一开机就崩。排查方法很直接在DTS里明确reserved-memory区域RTOS镜像所在区域必须加no-mapreserved-memory { rtos_reserved: rtos10000000 { reg 0x0 0x10000000 0x0 0x10000000; no-map; }; };Linux启动后检查保留区域是否被正确解析cat /proc/iomem | grep -A 1 rtos dmesg | grep reserved-memory还要确认DDR的频率调整不会导致这块区域时序错误。RK3588在DVFS调频时如果reserved-memory配得不合理偶尔会出现RTOS程序跑飞。稳妥办法是把RTOS内存区域设置在DDR控制器的固定映射区。AMP联调时日志也很关键。两个系统抢同一个串口是常有的事RTOS打印和Linux打印交织在一起根本没法看。建议开发阶段给RTOS和Linux各分配一个独立的调试串口正式发布时再用共享内存flag做日志缓冲。5.3 跨系统问题排查的三个有效手段AMP联调最让人头疼的不是RTOS本身出错而是不知道是RTOS的错还是Linux的错还是共享内存的错。我常用的诊断手段有三个LED/GPIO打点法。在可疑位置翻转一个GPIO用示波器或逻辑分析仪看波形。这招看起来土但在没有JTAG的AMP环境里是最快缩小范围的办法。共享内存加magic number。在共享内存头部放一个固定的魔数比如0x5A5A5A5A双方定期检查这个值。如果发现魔数被篡改说明某个系统越界写入了这块区域。时间戳同步。Linux侧用gettimeofdayRTOS侧用定时器计数统一换算为毫秒后你能精确判断两个系统的执行顺序这对排查竞态问题帮助巨大。6. 联调诊断的三板斧与工具链6.1 五类常用工具按优先级排好RK3588联调不需要很贵的设备但每一样工具用在哪里要心里有数工具用途推荐型号/做法USB转串口模块获取控制台日志CP2102/CH340注意电平匹配逻辑分析仪调试I2C、SPI、UART、PWM波形8通道以上采样率100MHz以上示波器看电源时序、时钟、高速信号100MHz带宽起步建议200MHz万用表量电压、通断常用的就行RKDevTool adb刷机、文件传输官方RKDevTool v3.15以上很多开发者喜欢跳过逻辑分析仪觉得用软件看寄存器就够了。但在调试ES8311这类I2S音频Codec时逻辑分析仪看一眼MCLK和BCLK的实际波形胜过于读半天寄存器。有条件的建议常备。6.2 dmesg、sysfs、debugfs三件套的实战用法软件层面的排查RK3588的Linux内核提供了非常丰富的调试接口用好看这三样能解决80%的问题。dmesg绝对是第一道防线。很多驱动probe失败会在dmesg里留下明确信息dmesg -n 8 # 提高控制台打印级别让所有日志都打出来 dmesg | grep -i error dmesg | grep -i fail dmesg | grep -i rk806\|i2c\|gmac\|codecsysfs用来查设备状态。ls /sys/bus/platform/devices/ # 查看所有平台设备 cat /sys/kernel/debug/gpio # 查看GPIO占用状态 cat /sys/kernel/debug/pinctrl/pinctrl/pinmux-pins # 查看引脚复用特别推荐pinmux-pins外设不工作时先看引脚有没有被其他模块抢走。debugfs里的clk_summary是时钟问题的终极武器cat /sys/kernel/debug/clk/clk_summary | grep -E gmac|mclk|pwm|npu每一行会显示时钟的enable_count、prepare_count、rate。如果某个外设工作不正常对应该外设的时钟enable_count是0大概率DTS里的clk配置没喂饱。6.3 写在最后的两个排查习惯联调做了这么多年真正让我少加班的不是某条命令而是两个习惯。第一个习惯一次只改一个变量。很多人排查问题DTS改三四处、内核配置也改了然后发现编译烧录后问题还在。坏了连是哪个改动导致的新问题都说不清。正确做法是每次只改一个变量验证没问题后再改下一个每一版都留一份log。第二个习惯完整保留问题现场。所谓现场包括硬件版本、固件版本、完整dmesg、复现步骤、发生时间。这套信息整理成一个md文件比截图给FAE有用一百倍。很多社区求助帖子之所以没人回就是因为只有一句我的rk3588跑yolov8报错谁知道怎么回事没有log、没有版本、没有复现步骤谁都没法帮你。回到文章开头说的联调难本质上不是因为RK3588这颗芯片有多复杂而是联调阶段涉及的因素太多了硬件、DTS、内核、驱动、NPU工具链、上层应用全部叠加在一起。但只要先把系统地图搞清楚再按启动、外设、NPU、AMP这几个层次逐步拆解用对工具、留足记录大多数问题其实都能在几小时内定位到具体环节。我个人的体会是RK3588联调最忌讳乱试——东改一个参数西改一个变量最后既没解决问题还引入了新问题。一次只动一个变量过了再说下一步这套笨办法至今帮我省下的时间远比浪费的多。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门