你好、
我们在 NPU 上运行了 eIQ TensorFlow Lite 示例模型,但却出现了以下错误:
信息:加载模型 mobilenet_v1_1.0_224_quant.tflite
INFO: 解决了记者问题
INFO:已创建外部代表。
remoteproc remoteproc 0:正在启动几个镜像 neutronFirmware.elf
remoteproc remoteproc0:远程处理器 neutron-rproc 已启动
INFO:NeutronDelegate 委托:31 个节点中已委托 29 个节点,1 个分区。
信息:应用了外部委托。
信息:为 CPU 创建了 TensorFlow Lite XNNPACK 代理。
中子 4ab00004.imx95-neutron:ioctl 无效。cmd=1075577096,arg=549719032088
无法创建中子推理任务
错误:元器件="Neutron Driver",category="内部故障",代码=442
错误:节点编号 31(NeutronDelegate)无法调用。
错误:调用 tflite 失败!
这些示例是使用以下代码包构建的:
# AI/ML
IMAGE_INSTALL:append =" tensorflow-lite-neutron-delegate"
目前,远程处理器显示为脱机:
root@toradex-smarc-imx95-12593622:/sys/class/remoteproc/remoteproc0# cat state
脱机
在尝试手动启动远程处理器时,我遇到了权限错误:
root@toradex-smarc-imx95-12593622:~# echo rproc-neutron-rproc-fw> /sys/class/remoteproc/remoteproc0/firmware
-sh:/sys/class/remoteproc/remoteproc0/firmware:权限被拒绝
root@toradex-smarc-imx95-12593622:~# echo start> /sys/class/remoteproc/remoteproc0/state
-sh:/sys/class/remoteproc/remoteproc0/state:权限被拒绝
我们目前正在参照 IMX_ML_User_Guide,在 NPU 上运行 eIQ Toolkit TensorFlow Lite 示例,但遇到了微码不匹配错误。
我们的设置使用 电路板支持包 版本 scarthgap-6.6.36-2.1.0和 eIQ 工具包 1.16.0 版。我们将 TensorFlow Lite 模型 .tflite但在执行过程中,出现了以下错误:
Screenshot from 2025-10-10 17-05-43 (1).png
为了排除故障,我们测试了多个电路板支持包和 eIQ Toolkit 版本组合(电路板支持包 6.6.52_2.2.0、6.12.34_2.1.0、6.12.34_2.1.0), lf-6.6.3_1.0.0 6.6.23_2.0.0 和 6.6.36_2.1.0使用 eIQ 1.16.0、1.15.1 和 1.14.0)。但是,任何微码版本都与预期版本不符。
请提供预期的微码二进制文件 (NeutromFirmware.elf)执行或提出任何修改意见。
你好,
电路板支持包 版本从 6.12.20 升级到 6.12.34,并执行了 eIQ 工具包中的默认示例。所附截图显示了结果--示例成功运行,并在恩智浦 i.MX95 EVK 上生成了默认图像分类输出。然而,在执行过程中,31 个节点中没有一个被委托。
NXP_iMX95.png
我转换了我的 .tflite该模型使用最新的 eIQ 工具包第 17 版。但是,当我使用 TensorFlow Lite 17 版本运行该示例时,却没有显示图像分类结果。我附上了显示此问题的截图。
v17.png
上述两个案例都是在恩智浦 i.MX95 EVK 上执行的。
不过,我们的主要目标是在 Toradex SMARC i.MX95 EVK 上运行这些示例。
由于Toradex i.MX95 EVK尚未发布6.12.34版本的稳定电路板支持包,因此Toradex主板上的电路板支持包升级仍然不稳定,导致在NPU上运行人工智能工作负载时出现多个错误。
又见面了
你应该这样转换你的模型:
/opt/nxp/eIQ_Toolkit_v1.17.0/bin/neutron-converter/MCU_SDK_25.09.00+Linux_6.12.34_2.1.0/neutron-converter \
--input you_model_quant.tflite \
--output your_model_neutron.tflite \
--target imx95 \
--convert-inputs-uint8-to-int8 \
--convert-outputs-uint8-to-int8我让 YOLOv11 Nano 以 27 FPS 的速度运行。我仍然收到版本不匹配警告,但这些都不会造成问题。有警告并不好玩,但现在也无能为力。
希望对您有所帮助。
干杯
又见面了
我设法用最新版本(6.12.34)转换了更多的节点和操作符。从 3% 到 62 美元的运营商转换,这对于基于 YOLOv11 的机型来说真是不错。
现在我也遇到了版本不匹配的问题。但这是我主板上的版本造成的。因此,我试图将它从 6.12.20 升级到 6.12.34。请检查您拥有的版本和用于转换的版本。
干杯
您好,
我不知道这个错误,也许恩智浦公司的人可以插话。
我也按照指南,成功转换了我的定制单级探测器(基于 CNN)。遗憾的是,只有 1 个节点被加载到委托中(其余节点仍由 CPU XNNPACK 处理):
====== V4L2ENC: 1.26.0 build on May 7 2025 08:46:20. ======
INFO: NeutronDelegate delegate: 1 nodes delegated out of 697 nodes with 1 partitions.
INFO: Neutron delegate version: v1.0.0-a5d640e6, zerocp enabled.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.这可能是因为转换后,697 个中子图中只创建了 1 个。只有 27 名操作员进行了转换。lol
Conversion statistics:
Number of operators after import = 678
Number of operators after optimize = 723
Number of operators converted = 27
Number of operators NOT converted = 696
Number of operators after extract = 697
Number of Neutron graphs = 1
Number of operators NOT converted = 696
Operator conversion ratio = 27 / 723 = 0.0373444
Operators converted = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,我再次联系了 Variscite 的支持人员,看看他们是否有什么好主意。很遗憾恩智浦没有真正回复。
希望你能找到解决办法。我会继续调查,如果有什么发现,我会告诉你。
干杯
您好,
感谢您的支持。我查看了您分享的链接,并按照提供的步骤进行了操作,但还是遇到了微码不匹配错误。我附上了一张屏幕截图供你参考。
Screenshot from 2025-10-31 17-54-09.png
能否请您检查一下并帮助我们解决问题?
恩智浦的支持真的很糟糕,他们的文档也没有提供我们所需要的一切,更不用说那些不带 Neutron 兼容模型的映像了--因为他们没有将其转换并添加到映像中。
我联系了Variscite,该公司提供了集成恩智浦iMX 95的板,他们为我提供了帮助。即使是使用 NPX 示例,也必须自己转换模型才能正常工作。请按此处说明操作: https://dev.variscite.com/dart-mx95/mx95-yocto-walnascar-6.12.20_2.0.0-v1.2/machine-learning/
我还没有进行转换,因为忙于其他事情。
希望对你有所帮助。
我们已经更新到最新的电路板支持包版本,但问题仍然存在。您能帮助我们解决这个问题吗?
您好,
我面临着同样的问题,却无法解决。
我测试了图片附带的示例代码 - 在示例下。我也遇到了同样的问题,NeutroDelegate 无法正确委托节点。我用我们的检测模型试了试,结果和预想的一样。
====== V4L2ENC: 1.26.0 build on May 7 2025 08:46:20. ======
INFO: NeutronDelegate delegate: 0 nodes delegated out of 678 nodes with 0 partitions.
Error in cpuinfo: prctl(PR_SVE_GET_VL) failed
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.任何这样的尝试:
echo start > /sys/class/remoteproc/remoteproc0/state结果是拒绝许可。
我试过很多图片:
我们正在测试或试图测试 Variscite DART DM95 附带的 NXP i.MX 95。图片是从他们的网站上下载的。我也尝试过最新的恩智浦版本,但这也行不通。
您知道权限被拒绝的原因是什么吗?如果您有特定的工作图像,能否分享下载链接?
提前感谢您的支持。
干杯
你好。
这很奇怪,所以请确保你有最新的电路板支持包,擦掉板上的 linux 再烧掉,我不能再说了,因为它在这里运行良好。
此致
你好,
我们按照你的建议尝试了下面的命令,但仍然遇到了权限被拒绝等错误。我们也在尝试使用 root 和 sudo 命令,但仍然面临权限被拒绝的问题。已添加屏幕截图供您参考。
1.echo stop> /sys/class/remoteproc/remoteproc0/state
2.cat /sys/class/remoteproc/remoteproc0/state
3.ls /lib/firmware
4.echo NeutronFirmware.elf> /sys/class/remoteproc/remoteproc0/firmwareScreenshot from 2025-10-16 14-57-17.png
你好
根据你的错误信息,你同时遇到了 RemoteProc 权限问题和 NPU 委托失败。让我来帮你逐步解决这些问题。
您在尝试手动控制远程处理器时看到的权限错误很常见。根据 RemoteProc 文档,在进行更改之前,需要确保远程处理器处于正确状态。
# cat /sys/class/remoteproc/remoteproc0/state
如果出现权限拒绝错误,请先尝试停止远程处理器:
# echo stop> /sys/class/remoteproc/remoteproc0/state
然后验证是否脱机:
# cat /sys/class/remoteproc/remoteproc0/state
offline
在加载固件时,RemoteProc 框架默认会查找存储在/lib/firmware 内的*.elf 固件(1)。您可以将固件复制到该位置:
$ scp hello_world.elf root@:/lib/firmware
如果固件存储在其他地方,可以更新固件路径:
# echo -n new_path> /sys/module/firmware_class/parameters/path
要加载固件,请将其名称写入固件文件:
# echo.elf> /sys/class/remoteproc/remoteproc0/firmware
重要: 确保运行*.elf 固件,否则将无法运行
使用新固件启动远程处理器:
# echo start> /sys/class/remoteproc/remoteproc0/state
您应该会看到类似的输出结果:
[12594.692880] remoteproc remoteproc0:启动 imx-rproc
[12594.698629]remoteproc remoteproc 0:正在启动 fw 图片 hello_world.elf,size 240736
[12594.706192]remoteproc remoteproc0: no dtb rsrc-table
[12594.761474]remoteproc remoteproc0:远程处理器 imx-rproc 已启动
根据社区讨论,设置 NPU 有几个重要的考虑因素:
验证 NPU 支持:确保您的硬件支持 NPU 执行,且您使用的 TensorFlow Lite 版本与 NPU 加速兼容
安装 NPU 驱动程序:确保正确安装和配置 NPU 驱动程序
使用正确的 TensorFlow Lite 委托:确保使用合适的委托执行 NPU
如果继续遇到问题,请考虑先使用纯 CPU 推理进行测试,以确定问题是否与 NPU 加速有关。您可以使用 USE_HW_ACCELERATED_INFERENCE=0
此致