
1. 项目概述认识RK3588这颗“全能芯”最近在嵌入式圈子里RK3588这颗芯片的热度一直居高不下。无论是开发者论坛、开源硬件社区还是工业控制、边缘AI项目的需求讨论中它的名字频繁出现。我手头也基于几款不同的RK3588开发板做了不少项目从基础的Ubuntu系统移植到复杂的YOLOv8模型部署踩过不少坑也积累了一些实战心得。今天我就从一个一线开发者的角度来深度拆解一下RK3588聊聊它为什么能成为当前中高端嵌入式应用的“香饽饽”以及在具体项目中我们该如何驾驭它。简单来说RK3588是瑞芯微Rockchip推出的一款高性能、高集成度的应用处理器SoC。它绝不仅仅是一颗简单的“单片机”或“ARM芯片”而是一个集成了强大CPU、GPU、NPU、视频编解码器、高速接口的完整计算平台。其核心定位是满足智能座舱、边缘计算盒子、高端平板、NVR、ARM服务器等对算力、显示、连接有多样化高要求的场景。当你拿到一块RK3588开发板时你面对的其实是一个拥有8核CPU4xA76 4xA55、6TOPS算力NPU、8K视频处理能力的“小电脑”其潜力远超传统的树莓派或全志H系列平台。对于开发者而言RK3588的魅力与挑战并存。魅力在于它提供了在嵌入式端实现复杂应用的可能性比如多路4K摄像头接入与AI分析、8K大屏异显、轻量级服务器部署等。挑战则来自于其复杂性复杂的电源管理、多层次的内存架构、丰富的异构计算单元CPU/GPU/NPU/RGA、以及相对庞大的官方SDK和略显繁琐的固件构建流程。接下来我将结合具体实践从芯片特性解析到实战项目落地为你梳理出一条清晰的RK3588开发路径。2. RK3588核心特性与开发板选型指南2.1 芯片核心特性深度解读要玩转RK3588首先得吃透它的核心特性。官方SPEC sheet上的参数很华丽但我们需要从开发者的视角理解这些参数背后的实际意义。CPU与内存子系统4个Cortex-A76大核主频可达2.4GHz和4个Cortex-A55小核构成了经典的big.LITTLE架构。在实际编程中这要求我们对任务进行合理的调度优化。计算密集型任务如AI推理的前后处理、复杂业务逻辑应该绑定到大核而后台服务、IO等待型任务可以放在小核以优化能效比。RK3588通常搭配LPDDR4/LPDDR4X内存带宽很高但需要注意的是其内存控制器支持多种分频和功耗状态在uboot和内核中需要进行正确配置否则可能无法发挥全部性能或导致不稳定。NPU与AI生态6TOPS的算力INT8是RK3588最大的卖点之一。这个NPU采用三核设计支持多种精度INT4/INT8/INT16/FP16/BF16。但“算力”只是一个峰值理论值实际效率取决于模型优化程度、内存带宽和驱动调度。瑞芯微提供了RKNN-Toolkit2工具链用于将TensorFlow、PyTorch、ONNX等框架训练的模型转换和量化成RKNN格式。这里有个关键点模型转换的成功率和推理效率与模型本身的结构算子支持度、以及转换时的优化参数设置强相关。并不是所有模型都能完美转换一些非常新的算子或复杂结构可能需要等待SDK更新或自己实现插件。多媒体能力矩阵视频编解码和显示输出是RK3588的另一大强项。它支持8K60fps解码和8K30fps编码编解码器独立且高效。对于做NVR、视频会议终端、广告机的朋友来说这意味着可以轻松处理多路高清流。显示方面支持HDMI 2.1、eDP、DP、MIPI-DSI等多种接口且可以同时驱动多个屏幕进行异显或同显。这里涉及到一个重要概念Display Engine和VOPVideo Output Processor。RK3588有多个VOP每个可以独立管理一个显示通道在设备树DTS中需要正确配置才能让屏幕亮起来。高速接口与扩展性PCIe 3.0、SATA 3.0、双千兆以太网其中一个可配置为RGMII、USB3.1 Gen1、Type-C支持DP Alt Mode等接口赋予了RK3588极强的扩展能力。你可以接NVMe SSD做高速存储接SATA硬盘做NAS接PCIe网卡增加网络端口甚至通过PCIe接外部AI加速卡。这些接口的驱动在主线Linux内核中支持度正在逐步完善但一些特定功能如PCIe通道拆分、USB3.1的特定功耗模式可能仍需参考瑞芯微的SDK补丁。2.2 开发板选型与核心外设评估市面上RK3588开发板众多从官方的EVB评估板到Firefly、Rock 5B、Orange Pi 5 Plus等第三方产品各有侧重。选型时不能只看价格必须结合项目需求。核心考量维度电源设计与散热RK3588满载功耗可达10W以上一块优秀的开发板必须有扎实的电源电路PMIC配置合理和有效的散热方案散热片、风扇接口。有些廉价板子使用简单的DC-DC在高负载下可能导致CPU降频或不稳定。内存与存储配置板载LPDDR4的容量4GB/8GB/16GB和频率直接影响性能。eMMC通常32GB/64GB/128GB的速度和可靠性也比TF卡好得多适合作为系统盘。是否预留M.2接口支持NVMe对于需要高速存储的应用至关重要。显示与摄像头接口需要驱动几个屏幕是什么接口HDMI, eDP, MIPI是否需要同时接入多个摄像头检查开发板是否提供了你需要的物理接口和对应的FPC连接器。网络与扩展接口是单千兆还是双千兆有无WiFi6/BT模块PCIe接口是全长还是短卡这些决定了产品的网络能力和扩展天花板。软件与社区支持该开发板厂商是否提供持续的内核、uboot更新是否有活跃的社区或资料库这对于后续问题排查和功能开发非常重要。注意不要盲目追求“接口全”。很多开发板为了展示芯片能力会把所有接口引出来但这可能导致信号完整性问题尤其是高速信号如PCIe、HDMI。对于产品化设计应遵循“需要什么引什么”的原则并做好SI仿真。外设调试心得双WiFi模块RK3588的SDK支持同时连接两个WiFi模块如AP6275P一个用于STA模式连接互联网一个用于AP模式提供热点。调试关键在于设备树中两个SDIO控制器的正确配置以及固件如brcmfmac的加载顺序避免中断冲突。多路Sensor接入利用其双ISP和多个MIPI CSI接口可以接入多路摄像头。需要仔细配置设备树中的ports,endpoints以及media-controller相关节点确保数据通路正确绑定到对应的ISP和VICAPVideo Capture单元。3. 系统构建从Uboot到Ubuntu Rootfs3.1 U-Boot移植与关键配置解析U-Boot是RK3588上电后运行的第一个复杂程序负责初始化DDR、加载并验证内核、传递设备树。官方SDK会提供适配好的U-Boot但进行深度定制或移植到新板子时需要理解其流程。移植核心步骤获取源码从瑞芯微的Git仓库获取对应版本的U-Boot通常与内核版本绑定。不建议直接使用主线U-Boot因为包含大量芯片专属的初始化代码。板级配置重点在arch/arm/mach-rockchip目录下找到你的开发板类似的定义如evb_rk3588复制并创建自己的板级目录。关键文件是Kconfig配置选项和板名.c初始化代码。设备树DTS这是重中之重。U-Boot使用的DTS通常位于arch/arm/dts/。你需要根据自己板子的硬件连接修改以下部分DDR时序参数在sdram节点中这是最关键的参数不对无法启动。通常参考官方板子的值如果更换了DDR颗粒可能需要根据颗粒手册调整。PMIC配置RK3588使用多个PMIC如RK806管理各路电源。需在i2c节点下正确配置PMIC的从地址和寄存器初始化序列确保内核启动前各电源域电压正确。串口与调试确保chosen节点下的stdout-path指向正确的串口节点如serial2这是调试信息的输出口。存储设备配置mmc用于eMMC/TF卡、spi-nand或nvme节点确保U-Boot能找到加载内核和设备树的存储设备。编译与烧写使用make命令编译生成idbloader.img、u-boot.itb等镜像。通过瑞芯微的upgrade_tool或rkdeveloptool工具将镜像烧写到存储设备的特定偏移地址。实操心得U-Boot调试主要依靠串口打印。如果上电后没有任何输出首先检查电源和晶振然后检查DDR初始化代码。可以使用rkbin仓库中的DDR loader进行DDR的初步校准和测试。另一个常见问题是内核加载失败检查bootcmd环境变量是否正确设置了内核和设备树的加载地址、文件名称。3.2 Linux内核定制与驱动集成RK3588的Linux内核移植相对成熟主线内核从5.10版本开始已有较好支持。但为了发挥全部性能和使用所有外设通常需要基于瑞芯微的SDK内核进行开发。内核配置与编译要点基础配置使用SDK提供的默认配置文件如rockchip_linux_defconfig作为起点。通过make menuconfig进入图形界面根据需求增删驱动模块。关键驱动选项NPU驱动CONFIG_ROCKCHIP_RKNPU这是RKNN推理的运行时依赖。RGA驱动CONFIG_ROCKCHIP_RGA2D图像加速缩放、旋转、格式转换至关重要能极大减轻CPU负担。多媒体CONFIG_VIDEO_ROCKCHIP_ISP、CONFIG_VIDEO_ROCKCHIP_HDMIRX、CONFIG_VIDEO_ROCKCHIP_CIF等用于摄像头输入和视频处理。显示与GPUCONFIG_DRM_ROCKCHIP显示框架、CONFIG_MALI_BIFROSTGPU驱动需额外获取闭源二进制包。电源管理CONFIG_ROCKCHIP_SUSPEND_MODE配置休眠唤醒模式。设备树DTS深化内核的设备树比U-Boot的更详细需要描述所有外设。时钟与复位确保各外设的时钟clocks属性和复位resets属性引用正确。Pin Controlpinctrl节点配置每个外设所用GPIO的功能复用如I2C、SPI、UART和电气属性上拉/下拉驱动强度。一个引脚配置错误就可能导致外设无法工作。复杂外设如dsi、edp、hdmi节点需要按数据手册配置时序参数如display-timings。csi2-dphy节点用于配置MIPI CSI接收器。编译与打包编译得到Image内核镜像和.dtb设备树二进制文件。瑞芯微的打包工具如mkimage会将内核、设备树、resource.img包含logo、dtb overlay等打包成boot.img。驱动调试技巧使用dmesg | grep error或dmesg | grep probe快速查找驱动加载失败。对于GPIO/I2C/SPI问题可以进入/sys/kernel/debug/pinctrl/和/sys/class/gpio/目录查看引脚状态和读写寄存器。显示问题可以结合modetest来自libdrm-tests工具和内核的DRM debug日志echo 0xff /sys/module/drm/parameters/debug来分析。3.3 Ubuntu Rootfs构建与系统优化有了内核还需要根文件系统Rootfs。Ubuntu是RK3588上一个非常友好的选择有丰富的软件包和活跃的社区。构建Rootfs的两种主流方式使用官方预构建镜像如Ubuntu官方或Armbian为RK3588提供的镜像。这是最快的方式下载后直接写入eMMC或SD卡即可启动。但软件版本和配置可能不够灵活。使用Debootstrap从头构建这是更可控的方式。在一台x86的Ubuntu主机上使用debootstrap工具为ARM64架构构建一个最简的根文件系统。# 示例命令 sudo debootstrap --archarm64 --foreign focal ./rootfs http://ports.ubuntu.com/ubuntu-ports sudo cp /usr/bin/qemu-aarch64-static ./rootfs/usr/bin/ sudo chroot ./rootfs /debootstrap/debootstrap --second-stage之后在chroot环境中安装必要的软件包ssh,network-manager,vim等、配置本地化、创建用户、安装RK3588专属的固件包如GPU、VPU的闭源固件。生成可烧写的update.img 这是将内核、uboot、rootfs打包成一个完整固件的关键步骤。瑞芯微提供了rkbin工具和打包脚本。准备好所有组件idbloader.img,u-boot.itb,boot.img,rootfs.img由rootfs目录制作成的ext4镜像。编辑打包配置文件如package-file定义每个组件的分区名称、路径和类型。使用rkdeveloptool或瑞芯微的AndroidToolLinux版的打包功能执行打包命令最终生成一个update.img文件。这个文件可以通过upgrade_tool工具直接烧录到设备实现“一键升级”。系统优化建议文件系统为/分区使用ext4格式并启用metadata_csum和64bit特性以获得更好性能。为日志目录如/var/log单独挂载一个小的tmpfs或使用logrotate严格管理避免写满根分区。服务管理禁用不必要的系统服务如bluetooth,ModemManager减少内存占用和启动时间。交换空间如果内存紧张如4GB版可以创建一个交换文件fallocatemkswapswapon但注意频繁交换会影响eMMC/TF卡寿命且NPU运算需要连续物理内存交换可能带来问题。内核参数在/boot/extlinux/extlinux.conf或U-Boot的bootargs中可以添加consolettyFIQ0使用FIQ串口、isolcpus4-7将大核隔离出来给特定任务使用等参数进行调优。4. 核心外设与接口实战开发4.1 显示系统多屏异显与HDMI调试RK3588的显示子系统非常强大也相对复杂。其核心是多个VOPVideo Output Processor和对应的显示接口控制器如HDMI、eDP、DP、MIPI DSI。多屏异显配置 假设我们要同时驱动一个HDMI显示器作为主屏和一个MIPI DSI接口的液晶屏作为副屏。设备树配置需要在/arch/arm64/boot/dts/rockchip/rk3588s.dtsi或你的板级DTS中启用两个VOP并将它们分配给不同的显示接口。hdmi0 { status okay; // 关联到VOP ports { port0 { hdmi0_out: endpoint { remote-endpoint vop_out_hdmi0; }; }; }; }; dsi0 { status okay; // 关联到另一个VOP ports { port0 { dsi0_out: endpoint { remote-endpoint vop_out_dsi0; }; }; }; }; vop { status okay; // 配置VOP支持多个输出 assigned-clocks cru ACLK_VOP; assigned-clock-rates 800000000; };关键在于remote-endpoint的链接将VOP的输出端口与具体显示接口的输入端口正确连接。用户空间配置内核启动后使用DRM框架。可以通过weston、kmscon或桌面环境如Xfce来管理多显示器。在weston.ini配置文件中可以指定每个输出的位置、分辨率、旋转等实现扩展桌面或镜像。HDMI调试常见问题无信号输出首先检查dmesg | grep hdmi或dmesg | grep dw-hdmi。确认驱动是否成功探测到显示器会有EDID读取日志。如果没有检查硬件连接、设备树中HDMI节点的status和reg属性以及供电avdd-0v9,avdd-1v8。分辨率不正确DRM驱动会读取显示器的EDID信息来获取支持的分辨率。如果强制指定一个不支持的分辨率可能会黑屏。可以通过modetest -D /dev/dri/card0命令查看所有支持的模式并测试输出。色彩或闪烁问题可能是PHY物理层配置问题。检查设备树中phy节点的配置如rockchip,phy-table有时需要根据屏幕规格微调这些参数。4.2 NPU开发YOLOv8模型部署全流程在RK3588上部署AI模型NPU是效率的关键。以部署YOLOv8目标检测模型为例流程如下1. 环境准备 在RK3588开发板或交叉编译环境中安装RKNN-Toolkit2的Python包有Linux ARM64版本。同时在PC开发机上也需要安装RKNN-Toolkit2用于模型转换和仿真。2. 模型转换与量化 这是最核心且最容易出错的步骤。# PC端转换脚本示例 (简化版) from rknn.api import RKNN rknn RKNN() # 加载ONNX模型需先使用YOLOv8官方export导出为onnx ret rknn.load_onnx(modelyolov8n.onnx) # 配置模型输入、输出、量化等参数 ret rknn.build(do_quantizationTrue, # 执行量化 dataset./dataset.txt) # 量化校准数据集 # 导出RKNN模型 ret rknn.export_rknn(./yolov8n.rknn) rknn.release()关键点一预处理对齐。YOLOv8的预处理通常是/255归一化。在rknn.config中必须设置mean_values[[0,0,0]],std_values[[255,255,255]]或者在模型转换前修改ONNX模型将预处理算子固化到模型中。关键点二量化数据集。dataset.txt文件里列出几十到几百张有代表性的图片路径。这些图片必须与模型推理时的输入分布一致同样的预处理方式。量化质量直接决定最终精度损失。关键点三输出节点。确保你知道ONNX模型输出节点的名字并在rknn.inference时正确指定。3. 板端推理代码编写# 板端Python推理示例 from rknnlite.api import RKNNLite import cv2 import numpy as np rknn_lite RKNNLite() ret rknn_lite.load_rknn(yolov8n.rknn) ret rknn_lite.init_runtime(core_maskRKNNLite.NPU_CORE_0) # 指定NPU核心 # 准备输入 img cv2.imread(test.jpg) img_preprocessed cv2.resize(img, (640,640)) img_preprocessed img_preprocessed / 255.0 # 预处理 img_preprocessed np.expand_dims(img_preprocessed, axis0).astype(np.float32) # 推理 outputs rknn_lite.inference(inputs[img_preprocessed]) # 后处理解析outputs应用置信度阈值和NMS得到检测框性能优化使用RGA进行预处理图像缩放、颜色空间转换BGR2RGB非常耗时。可以调用RK3588的RGA硬件通过librga.so库来加速能显著降低CPU占用和预处理延迟。多核NPU调度core_mask参数可以指定使用单个或多个NPU核心。对于多路视频分析可以创建多个RKNNLite实例绑定到不同核心实现并行处理。内存复用对于连续推理尽量复用输入输出内存避免频繁分配释放。4. 精度调优 如果发现量化后精度下降严重检查量化数据集是否具有代表性。尝试使用混合量化在rknn.config中设置quantized_dtypeasymmetric_quantized-u8或尝试dynamic_fixed_point-i16。对于某些对精度敏感的输出层如分类头可以尝试将其排除在量化之外quantized_algorithmnormal并设置quantized_methodchannel。最根本的方法是使用瑞芯微提供的量化感知训练QAT工具在模型训练阶段就模拟量化过程获得对量化更鲁棒的模型。4.3 RGA2D加速器使用与图像处理优化RGARaster Graphic Acceleration是RK3588内置的一个2D图像处理硬件加速器能高效完成缩放、旋转、裁剪、格式转换如NV12到RGB、颜色填充等操作。在视频处理和AI推理流水线中合理使用RGA能极大解放CPU。使用方式 瑞芯微提供了用户空间的库librga.so和对应的头文件。其API是C风格的。// 简化示例流程 #include rga/RgaApi.h // 初始化 c_RkRgaInit(); // 创建源和目标缓冲区对象 rga_info_t src, dst; memset(src, 0, sizeof(rga_info_t)); memset(dst, 0, sizeof(rga_info_t)); // 配置参数图像宽高、格式、内存地址 src.virAddr src_buffer; // 源图像数据地址 src.fd src_fd; // 如果使用DMA Buffer src.mmuFlag 1; src.rotation 0; // 旋转角度 // 设置矩形区域 rga_set_rect(src.rect, 0, 0, src_width, src_height, src_width, src_height, src_format); // 同样配置dst... // 执行操作例如缩放 c_RkRgaBlit(src, dst, NULL); // 同步等待操作完成 c_RkRgaFlush(); // 去初始化 c_RkRgaDeInit();与AI推理的流水线整合 一个典型的视频AI分析流水线是摄像头采集NV12 - RGA缩放/裁剪/格式转换 - NPU推理RGB输入 - 结果渲染。摄像头通过V4L2驱动输出NV12格式的帧到内存可能是DMA Buffer。应用程序获取到帧的地址和文件描述符fd。配置RGA的src信息使用该fd格式为RK_FORMAT_YCbCr_420_SPNV12。配置RGA的dst信息目标格式为RK_FORMAT_RGB_888尺寸缩放到模型输入大小如640x640。执行RGA转换转换后的RGB数据可以直接送入NPU进行推理。整个过程数据在内存中流动无需经过CPU进行繁重的格式转换和缩放计算效率极高。注意事项RGA对输入输出内存的地址对齐有要求通常是16字节对齐。使用malloc分配的内存可能不满足建议使用dma_buf或ion分配器来分配图形内存或者使用librga提供的wrapbuffer_系列函数来包装普通内存内部会处理对齐和缓存一致性。另外RGA的API是同步的c_RkRgaBlit会阻塞直到完成。对于高帧率应用可能需要将RGA操作放入独立线程或研究是否有异步方式某些版本SDK可能支持。5. 高级应用与系统调优5.1 复杂系统部署以Qwen2-VL模型为例部署类似Qwen2-VL-2B-Instruct这样的大语言多模态模型对RK3588来说是一个挑战也展示了其能力的边界。这类模型参数量大2B且需要处理视觉和文本两种模态。可行性分析内存2B参数的FP16模型加载就需要大约4GB内存这已经接近或超过了许多8GB板子的可用内存系统和其他应用会占用一部分。因此必须使用量化技术。将模型量化为INT8或INT4可以大幅减少内存占用和提升推理速度。算力6TOPS的NPU对于LLM的矩阵乘加运算加速效果明显但需要模型转换工具RKNN的良好支持。需要确认模型中所有算子尤其是Attention机制、LayerNorm等都在RKNN的兼容列表中。流程视觉部分图像编码器可以尝试用NPU加速文本部分的推理主要依赖CPU。可能需要一个混合推理框架。部署策略模型拆分与量化将视觉编码器和语言模型拆分开。视觉编码器如CLIP的ViT尝试转换为RKNN格式在NPU上运行。语言模型部分由于其对动态形状和复杂控制流支持更好可能更适合在CPU上使用优化过的推理引擎如ONNX Runtime, llama.cpp的ARM64版本。内存管理由于模型较大需要精细管理内存。确保系统有足够的交换空间但更要避免频繁交换。可以尝试使用mlock锁定模型内存防止被换出。考虑使用PagedAttention等内存优化技术如果推理引擎支持。性能瓶颈即使NPU加速了视觉部分文本生成的自回归过程逐个token生成在CPU上可能仍然是瓶颈速度可能较慢。这更多是用于演示或特定轻量级任务而非高性能对话。实操步骤简述使用RKNN-Toolkit2尝试转换视觉编码器部分为RKNN模型。语言模型部分使用llama.cpp并编译开启ARM NEON加速。将其量化为INT4或INT8格式。编写一个Python/C调度程序接收图像和文本调用RKNN接口运行视觉编码器将其输出与文本嵌入拼接再调用llama.cpp的库函数进行文本生成。这是一个高级项目需要对模型结构、推理框架和RK3588的软硬件都有较深理解适合作为探索性实践。5.2 系统级性能调优与稳定性保障当RK3588运行在高负载、长时间任务时系统调优至关重要。性能监控工具top/htop查看CPU各核心利用率、内存使用、进程状态。sudo cat /sys/kernel/debug/clk/clk_summary查看各时钟频率。sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq查看每个CPU核心的当前频率。sudo cat /sys/class/thermal/thermal_zone*/temp查看各温度传感器温度。sudo cat /sys/kernel/debug/rknpu/load查看NPU负载如果驱动支持。vmstat 1查看系统整体IO、中断、上下文切换情况。CPU调频策略 RK3588的CPU调频驱动通常是cpufreq-dt配套的调速器有schedutil默认、ondemand、performance、powersave。性能模式echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor。这会让CPU尽可能运行在最高频率适合计算密集型短时任务。平衡模式schedutil是一个不错的选择它根据CPU利用率动态调整频率响应快且能效比较好。对于异构核心可以分别设置大核和小核的策略。例如让大核运行在performance模式保证性能小核运行在powersave模式节省功耗。# 设置CPU0-3小核为powersave for i in {0..3}; do echo powersave | sudo tee /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor; done # 设置CPU4-7大核为performance for i in {4..7}; do echo performance | sudo tee /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor; done内存与IO优化调整Swappiness/proc/sys/vm/swappiness默认值60偏高。对于嵌入式设备如果内存尚可可以降低到10或20减少不必要交换。sudo sysctl vm.swappiness20。使用IO调度器对于eMMC存储mq-deadline或kyber调度器可能比默认的bfq更适合。echo mq-deadline | sudo tee /sys/block/mmcblk0/queue/scheduler。文件系统挂载选项在/etc/fstab中为根文件系统添加noatime,nodiratime选项减少不必要的元数据写入。稳定性与压力测试CPU压力测试stress-ng --cpu 8 --timeout 600同时监控温度和频率是否稳定是否会因过热而降频thermal throttling。内存压力测试stress-ng --vm 4 --vm-bytes 80% --timeout 600分配80%内存测试是否触发OOMOut-Of-Memory杀手。NPU持续推理测试编写一个循环持续对NPU提交推理任务运行数小时观察是否有内存泄漏、NPU驱动崩溃或系统挂起的情况。监控/var/log/syslog或dmesg输出。温升与散热长时间高负载下必须确保散热良好。如果发现温度过高例如超过85°C可以考虑在软件层设置温控策略或者优化风道、增加散热片。