Multi Source Translation Content

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multi Source Translation Content

Discussions

Sort by:
VLM Edge Studio - video analysis fails with PyAV 19.0.0 Symptoms On a clean install of Linux 6.18.37_2.1.0 i.MX Linux image, the VLM Edge Studio demo fails on Video analysis with: "Error: Connection closed" /tmp/connector.log shows: "TypeError: open() got an unexpected keyword argument 'metadata_errors'" Diagnosis torchvision/io/video.py calls: av.open(filename, metadata_errors="ignore") PyAV 19.0.0 no longer supports metadata_errors. Solution Workaround: Remove metadata_errors="ignore" from both av.open() calls in: /usr/share/eiq/aaf-connector/venv/lib/python3.14/site-packages/torchvision/io/video.py Fix: sed -i 's/av.open(filename, metadata_errors="ignore")/av.open(filename)/g' /usr/share/eiq/aaf-connector/venv/lib/python3.14/site-packages/torchvision/io/video.py After restarting VLM Edge Studio, video analysis works. Source: https://github.com/nxp-imx-support/vlm-edge-studio/issues/3 ARA240 DNPU i.MX Application Processors
View full article
ペイメント用のカード みなさん、こんにちは! 私は自分の街で路上駐車用のNFCとRFIDカードを使った決済システムを開発したいと考えています。利用者はNFC対応の駐車場係員のスマートフォンに自分のカードをかざすだけで手続きが完了する。そして、残高が差し引かれます。モバイルアプリもKotlinで開発する予定です(内蔵機能でNFCスキャンできるように)。このプロジェクトで使うのに最適なカードはどれかおすすめできますか?理由を教えてください! よろしくお願い申し上げます。
View full article
PNEV7642A Rev B 板 你好, 我正在考虑购买PNEV7642A B版评估板。但我找不到这款产品的任何链接或页面,请问您能否提供购买这款滑板的链接? 另外,在为该板查找 NFC 库时,我发现了一个适用于 PN7462 的 NFC 读取器库,而不是适用于 PN7642 的。这个库是否同时支持这两个目标平台? 谢谢。 开发板
View full article
用于支付的银行卡 大家好! 我想开发一个使用NFC和RFID卡的支付系统,用于我所在城市的路边停车。流程是:骑手使用NFC功能将停车卡TAP官方停车管理员的手机。然后,扣除余额。我还会使用 Kotlin 开发移动应用程序(这样我就可以使用内置的 NFC 功能进行扫描)。请问您能否推荐一下哪种卡片最适合这个项目?给我一个理由! 谢谢
View full article
Card for Payment Hello, guys! I want to develop payment system using NFC and RFID card for on-street parking di my city. The flow is rider tap his card to official parking attendant's handphone with NFC. Then, balance is deducted. I will develop mobile app also using Kotlin (so I can scan NFC with built-in function). Can you recommend which one is the best card to use in this project? Give me a reason! Thank you
View full article
RW612 出力クロックをピンへ こんにちは、 オシロスコープで測定できるように、ピンにクロック信号を出力する方法のソフトウェア例を探しています。 CLKOUT信号(下の画像参照)で実現できると思いますが、正しく設定できませんでした。 ユーザーマニュアルのこのセクションには、CLKOUTはIOMUX経由でピンにルーティングしなければならないと書かれていますが、MCI_IO_MUX->FSELレジスタでその関数のフィールドを見つけることができませんでした。 製品: WiFi RW6XX
View full article
PNEV7642A Rev B board hello, i am thinking of buying PNEV7642A Revision B evaluation board. but do not find any link or page for this product, please can you provide me with a link for buying this board  also when searching the NFC library for this board i did found a NFC Reader Library for PN7462 not for PN7642. does this library support both targets ?? thanks.    Development Board
View full article
RW612 输出时钟到引脚 你好, 我正在寻找一个软件示例,说明如何通过引脚输出时钟信号,以便可以用示波器进行测量。 我认为可以用CLKOUT信号实现这一点(参见下图),但我没能正确设置。 用户手册的这一部分提到,CLKOUT 必须通过 IOMUX 路由到引脚,但我无法在MCI_IO_MUX->FSEL 寄存器中找到该功能的字段。 产品:WiFi RW6XX
View full article
RW612 output clock to pin Hello, I'm looking for a software example on how to output a clock signal on a pin so it can be meassured with an oscilloscope. I think this could be achieved with the CLKOUT signal (refer to image below), but I wasn't able to set this up correctly.  In this section of the user manual it says that CLKOUT must be routed to a pin via IOMUX, but I wasn't able to find a field for that function in the MCI_IO_MUX->FSEL register. Product: WiFi RW6XX
View full article
PNEV7642A Rev B ボード こんにちは、 リビジョンB評価ボードPNEV7642A購入を検討しています。しかし、この製品のリンクやページは見つからないので、このボードを購入するためのリンクを教えていただけませんか また、このボードのNFCライブラリを検索したところ、PN7462用のNFCリーダライブラリが見つかりましたが、PN7642用ではありませんでした。このライブラリは両方のターゲットをサポートしていますか? ありがとう。 開発ボード
View full article
为 i.MX 95 Neutron NPU 编译和运行 AI 模型(日文博客) 介绍 i.MX95 中集成的 eIQ Neutron NPU 可以将 AI 模型推理处理卸载到专用加速器上。但是,并非总是可以直接运行模型;需要进行多项准备工作,包括量化、运算符兼容性以及编译器和目标运行时之间的版本兼容性。 本文概述了从将使用 ONNX 或 TensorFlow 创建的模型转换为 TFLite 模型,到 INT8 量化、编译以适配 Neutron NPU、部署到 i.MX95 以及使用 benchmark_model 进行性能评估的整个过程。在重点介绍标准且灵活的流程 A 的同时,我们也介绍了利用现有 ONNX 量化环境的流程 B。 命令示例适用于 Neutron-S。实际使用时,请务必查看目标系统上已安装的Neutron SDK 、 Yocto BSP和运行时附带的文档和发行说明。 目录 概述 主机端工具安装 转换流程(流程 A 详情) 备选流程:流程 B(ONNX 级量化) i. 部署到 MX95 目标平台及性能评估 (可选)位精确验证:neutron-runner 支持的算符和量化约束 故障排除/常见陷阱 综上所述 1. 概述 本文概述了在 i.MX95 中安装的 eIQ Neutron NPU 上运行使用 ONNX 或 TensorFlow 训练的 AI 模型的转换过程。它基于安装 Neutron SDK 后 docs 文件夹中包含的官方文档:“Neutron SDK 用户指南”、“Neutron 编译器用户指南”、“TFLite 分析器/量化器用户指南”、“Neutron Runner 用户指南”、“支持的运算符 (Neutron-S / Neutron-C)”以及i.MX 机器学习用户指南 (UG10166) 。 ℹ️ 注:i.MX95 中的 Neutron NPU 属于“Neutron-S”架构(子系统类型)。它与 i.MXRT700 等 MCU 使用的“Neutron-C”架构在转换流程和一些工具选项方面有所不同。本文重点介绍 i.MX95(Neutron-S)。 1.1 总流量(流量 A:推荐) Neutron SDK 提供的标准流程包括将模型转换为 TFLite 格式,在代表性数据集上对其进行分析,然后使用 INT8 对其进行量化,最后使用 neutron-compiler 将其编译为 NPU。 ℹ️首次用户补充信息 i.MX95 的 Neutron NPU 实际上运行在为 Neutron NPU 编译的 INT8 量化 TFLite 模型上。此过程最终会将您的 ONNX/TensorFlow 模型转换为这种格式。 根据您准备的预训练模型的格式,起始步骤会有所不同。请参考以下步骤,并从适用于您的步骤开始。 INT8 量化 TFLite 模型:跳过步骤 1-3,从步骤 4 开始。 FP32 TFLite 模型:跳过步骤 1,直接从步骤 2 开始。 ONNX/TensorFlow FP32 模型:执行步骤 1 到 1。 程序 实施细节 主要交付成果/执行环境 1 将 ONNX 转换为 TFLite FP32 onnx2tflite 主机 2 利用代表性数据集进行分析 tflite-profiler , profile.csv / 主机 3 基于配置文件的 INT8 量化 tflite-quantizer , quantized.tflite / 主机 4 为 Neutron NPU 编译 neutron-compiler --target imx95 主机 5 根据需要进行位精确验证 neutron-runner 主机 6 将转换后的模型部署到目标平台。 .tflite 型号/i.MX95 板 7 推理执行和性能评估 benchmark_model + libneutron_delegate.so / i.MX95 板 1.2 两种量化流(流 A / 流 B) Neutron SDK 用户指南定义了获取量化 TFLite 模型的两种流程。 流动 管道 量化工具 特点 流程 A(推荐) ONNX FP32 → TFLite FP32 → TFLite INT8 → 中子转换 tflite-profiler + tflite-quantizer(包含在 Neutron SDK 中) 它提供了高度的量化灵活性。特定的算子可以被排除在量化之外,从而允许映射到中子插值器,同时保持FP精度。 流程 B ONNX FP32 → ONNX INT8 → TFLite INT8 → 中子转换 onnx2quant (eIQ ONNX2TFLite) 当已有基于 ONNX 的量化流水线时,此功能非常有用。但其对运算符排除的细粒度控制有限。 💡 提示:如果您不确定,我们推荐流程 A(tflite-profiler + tflite-quantizer)。如果您希望将某些算符(例如非线性激活函数)映射到中子插值器而不对其进行量化,则流程 A 至关重要。 2. 设置主机端工具 模型转换将在开发主机(Linux/Windows PC)上进行。请从NXP eIQ软件仓库安装以下工具。 # ONNX → TFLite 转换工具 pip安装 eiq-onnx2tflite --index-url https://eiq.nxp.com/repository/# eIQ Neutron SDK(包括 tflite-profiler、tflite-quantizer、neutron-compiler、neutron-runner 等) pip安装 eiq-neutron-sdk --index-url https://eiq.nxp.com/repository/ ℹ️ 注意:开发主机(neutron-compiler)的推荐最低配置:CPU 2GHz 或更高,8 核或更高;内存 4GB 或更高。Neutron-S(i.MX95 等)使用约束编程求解器,因此转换时间可能需要几分钟到几十分钟不等,具体取决于模型。 ℹ️如果 pip 安装失败 如果 pip install 在您的内部代理环境中无法完成,请考虑以下选项。 使用 eIQ Toolkit 的 zip 版本— 从eIQ Toolkit 产品页面获取并解压 zip 文件后,您可以在 bin/ 下运行 Neutron 工具。zip 版本使用连字符,例如 tflite-profiler 、 tflite-quantizer 、 neutron-compiler 和 neutron-runner 。而 pip/uv 版本可能使用下划线,例如 tflite_profiler 、 tflite_quantizer 和 neutron_compiler 。但是,zip 版本不包含 onnx2tflite 和 onnx2quant ,必须使用 pip 或 uv 安装。以下命令示例使用与 zip 版本等效的表示法。 使用 uv 进行安装——根据您的环境,这可能比使用 pip install 更成功。 pip install uv uv pip install eiq-onnx2tflite \ --index-url https://eiq.nxp.com/repository/ \ --extra-index-url https://pypi.org/simple/ 如果需要代理,您可能需要配置 http_proxy / https_proxy (包括大写的环境变量)。配置方法取决于贵公司的具体环境。 2.1 Neutron SDK 版本和 Yocto BSP 兼容性 Neutron 驱动程序、固件和编译器必须与 Neutron SDK 版本一致。如果它们不兼容,运行时将输出以下警告。 Microcode version mismatch! Neutron Driver is 3.1.0-0X359f358d but model converted with 3.0.1-0Xd5d7918e. Runtime (driver, firmware) should be aligned with compiler Yocto BSP 版本与 Neutron SDK 版本之间的兼容性(摘录,基于截至 2026 年第三季度的最新 BSP): Yocto BSP 支持的发布周期 默认 Neutron SDK LF_6.12.3_1.0.0 2025年第一季度 1.2.0 LF_6.12.20_2.0.0 2025年第二季度 2.0.2 LF_6.12.34_2.1.0 2025年第三季度 2.1.3 LF_6.12.49_2.2.0 2025年第四季度 2.2.2 LF_6.18.2_1.0.0 2026年第一季度 2.2.3 LF_6.18.20_2.0.0 2026年第二季度 3.1.2 LF_6.18.37_2.1.0 2026年第三季度 3.2.1 其他 Neutron SDK 版本也可以作为“可升级版本”使用,但这种情况下,您需要将目标运行时(驱动程序/固件/委托)更新到相应的版本,并使用相同版本的 neutron-compiler 重新编译模型。详情请参阅《Neutron SDK 用户指南》中的版本兼容性表格。 3. 转换流程(流程 A 详情) 步骤 1:将 ONNX 模型转换为 TFLite FP32 格式。 如果您的模型已经是 TFLite FP32 格式,则无需执行此步骤。请使用 onnx2tflite 工具将您的 ONNX 模型转换为 TFLite 格式。 onnx2tflite -o .tflite .onnx ℹ️ 关于 SDK 版本的说明 -i (输入规范)和 -target (FP32/INT8 切换)在某些 SDK 版本中已弃用。输入 ONNX 文件使用位置参数指定,并在执行前使用 onnx2tflite --help 检查最新选项。如果您更改了输入/输出布局,还请检查您使用的 SDK 中是否存在 --keep-io-format / --no-keep-io-format 以及它们的默认值。 步骤 2:FP32 模型分析 我们使用 tflite-profiler,利用代表性的输入数据集(校准数据)测量每个张量的动态范围(最小值/最大值/直方图)。 ./tflite-profiler \ --input < my_model_fp32 > .tflite \ --dataset <输入数据目录> \ --output < my_model_fp32_profile > .csv ℹ️关于输入数据的说明 这包含一个 float32 格式的 .bin 文件,其尺寸与模型的输入尺寸相匹配。对于图像模型,您可以使用 SDK 中包含的 scripts/serialize_image.py 进行调整大小、归一化并转换为 float32 格式 .bin 。当没有代表性数据集时,可以使用 --use_random_data 进行形状验证和通信验证,但不适用于精度验证。 ./tflite-profiler \ --input < my_model_fp32 > .tflite \ --use_random_data \ --random-data-samples 10 \ --output < my_model_fp32_profile > .csv 通常认为,200 到 1000 个样本的样本量足以构建具有代表性的数据集。为了验证量化结果的准确性,建议使用一个未用于校准的独立验证数据集。 步骤 3:基于配置文件信息的 INT8 量化 我们将使用 tflite-quantizer 根据步骤 2 中生成的配置文件 (CSV) 执行 INT8 量化。 ./tflite-quantizer \ --input < my_model_fp32 > .tflite \ --profile < my_model_fp32_profile > .csv \ --output < my_model_quantized > .tflite 主要量化参数(默认值)如下: 选项 说明 默认值 --quantization-constant-type 权重量化数据类型 INT8 --quantization-constant-type-bias 具有偏差的量化数据类型(Conv2D/FC 等) INT32 --quantization-variable-type 激活的量化数据类型 INT8 --quantization-constant-granularity 权重量化粒度(PTQ/PCQ) PCQ(每通道) --quantization-constant-schema 权重量化方案 对称 --quantization-variable-schema 激活量化方案 不对称 --quantization-calibration-method 校准方法(最小值/最大值/百分位数) 最小最大值 要将特定算子排除在量化之外,请使用 --quantize-operator-types-except (例如, ADD,AVERAGE_POOL_2D )。像 LayerNorm 这样对量化敏感的复合算子也可以使用 layernorm 排除。 💡 提示:量化后,您可以使用 --run-after-quantize 选项通过虚拟输入验证操作(仅对标准 INT8 量化配置有效)。 ℹ️关于 SDK 版本的补充信息 量化选项可能因 SDK 而异。在我们的验证环境中,SDK 3.2.3 已确认可与表格中所示的选项以及 --quantization-constant-granularity PCQ 配合使用,但请务必在使用前使用目标 SDK 的 tflite-quantizer --help 进行验证。 步骤 4:为 Neutron NPU 编译 使用 neutron-compiler 为 i.MX95 Neutron NPU 编译量化的 TFLite 模型。 ./neutron-compiler \ --input < my_model_quantized > .tflite \ --output < my_model_converted > .tflite \ --target imx95 中子编译器分以下三个阶段执行转换: 步 内容 ① 优化 将图转换为符合 Neutron 硬件约束的数学等价形式(图路径)。 ② 提取物 将 NeutronOperator 中的对应运算符按层次结构映射到 NeutronGraph 中的自定义运算符。 ③ 生成 微代码/权重/内核的分块、调度、内存分配和二进制生成。 您可以使用以下命令查看支持的目标和运算符类型列表。 neutron-compiler --show-targets neutron-compiler --show-operator-types neutron-compiler --target imx95 --show-kernel-kinds 3.1 主要编译器选项 选项 说明 --target 要转换的目标 Neutron 对象(例如 imx95)。如果省略,则默认为 mcxn94x。 --output 输出文件路径。如果省略,则会在输入文件名后附加 _compiled 。 --dump-statistics / --dump-statistics-file 将周期估算统计信息(根据 NeutronGraph)输出到控制台/文件。 --optimization-level OFast :快速启发式算法(默认)/ OOpt :使用ILP/SAT求解器求解最优解(转换时间较长) --include-operator-types / --exclude-operator-types 指定要映射到/排除在 NPU 之外的运算符类型。 --min-num-ops-per-graph 要提取为 NeutronGraph 的最小算子数量。较小的图针对 CPU 执行进行了优化。 --use-profiling / --use-profiling-tick-trace 启用实际硬件上的运行时性能分析(内核级/时钟周期级) --keep-graphs 保留中间图(这是中子运行器中进行位精确验证所必需的)。 --force-determinism 这样可以抑制求解器中的多线程争用,并获得明确的转换结果(转换时间大约增加 2-3 倍)。 ℹ️ 注意:由于 Neutron-S(i.MX95 等)编译器使用约束编程求解器,因此对同一模型进行多次转换时,生成的微代码(尤其是 TCM 地址)可能会略有不同。这是因为多线程竞争会导致选择多个最优解之一,而所有解都是正确的。如果需要确定性,请使用 --force-determinism 。 4. 备选流程:流程 B(ONNX 级别量化) 如果您的现有流程依赖于 ONNX 级别的量化( onnx2quant ),您也可以使用以下流程。与流程 A 相比,该流程对运算符排除的细粒度控制更为有限。 程序 实施细节 使用的工具/主要交付成果 1 将 ONNX FP32 模型量化为 INT8 onnx2quant , model_int8.onnx 2 将 ONNX INT8 转换为 TFLite INT8 onnx2tflite , model_int8.tflite 3 为 Neutron NPU 编译 neutron-compiler --target imx95 # ① ONNXレベルでINT8量子化 # -cには入力テンソル名と.npyキャリブレーションデータのディレクトリを指定 onnx2quant .onnx -o .onnx -c " ; " # ② ONNX INT8 → TFLite INT8変換(QDQ形式の場合) onnx2tflite --qdq-aware-conversion -o .tflite .onnx # ③ Neutron NPU用コンパイル neutron-compiler --input .tflite --output .tflite --target imx95 ℹ️流程 B 笔记 onnx2quant 然后,需要指定 -c (校准数据规范)或 -u (随机校准数据)。对于多个输入模型,请为每个输入指定 -c 。将 ONNX 转换为 QDQ 格式时,请使用 --qdq-aware-conversion 。执行前,请使用 onnx2quant --help / onnx2tflite --help 检查所用 SDK 的选项。 5. 部署到 i.MX95 目标平台及性能评估 5.1 Neutron 运行时配置 用于 i.MX95 的 Neutron 运行时(Neutron-S)由以下三个组件构成: 组件 文件 地点 中子固件 NeutronFirmware.elf /lib/firmware/ 中子驱动器 libNeutronDriver.so /lib/ TensorFlow Neutron Delegate libneutron_delegate.so /lib/ ⚠️ 注意:更新运行时环境前务必备份现有文件。如果驱动程序、固件和编译器版本不匹配,则会显示“微代码版本不匹配”警告,并且系统可能变得不稳定。 5.2 模型部署 将转换后的 TFLite 模型( .tflite )复制到 i.MX95 目标板(使用 scp 等)。 5.3 性能评估(基准模型) 我们将使用 NXP Yocto BSP 中包含的 TensorFlow Lite benchmark_model 应用程序,并通过 Neutron Delegate 进行性能评估。 /usr/bin/tensorflow-lite-2.19.0/examples/benchmark_model \ --graph = .tflite \ --external_delegate_path = /usr/lib/libneutron_delegate.so \ --enable_op_profiling = true \ --num_threads = 5 示例输出(按节点类型汇总): Number of nodes executed: 26 ============================== Summary by node type ============================== [Node type] [count] [avg ms] [avg %] [cdf %] [mem KB] [times called] NeutronDelegate 1 2.882 87.919% 87.919% 0.000 1 Slice (ND, X8) 10 0.175 5.339% 93.258% 0.000 10 CONCATENATION 2 0.096 2.929% 96.187% 0.000 2 Unary Elementwise (NC) 2 0.078 2.379% 98.566% 0.000 2 Copy (NC, X8) 11 0.047 1.434% 100.000% 0.000 11 Timings (microseconds): count=270 first=3372 curr=3303 min=3015 max=3537 avg=3290.54 std=76 26 nodes observed 💡 提示: “NeutronDelegate”行中较高的平均百分比表示大部分计算已卸载到 NPU。其他节点(例如切片、连接等)则在 CPU 上执行。如果此比例较低,则可能是由于不支持的运算符导致性能瓶颈,因此请查看“支持的运算符”文档中每个运算符的限制。 6.(可选)位精确验证:neutron-runner neutron-runner 是一款用于验证由 neutron-compiler 转换的模型是否能产生与 Neutron Golden Kernel(参考实现)完全匹配的结果的工具。它不用于生产环境部署,但可用于在迁移过程中验证模型的正确性。 项目 中子模 原版模式 目标模型 使用中子编译器将模型转换为 --keep-graphs 标准 TFLite 型号(FP32/FP16/INT8) 目标 IMX95、IMXRT700 不适用 目的 使用黄金内核进行位精确验证 参考运行(用于比较的基准) 典型的验证工作流程: # ① 启用 --keep-graphs 进行编译 neutron-compiler --input model.tflite --output model_neutron.tflite --target imx95 --keep-graphs # ② 使用 Neutron 运行时(黄金内核)执行 neutron-runner --input model_neutron.tflite --dataset inputs/ --use-neutron-runtime = true --target imx95 # ③ 使用 Vanilla 运行时(参考)运行 neutron-runner --input model.tflite --dataset inputs/ --use-neutron-runtime = false # ④ 比较结果 diff model_neutron_results_0.bin model_results_0.bin ℹ️ 注意:Neutron Golden Kernel 不支持的操作符将自动回退到 TFLite Vanilla 实现。执行完成后,控制台将显示回退的操作符列表。 在 pip 安装环境中 neutron-runner 的执行路径 在 pip/uv 版本中,不会生成 neutron-runner Python 包装器,您可能需要直接在站点包中指定 ELF 二进制文件。 /eiq_neutron_sdk/bin/neutron-runner \ --input model_neutron.tflite \ --dataset inputs/ \ --use-neutron-runtime=true \ --target imx95 在 eIQ Toolkit 的 zip 版本中,像往常一样执行 bin/neutron-runner 。 7. 支持的算符和量化约束 中子编译器对可映射到NPU的运算符存在一些常见限制。不满足这些限制的运算符将回退到CPU执行。 7.1 通用约束(Neutron-S / Neutron-C 通用) 张量的形状必须是静态的(固定的)(批次大小 N 固定为 1;Neutron-C 部分支持可变批次)。 张量类型为 UINT8 / INT8 / INT16 / INT32 / INT64 之一。 张量布局为 NHWC(TFLite 标准)。 量化标度必须为正的 FLOAT32 值。 使用 PTQ 或 PCQ 对权重进行对称量化(偏移量 = 0)。 使用 PTQ 或 PCQ 对偏差进行对称量化,其尺度为 input_scale × weights_scale 不符合上述约束条件的图层将不会映射到 NPU。 7.2 i. MX95(Neutron-S)支持的主要操作员 CONV_2D , DEPTHWISE_CONV_2D , FULLY_CONNECTED , ADD , SUB , MUL , AVERAGE_POOL_2D , MAX_POOL_2D , CONCATENATION , PAD , PADV2 , RESHAPE , RESIZE_BILINEAR , RESIZE_NEAREST_NEIGHBOR , MEAN , SUM , LOGISTIC , TANH , HARD_SWISH , PRELU , LEAKY_RELU ,RELU 系统, TRANSPOSE_CONV , UNIDIRECTIONAL_SEQUENCE_LSTM 等(有关详细约束,请参见 SupportedOperatorsS.md )。 ⚠️ 注意:支持的运算符列表会随着 Neutron Compiler 的每个版本而更新(例如,3.2.1 版本支持 Group Conv2D,3.1.1 版本添加了 CAST/SELECT/UNIDIRECTIONAL_SEQUENCE_LSTM)。请务必查看您正在使用的 SDK 版本的发行说明。 8. 故障排除/常见陷阱 症状 原因 处理 微代码版本不匹配警告 驱动程序/固件/编译器版本不匹配 所有组件均已重新转换和重新排列,以匹配相同的 Neutron SDK 版本。 NeutronDelegate 的平均百分比较低(NPU 利用率低)。 该模型包含许多不支持的操作符(例如 Resize/Reduce)。 检查支持的运算符中的约束,用替代运算符替换它们,或者在保持运算符为 FP 的同时,手动将运算符映射到插值器。 量化后准确度显著下降。 校准数据缺乏代表性,或者特定操作员对量化敏感。 增加校准样本数量(200-1000)。排除 LayerNorm 和类似值,使用 --quantize-operator-types-except 中子编译器转换速度极慢。 使用 OOpt 优化级别或大型模型 首先,使用 OFast(默认)进行检查。仅在需要最高性能时才使用 OOpt(最多使用 16 个核心,会增加转换时间)。 在中子跑者中,一些操作符会回退到原始状态。 黄金内核不支持某些运算符。 未发现问题(运行正常)。请检查备用方案列表,确保它不会影响性能。 未找到命令( command not found ) 命令名称和位置因安装方法而异。 对于 pip/uv 版本,请检查站点包中的下划线表示法和实际路径;对于 zip 版本,请检查连字符表示法和 bin/ onnx2tflite 选项错误,错误代码为 onnx2quant 随附文档与 SDK 版本之间的差异 执行前,请用 --help 检查当前选项名称。 综上所述 本文介绍了一种在 i.MX95 Neutron-S NPU 上运行 AI 模型的标准转换流程。以下三点对于实际应用尤为重要: 请确保 Neutron SDK 和目标运行时版本匹配。驱动程序、固件、委托和编译器之间的不一致将导致 Microcode version mismatch 。 首先,使用流程 A 检查量化和算子之间的对应关系。使用代表性数据集进行性能分析,可以更轻松地调整精度和与 NPU 的映射关系。 逐个检查 benchmark_model 的结果。如果除了 NeutronDelegate 之外还有许多其他操作,则可能是由于使用了不支持的操作或数据转换导致性能瓶颈。 模型精度、NPU卸载率和推理延迟会因模型结构、量化设置、输入数据和SDK版本而异。建议先从小型模型入手,在真机上进行转换和评估,如果没有出现问题,再逐步应用到目标模型。 本文中的命令示例和相关信息可能因您使用的 Neutron SDK 版本而异。有关最新的官方规范,请参阅 SDK 随附的文档和发行说明。 ========================= 即使您在本文的“评论”栏留言,我们目前也无法回复。 给您带来不便,我们深感抱歉。请在询问时参阅“NXP技术问题-联系方式(日本博客)”。 (如果您已经是NXP的代理商或与其有合作关系,可以直接向负责人咨询。) 这是一份关于如何在 i.MX95 的 eIQ Neutron NPU 上运行 AI 模型的实用指南。 本文档解释了将 ONNX/TensorFlow 模型转换为 TFLite、将其量化为 INT8、将其编译为 Neutron NPU、将其部署到目标以及使用 benchmark_model 评估其性能的过程。 日本博客 i.MX 处理器 技术聚焦
View full article
Compiling and running AI models for the i.MX 95 Neutron NPU (Japanese blog) Introduction The eIQ Neutron NPU integrated into the i.MX95 allows you to offload AI model inference processing to a dedicated accelerator. However, it's not always possible to run the model directly; several preparations are necessary, including quantization, operator compatibility, and version compatibility between the compiler and target runtime. This article outlines the entire process from converting a model created with ONNX or TensorFlow to TFLite, to INT8 quantization, compilation for Neutron NPUs, deployment to i.MX95, and performance evaluation using benchmark_model . While focusing on the standard and flexible Flow A , we also introduce Flow B , which leverages existing ONNX quantization environments. The command examples are for Neutron-S. When actually using them, be sure to check the documentation and release notes that come with your installed Neutron SDK , Yocto BSP , and runtime on your target. table of contents overview Host-side tool setup Conversion procedure (Flow A details) Alternative flow: Flow B (ONNX level quantization) i. Deployment to MX95 target and performance evaluation (Optional) Bit-exact verification: neutron-runner Supported Operators and Quantization Constraints Troubleshooting / Common Pitfalls In conclusion 1. Overview This article outlines the conversion procedure for running AI models trained with ONNX or TensorFlow on the eIQ Neutron NPU installed in the i.MX95. It is based on the official documentation included in the docs folder after installing the Neutron SDK: "Neutron SDK User Guide," "Neutron Compiler User Guide," "TFLite Profiler/Quantizer User Guide," "Neutron Runner User Guide," "Supported Operators (Neutron-S / Neutron-C)," and the i.MX Machine Learning User Guide (UG10166) . ℹ️ Note: The Neutron NPU in the i.MX95 is classified as the "Neutron-S" architecture (subsystem type). It differs from "Neutron-C" for MCUs such as the i.MXRT700 in terms of conversion flow and some tool options. This article focuses on the i.MX95 (Neutron-S). 1.1 Overall Flow (Flow A: Recommended) The standard flow provided by the Neutron SDK involves converting the model to TFLite format, profiling it on a representative dataset, then quantizing it using INT8, and finally compiling it for the NPU with neutron-compiler . ℹ️Supplementary information for first-time users The i.MX95's Neutron NPU actually runs on INT8 quantized TFLite models compiled for the Neutron NPU . This procedure will ultimately convert your ONNX/TensorFlow model to this format. The starting step will vary depending on the format of the pre-trained model you have prepared. Please use the following as a guide and start from the step that applies to you. INT8 quantized TFLite model: Skip steps 1-3 and start from step 4. FP32 TFLite model: Skip step 1 and start from step 2 onwards. ONNX/TensorFlow FP32 model: Perform steps 1 through 1. procedure Implementation details Main deliverables/execution environment 1 Convert from ONNX to TFLite FP32 onnx2tflite /Host PC 2 Profiling with representative datasets tflite-profiler , profile.csv / Host PC 3 INT8 quantization based on profile tflite-quantizer , quantized.tflite / Host PC 4 Compiled for Neutron NPU neutron-compiler --target imx95 /Host PC 5 Bit-exact verification as needed neutron-runner /Host PC 6 Deploy the converted model to the target. .tflite Model/i.MX95 board 7 Inference execution and performance evaluation benchmark_model + libneutron_delegate.so / i.MX95 board 1.2 Two Quantization Flows (Flow A / Flow B) The Neutron SDK User Guide defines two flows for obtaining a quantized TFLite model. flow pipeline Quantization tools Features Flow A (Recommended) ONNX FP32 → TFLite FP32 → TFLite INT8 → Neutron conversion tflite-profiler + tflite-quantizer (included with Neutron SDK) It offers a high degree of quantization flexibility. Specific operators can be excluded from quantization, allowing mapping to the Neutron Interpolator while maintaining FP precision. Flow B ONNX FP32 → ONNX INT8 → TFLite INT8 → Neutron conversion onnx2quant (eIQ ONNX2TFLite) Useful when an existing ONNX-based quantization pipeline is in place. Fine-grained operator exclusion control is limited. 💡 Hint: If you're unsure, we recommend Flow A (tflite-profiler + tflite-quantizer). Flow A is essential if you want to map certain operators (such as nonlinear activation functions) to the Neutron Interpolator without quantizing them. 2. Setting up the host-side tools Model conversion will be performed on the development host (Linux/Windows PC). Install the following tools from the NXP eIQ repository. # ONNX → TFLite Conversion Tool pip install eiq-onnx2tflite --index-url https://eiq.nxp.com/repository/ # eIQ Neutron SDK (including tflite-profiler, tflite-quantizer, neutron-compiler, neutron-runner, etc.) pip install eiq-neutron-sdk --index-url https://eiq.nxp.com/repository/ ℹ️ Note: Recommended minimum configuration for development host (neutron-compiler): CPU 2GHz or higher x 8 cores or higher, RAM 4GB or higher. Neutron-S (i.MX95, etc.) uses a constraint programming solver, so conversion time may take several minutes to several tens of minutes depending on the model. ℹ️If pip install fails If pip install fails to complete in your internal proxy environment, please consider the following options. Using the zip version of eIQ Toolkit — After obtaining and extracting the zip file from the eIQ Toolkit product page , you can run the Neutron tools under bin/ . The zip version uses hyphens, as in tflite-profiler , tflite-quantizer , neutron-compiler , and neutron-runner . On the other hand, the pip/uv version may use underscores, as in tflite_profiler , tflite_quantizer , and neutron_compiler . However, onnx2tflite and onnx2quant are not included in the zip version and must be installed using pip or uv. The following command examples use notation equivalent to the zip version. Install using uv — this may be more successful than pip install depending on your environment. pip install uv uv pip install eiq-onnx2tflite \ --index-url https://eiq.nxp.com/repository/ \ --extra-index-url https://pypi.org/simple/ If a proxy is required, you may need to configure http_proxy / https_proxy (including uppercase environment variables). The configuration method depends on your company's environment. 2.1 Neutron SDK Version and Yocto BSP Compatibility The Neutron Driver, Firmware, and Compiler must all be the same Neutron SDK version. If they are not compatible, the following warning will be output at runtime. Microcode version mismatch! Neutron Driver is 3.1.0-0X359f358d but model converted with 3.0.1-0Xd5d7918e. Runtime (driver, firmware) should be aligned with compiler Compatibility between Yocto BSP versions and Neutron SDK versions (excerpt, based on the latest BSP as of Q3 2026): Yocto BSP Support Release Period Default Neutron SDK LF_6.12.3_1.0.0 Q1/2025 1.2.0 LF_6.12.20_2.0.0 Q2/2025 2.0.2 LF_6.12.34_2.1.0 Q3/2025 2.1.3 LF_6.12.49_2.2.0 Q4/2025 2.2.2 LF_6.18.2_1.0.0 Q1/2026 2.2.3 LF_6.18.20_2.0.0 Q2/2026 3.1.2 LF_6.18.37_2.1.0 Q3/2026 3.2.1 Other Neutron SDK versions can also be used as "Upgradable," but in that case, you will need to update the target runtime (Driver/Firmware/Delegate) to the corresponding version and re-compile the model with the same version of neutron-compiler. For details, please refer to the version compatibility table in the "Neutron SDK User Guide." 3. Conversion Procedure (Flow A Details) Step 1: Convert the ONNX model to TFLite FP32 format. If your model is already in TFLite FP32 format, this step is unnecessary. Use the onnx2tflite tool to convert your ONNX model to TFLite format. onnx2tflite -o .tflite .onnx ℹ️ Note regarding SDK version -i (Input specification) and -target (FP32/INT8 switching) are deprecated in some SDK versions. The input ONNX file is specified using positional arguments, and check the latest options with onnx2tflite --help before execution. If you change the input/output layout, also check the presence and default values of --keep-io-format / --no-keep-io-format in the SDK you are using. Step 2: Profiling the FP32 model Using tflite-profiler, we measure the dynamic range (min/max/histogram) of each tensor using a representative input dataset (calibration data). ./tflite-profiler \ --input < my_model_fp32 > .tflite \ --dataset < input_data_dir > \ --output < my_model_fp32_profile > .csv ℹ️Notes regarding input data This contains a .bin file in float32 format that matches the input dimensions of the model. For image models, you can use scripts/serialize_image.py included with the SDK to resize, normalize, and convert to float32 .bin . --use_random_data , used when there is no representative dataset, is for shape verification and communication verification, but is not suitable for accuracy verification. ./tflite-profiler \ --input < my_model_fp32 > .tflite \ --use_random_data \ --random-data-samples 10 \ --output < my_model_fp32_profile > .csv A sample size of 200 to 1000 samples is usually considered sufficient for a representative dataset. For accuracy validation of quantization results, it is recommended to use a separate validation dataset that was not used for calibration. Step 3: INT8 quantization based on profile information We will use tflite-quantizer to perform INT8 quantization based on the profile (CSV) generated in step 2. ./tflite-quantizer \ --input < my_model_fp32 > .tflite \ --profile < my_model_fp32_profile > .csv \ --output < my_model_quantized > .tflite The main quantization parameters (default values) are as follows: option explanation Default value --quantization-constant-type Weight quantization data type INT8 --quantization-constant-type-bias Quantized data types with bias (Conv2D/FC, etc.) INT32 --quantization-variable-type Quantized data type of activation INT8 --quantization-constant-granularity Granularity of weight quantization (PTQ/PCQ) PCQ (per channel) --quantization-constant-schema Weight quantization schema Symmetric --quantization-variable-schema Activation Quantization Schema Asymmetric --quantization-calibration-method Calibration method (MinMax/Percentile) MinMax To exclude a specific operator from quantization, use --quantize-operator-types-except (e.g., ADD,AVERAGE_POOL_2D ). Quantization-sensitive compound operators like LayerNorm can also be excluded using layernorm . 💡 Hint: After quantization, you can verify the operation with a dummy input using the --run-after-quantize option (only valid for standard INT8 quantization configurations). ℹ️Supplementary information regarding SDK versions Quantization options may vary depending on the SDK. In our verification environment, SDK 3.2.3 has been confirmed to work with the options shown in the table and --quantization-constant-granularity PCQ , but please be sure to verify with tflite-quantizer --help of your target SDK before use. Step 4: Compiling for Neutron NPU Compile the quantized TFLite model using neutron-compiler for the i.MX95 Neutron NPU. ./neutron-compiler \ --input < my_model_quantized > .tflite \ --output < my_model_converted > .tflite \ --target imx95 neutron-compiler performs the conversion in the following three stages: step Content ① Optimize Transform the graph into a mathematically equivalent form that conforms to Neutron hardware constraints (graph path). ② Extract Hierarchically mapping corresponding operators from NeutronOperator to custom operators in NeutronGraph. ③ Generate Tile partitioning, scheduling, memory allocation, and binary generation of microcode/weights/kernels. You can check the list of supported targets and operator types using the following command. neutron-compiler --show-targets neutron-compiler --show-operator-types neutron-compiler --target imx95 --show-kernel-kinds 3.1 Major Compiler Options option explanation --target The target Neutron object to be converted (e.g., imx95). If omitted, it defaults to mcxn94x. --output Output file path. If omitted, _compiled will be appended to the input name. --dump-statistics / --dump-statistics-file Output cycle estimation statistics (per NeutronGraph) to console/file. --optimization-level OFast : Fast heuristic (default) / OOpt : Optimal solution using ILP/SAT solver (conversion time is long) --include-operator-types / --exclude-operator-types Specify the operator types to map to/exclude from the NPU. --min-num-ops-per-graph The minimum number of operators to extract as a NeutronGraph. Smaller graphs are optimized for CPU execution. --use-profiling / --use-profiling-tick-trace Enable runtime profiling on actual hardware (kernel level/tick level) --keep-graphs Preserve the intermediate graph (necessary for bit-exact verification in neutron-runner) --force-determinism This suppresses multithreaded contention in the solver and obtains definitive conversion results (conversion time increases by approximately 2-3 times). ℹ️ Note: Because Neutron-S (i.MX95, etc.) compilers use a constraint programming solver, the generated microcode (especially the TCM address) may differ slightly when the same model is converted multiple times. This is because one of several optimal solutions is selected due to multithreaded contention, and all are correct results. Use --force-determinism when determinism is required. 4. Alternative Flow: Flow B (ONNX Level Quantization) If your existing pipeline relies on ONNX-level quantization ( onnx2quant ), you can also use the following flow. Fine-grained operator exclusion control is more limited than in Flow A. procedure Implementation details Tools used / Main deliverables 1 Quantizing the ONNX FP32 model to INT8 onnx2quant , model_int8.onnx 2 Converting from ONNX INT8 to TFLite INT8 onnx2tflite , model_int8.tflite 3 Compiled for Neutron NPU neutron-compiler --target imx95 # ① ONNXレベルでINT8量子化 # -cには入力テンソル名と.npyキャリブレーションデータのディレクトリを指定 onnx2quant .onnx -o .onnx -c " ; " # ② ONNX INT8 → TFLite INT8変換(QDQ形式の場合) onnx2tflite --qdq-aware-conversion -o .tflite .onnx # ③ Neutron NPU用コンパイル neutron-compiler --input .tflite --output .tflite --target imx95 ℹ️Flow B Notes onnx2quant Then, either -c (calibration data specification) or -u (random calibration data) is required. For multiple input models, specify -c for each input. Use --qdq-aware-conversion when converting ONNX in QDQ format. Before execution, check the options of the SDK being used with onnx2quant --help / onnx2tflite --help . 5. Deployment to the i.MX95 target and performance evaluation 5.1 Neutron Runtime Configuration The Neutron runtime for i.MX95 (Neutron-S) consists of the following three components: component file Location Neutron Firmware NeutronFirmware.elf /lib/firmware/ Neutron Driver libNeutronDriver.so /lib/ TensorFlow Neutron Delegate libneutron_delegate.so /lib/ ⚠️ Note: Always back up existing files before updating the runtime. If the driver, firmware, and compiler versions do not match, a "Microcode version mismatch" warning will be displayed, and the system may become unstable. 5.2 Model Deployment Copy the converted TFLite model ( .tflite ) to the i.MX95 target board (using scp, etc.). 5.3 Performance Evaluation (benchmark_model) We will use the TensorFlow Lite benchmark_model application included in the NXP Yocto BSP and perform performance evaluation via Neutron Delegate. /usr/bin/tensorflow-lite-2.19.0/examples/benchmark_model \ --graph =< my_model_converted > .tflite \ --external_delegate_path = /usr/lib/libneutron_delegate.so \ --enable_op_profiling = true \ --num_threads = 5 Example output (summary by node type): Number of nodes executed: 26 ============================== Summary by node type ============================== [Node type] [count] [avg ms] [avg %] [cdf %] [mem KB] [times called] NeutronDelegate 1 2.882 87.919% 87.919% 0.000 1 Slice (ND, X8) 10 0.175 5.339% 93.258% 0.000 10 CONCATENATION 2 0.096 2.929% 96.187% 0.000 2 Unary Elementwise (NC) 2 0.078 2.379% 98.566% 0.000 2 Copy (NC, X8) 11 0.047 1.434% 100.000% 0.000 11 Timings (microseconds): count=270 first=3372 curr=3303 min=3015 max=3537 avg=3290.54 std=76 26 nodes observed 💡 Hint: A higher avg % in the "NeutronDelegate" row indicates that the majority of the computation is offloaded to the NPU. Other nodes (Slice, Concatenation, etc.) are executed on the CPU. If this ratio is low, unsupported operators may be causing bottlenecks, so check the constraints of each operator in the "Supported Operators" documentation. 6. (Optional) Bit-exact verification: neutron-runner neutron-runner is a tool that verifies whether a model converted by neutron-compiler produces results that perfectly match the Neutron Golden Kernel (reference implementation). It is not used for production deployment, but is useful for verifying the correctness of models during migration. item Neutron Mode Vanilla Mode Target models Model converted with --keep-graphs using neutron-compiler Standard TFLite models (FP32/FP16/INT8) Target IMX95, IMXRT700 N/A the purpose bit-exact verification using Golden Kernel Reference run (baseline for comparison) Typical validation workflow: # ① Compile with --keep-graphs enabled neutron-compiler --input model.tflite --output model_neutron.tflite --target imx95 --keep-graphs # ② Execute using the Neutron runtime (Golden Kernel) neutron-runner --input model_neutron.tflite --dataset inputs/ --use-neutron-runtime = true --target imx95 # ③ Run with Vanilla runtime (reference) neutron-runner --input model.tflite --dataset inputs/ --use-neutron-runtime = false # ④ Compare results diff model_neutron_results_0.bin model_results_0.bin ℹ️ Note: Operators not supported by the Neutron Golden Kernel will automatically fall back to the TFLite Vanilla implementation. After execution is complete, a list of the operators to which it fell back will be displayed in the console. neutron-runner execution path in a pip install environment In the pip/uv version, a Python wrapper for neutron-runner is not generated, and you may need to directly specify the ELF binary within the site package. /eiq_neutron_sdk/bin/neutron-runner \ --input model_neutron.tflite \ --dataset inputs/ \ --use-neutron-runtime=true \ --target imx95 In the zip version of eIQ Toolkit, execute bin/neutron-runner as usual. 7. Supported Operators and Quantization Constraints There are common constraints on the operators that neutron-compiler can map to the NPU. Operators that do not satisfy these constraints will fall back to CPU execution. 7.1 Common constraints (common to Neutron-S / Neutron-C) The shape of the tensor must be static (fixed) (batch size N is fixed at 1; Neutron-C partially supports variable batches). The tensor type is one of UINT8 / INT8 / INT16 / INT32 / INT64. The tensor layout is NHWC (TFLite standard). The quantization scale must be a positive FLOAT32 value. The weights are symmetrically quantized (offset = 0) using PTQ or PCQ. The bias is symmetrically quantized using PTQ or PCQ, and its scale is input_scale × weights_scale Layers that do not meet the above constraints will not be mapped to the NPU. 7.2 i. Main operators supported by MX95 (Neutron-S) CONV_2D , DEPTHWISE_CONV_2D , FULLY_CONNECTED , ADD , SUB , MUL , AVERAGE_POOL_2D , MAX_POOL_2D , CONCATENATION , PAD , PADV2 , RESHAPE , RESIZE_BILINEAR , RESIZE_NEAREST_NEIGHBOR , MEAN , SUM , LOGISTIC , TANH , HARD_SWISH , PRELU , LEAKY_RELU , RELU systems, TRANSPOSE_CONV , UNIDIRECTIONAL_SEQUENCE_LSTM etc (see SupportedOperatorsS.md for detailed constraints). ⚠️ Note: The list of supported operators is updated with each version of the Neutron Compiler (e.g., Group Conv2D support in 3.2.1, CAST/SELECT/UNIDIRECTIONAL_SEQUENCE_LSTM added in 3.1.1). Be sure to check the release notes for the SDK version you are using. 8. Troubleshooting / Common Pitfalls Symptoms cause handle Microcode version mismatch warning Driver/Firmware/Compiler version mismatch All components are reconverted and rearranged to match the same Neutron SDK version. The average percentage of NeutronDelegate is low (low NPU utilization). The model contains many unsupported operators (such as Resize/Reduce). Check the constraints in Supported Operators, replace them with alternative operators, or manually map the operators to the Interpolator while keeping them as FP. Accuracy decreases significantly after quantization. Calibration data lacks representativeness, or specific operators are sensitive to quantization. Increase the number of calibration samples (200-1000). Exclude LayerNorm and similar values using --quantize-operator-types-except The neutron-compiler conversion is extremely slow. Use OOpt optimization level, or large model First, check with OFast (default). Use OOpt only when maximum performance is required (uses up to 16 cores, increases conversion time). In neutron-runner, some operators fall back to vanilla. There are operators that are not supported by the Golden Kernel. No issues found (expected operation). Check the fallback list to ensure it's not a performance-critical area. Command not found ( command not found ) The command name and location vary depending on the installation method. For pip/uv versions, check for underscore notation and actual paths within the site package; for zip versions, check for hyphen notation and what is under bin/ onnx2tflite Option error with onnx2quant Differences between the included documentation and the SDK version Check the current option name with --help before execution. In conclusion This article introduced a standard conversion flow for running AI models on the i.MX95 Neutron-S NPU. The following three points are particularly important for practical use: Ensure that the Neutron SDK and the target runtime versions are matched. Inconsistencies between the Driver, Firmware, Delegate, and Compiler will result in Microcode version mismatch . First, use Flow A to check the correspondence between quantization and operators. Profiling with a representative dataset will make it easier to adjust accuracy and mapping to the NPU. Check the results of benchmark_model on an operator-by-operator basis. If there are many operations other than NeutronDelegate , unsupported operators or data conversions may be causing performance bottlenecks. Model accuracy, NPU offload rate, and inference latency vary depending on the model structure, quantization settings, input data, and SDK version. It is recommended to start with a small model, go through the conversion and evaluation on a real device, and then gradually apply it to the target model if there are no problems. The command examples and corresponding information in this article may vary depending on the version of the Neutron SDK you are using. For the latest official specifications, please refer to the documentation and release notes included with your SDK. ========================= We are currently unable to respond to comments left in the "Comment" section of this post. We apologize for the inconvenience, but please refer to " Technical Questions to NXP - How to Contact Us( Japanese Blog) " when making an inquiry. (If you are already an NXP distributor or have a relationship with NXP, you may ask your representative directly.) This is a practical guide for running AI models on the i.MX95's eIQ Neutron NPU. This document explains the process from converting an ONNX/TensorFlow model to TFLite, quantizing it to INT8, compiling it for Neutron NPUs, deploying it to the target, and evaluating its performance using benchmark_model. Japanese Blog i.MX Processors Technology Focus
View full article
i.MX 95のNeutron NPU向けにAIモデルをコンパイルして実行する (日本語ブログ) はじめに i.MX95に搭載されたeIQ Neutron NPUを活用すると、AIモデルの推論処理を専用アクセラレータへオフロードできます。一方で、モデルをそのまま実行できるとは限らず、量子化、演算子の対応状況、コンパイラとターゲット側ランタイムのバージョン整合など、いくつかの準備が必要です。 本記事では、ONNXまたはTensorFlowで作成したモデルをTFLiteへ変換し、INT8量子化、Neutron NPU向けコンパイル、i.MX95への配備、 benchmark_model による性能評価までを一連の流れとして整理します。標準的で柔軟な Flow A を中心に、既存のONNX量子化環境を活用できる Flow B も紹介します。 コマンド例はNeutron-S向けのものです。実際に使用する際は、インストールしたNeutron SDK、Yocto BSP、およびターゲット上のランタイムに付属するドキュメントとリリースノートを必ず確認してください。 目次 概要 ホスト側ツールのセットアップ 変換手順(Flow A 詳細) 代替フロー:Flow B(ONNXレベル量子化) i.MX95ターゲットへの展開と性能評価 (任意)Bit-exact検証:neutron-runner 対応演算子(Supported Operators)と量子化制約 トラブルシューティング/よくある落とし穴 おわりに 1. 概要 本記事は、ONNXまたはTensorFlowで学習したAIモデルを、i.MX95に搭載された eIQ Neutron NPU 上で実行するための変換手順をまとめたものです。Neutron SDKをインストールした後のdocsフォルダに含まれる公式ドキュメント「Neutron SDK User Guide」「Neutron Compiler User Guide」「TFLite Profiler/Quantizer User Guide」「Neutron Runner User Guide」「Supported Operators (Neutron-S / Neutron-C)」およびi.MX機械学習ユーザー・ガイド(UG10166)を基に構成しています。 ℹ️ 補足: i.MX95 の Neutron NPU は「Neutron-S」アーキテクチャ(サブシステム型)に分類されます。i.MXRT700等のMCU向け「Neutron-C」とは変換フローや一部ツールオプションが異なります。本記事は i.MX95(Neutron-S)を対象とします。 1.1 全体フロー(Flow A:推奨) Neutron SDKが提供する標準フローは、モデルをTFLite形式へ変換し、代表データセットでプロファイリングを行ったうえでINT8量子化し、 neutron-compiler でNPU向けにコンパイルする流れです。 ℹ️ 初めての方向けの補足 i.MX95のNeutron NPUで実際に動作するのは、Neutron NPU向けにコンパイルされたINT8量子化済みのTFLiteモデルです。本手順では、手元のONNX/TensorFlowモデルを最終的にこの形式へ変換します。 準備した学習済みモデルの形式によって、開始するステップが異なります。以下を目安に、該当するステップから実施してください。 INT8量子化済みTFLiteモデル:ステップ1〜3を省略し、ステップ4以降から開始 FP32 TFLiteモデル:ステップ1を省略し、ステップ2以降から開始 ONNX/TensorFlowのFP32モデル:ステップ1から順に実施 手順 実施内容 主な成果物/実行環境 1 ONNXからTFLite FP32へ変換 onnx2tflite /ホストPC 2 代表データセットでプロファイリング tflite-profiler 、 profile.csv /ホストPC 3 プロファイルに基づいてINT8量子化 tflite-quantizer 、 quantized.tflite /ホストPC 4 Neutron NPU向けにコンパイル neutron-compiler --target imx95 /ホストPC 5 必要に応じてBit-exact検証 neutron-runner /ホストPC 6 変換済みモデルをターゲットへ配備 .tflite モデル/i.MX95ボード 7 推論実行と性能評価 benchmark_model + libneutron_delegate.so /i.MX95ボード 1.2 2つの量子化フロー(Flow A / Flow B) Neutron SDK User Guide では、量子化済みTFLiteモデルを得るための2つのフローが定義されています。 フロー パイプライン 量子化ツール 特徴 Flow A(推奨) ONNX FP32 → TFLite FP32 → TFLite INT8 → Neutron変換 tflite-profiler + tflite-quantizer(Neutron SDK付属) 量子化の自由度が高い。特定演算子を量子化対象から除外しFP精度のまま Neutron Interpolator にマッピング可能 Flow B ONNX FP32 → ONNX INT8 → TFLite INT8 → Neutron変換 onnx2quant(eIQ ONNX2TFLite) 既存のONNXベース量子化パイプラインがある場合に有用。細かい演算子除外制御は限定的 💡 ヒント: 判断に迷う場合は Flow A(tflite-profiler + tflite-quantizer)を推奨します。特定の演算子(非線形活性化関数など)を量子化せずNeutron Interpolatorへマッピングしたい場合は Flow A が必須です。 2. ホスト側ツールのセットアップ モデル変換は開発ホスト(Linux/Windows PC)上で実施します。NXPのeIQリポジトリから以下のツールをインストールします。 # ONNX → TFLite 変換ツール pip install eiq-onnx2tflite --index-url https://eiq.nxp.com/repository/ # eIQ Neutron SDK(tflite-profiler, tflite-quantizer, neutron-compiler, neutron-runner 等を含む) pip install eiq-neutron-sdk --index-url https://eiq.nxp.com/repository/ ℹ️ 補足: 推奨開発ホスト最小構成(neutron-compiler):CPU 2GHz以上 ×8コア以上、RAM 4GB以上。Neutron-S(i.MX95等)はconstraint programmingソルバーを使用するため、モデルによって変換時間が数分~数十分かかることがあります。 ℹ️ pip installがうまくいかない場合 社内プロキシ環境などで pip install が完了しない場合は、次の方法を検討してください。 eIQ Toolkitのzip版を使う — eIQ Toolkit製品ページからzipを取得して展開すると、 bin/ 配下のNeutronツールを実行できます。zip版では、 tflite-profiler 、 tflite-quantizer 、 neutron-compiler 、 neutron-runner のようにハイフン表記を使用します。一方、pip/uv版では tflite_profiler 、 tflite_quantizer 、 neutron_compiler のようにアンダースコア表記になる場合があります。ただし、 onnx2tflite / onnx2quant はzip版に含まれないため、pipまたはuvでの導入が必要です。以降のコマンド例はzip版相当の表記です。 uv を使ってインストールする — 環境によっては pip install より成功しやすい場合があります。 pip install uv uv pip install eiq-onnx2tflite \ --index-url https://eiq.nxp.com/repository/ \ --extra-index-url https://pypi.org/simple/ プロキシ経由が必要な場合は、 http_proxy / https_proxy (大文字の環境変数も含む)の設定が必要になる場合があります。設定方法は社内環境に依存します。 2.1 Neutron SDK バージョンと Yocto BSP の整合性 Neutron Driver・Firmware・Compilerは必ず同一のNeutron SDKバージョンに揃える必要があります。整合していない場合、ランタイムに次の警告が出力されます。 Microcode version mismatch! Neutron Driver is 3.1.0-0X359f358d but model converted with 3.0.1-0Xd5d7918e. Runtime (driver, firmware) should be aligned with compiler Yocto BSPバージョンとNeutron SDKバージョンの対応(抜粋、2026年Q3時点の最新BSPを基準): Yocto BSP 対応リリース期 デフォルトNeutron SDK LF_6.12.3_1.0.0 Q1/2025 1.2.0 LF_6.12.20_2.0.0 Q2/2025 2.0.2 LF_6.12.34_2.1.0 Q3/2025 2.1.3 LF_6.12.49_2.2.0 Q4/2025 2.2.2 LF_6.18.2_1.0.0 Q1/2026 2.2.3 LF_6.18.20_2.0.0 Q2/2026 3.1.2 LF_6.18.37_2.1.0 Q3/2026 3.2.1 上記以外のNeutron SDKバージョンも「Upgradable」として使用可能ですが、その場合はターゲット側のランタイム(Driver / Firmware / Delegate)を該当バージョンに更新し、同じバージョンの neutron-compiler でモデルを再変換する必要があります。詳細は「Neutron SDK User Guide」のバージョン互換表を参照してください。 3. 変換手順(Flow A 詳細) ステップ1:ONNXモデルをTFLite FP32形式に変換 モデルが既にTFLite FP32形式の場合はこのステップは不要です。onnx2tfliteツールを使用してONNXモデルをTFLite形式に変換します。 onnx2tflite -o .tflite .onnx ℹ️ SDKバージョンに関する注意 -i (入力指定)や -target (FP32/INT8の切り替え)は、SDKバージョンによっては廃止されています。入力ONNXファイルは位置引数で指定し、実行前に onnx2tflite --help で最新のオプションを確認してください。入出力レイアウトを変更する場合は、使用中のSDKで --keep-io-format / --no-keep-io-format の有無と既定値も確認します。 ステップ2:FP32モデルのプロファイリング tflite-profilerを使用し、代表的な入力データセット(キャリブレーションデータ)を用いて各テンソルの動的範囲(min/max/ヒストグラム)を計測します。 ./tflite-profiler \ --input <my_model_fp32>.tflite \ --dataset <input_data_dir> \ --output <my_model_fp32_profile>.csv ℹ️ 入力データに関する注意 には、モデルの入力次元に一致するfloat32形式の .bin ファイルを格納します。画像モデルでは、SDKに付属する scripts/serialize_image.py を使って、リサイズ・正規化・float32の .bin 化を行えます。代表データセットがない場合の --use_random_data は、形状確認や疎通確認向けで、精度検証には適しません。 ./tflite-profiler \ --input <my_model_fp32>.tflite \ --use_random_data \ --random-data-samples 10 \ --output <my_model_fp32_profile>.csv 代表データセットのサンプル数は、通常200〜1000サンプルで十分とされています。量子化結果の精度検証には、キャリブレーションに使用していない別の検証用データセットを使用することが推奨されます。 ステップ3:プロファイル情報に基づくINT8量子化 tflite-quantizerを使用して、ステップ2で生成したプロファイル(CSV)に基づきINT8量子化を行います。 ./tflite-quantizer \ --input <my_model_fp32>.tflite \ --profile <my_model_fp32_profile>.csv \ --output <my_model_quantized>.tflite 主な量子化パラメータ(デフォルト値)は以下の通りです。 オプション 説明 デフォルト値 --quantization-constant-type 重みの量子化データ型 INT8 --quantization-constant-type-bias バイアス(Conv2D/FC等)の量子化データ型 INT32 --quantization-variable-type 活性化(アクティベーション)の量子化データ型 INT8 --quantization-constant-granularity 重み量子化の粒度(PTQ/PCQ) PCQ(チャネル単位) --quantization-constant-schema 重みの量子化スキーマ Symmetric --quantization-variable-schema 活性化の量子化スキーマ Asymmetric --quantization-calibration-method キャリブレーション方式(MinMax/Percentile) MinMax 特定の演算子を量子化対象から除外したい場合は --quantize-operator-types-except (例: ADD,AVERAGE_POOL_2D )を使用します。LayerNormのような量子化に敏感な複合演算子も layernorm 指定で除外可能です。 💡 ヒント: 量子化後は --run-after-quantize オプションでダミー入力による動作確認が可能です(標準的なINT8量子化構成の場合のみ有効)。 ℹ️ SDKバージョンに関する補足 量子化オプションはSDKによって異なる場合があります。検証環境のSDK 3.2.3では、表に示したオプションと --quantization-constant-granularity PCQ の実行を確認していますが、使用前に必ず対象SDKの tflite-quantizer --help で確認してください。 ステップ4:Neutron NPU用コンパイル 量子化済みTFLiteモデルをneutron-compilerでi.MX95のNeutron NPU向けにコンパイルします。 ./neutron-compiler \ --input <my_model_quantized>.tflite \ --output <my_model_converted>.tflite \ --target imx95 neutron-compilerは以下の3段階で変換を行います。 段階 内容 ① Optimize(最適化) グラフをNeutronハードウェア制約に適合するよう数学的に等価な形へ変換(グラフパス) ② Extract(抽出) 対応演算子を NeutronOperator → NeutronGraph のカスタム演算子へ階層的にマッピング ③ Generate(生成) タイル分割、スケジューリング、メモリ割り付け、マイクロコード/重み/カーネルのバイナリ生成 対応ターゲット一覧やオペレータタイプ一覧は以下のコマンドで確認できます。 neutron-compiler --show-targets neutron-compiler --show-operator-types neutron-compiler --target imx95 --show-kernel-kinds 3.1 主要なコンパイラオプション オプション 説明 --target 変換先のNeutronターゲット(例:imx95)。省略時は mcxn94x --output 出力ファイルパス。省略時は入力名に _compiled を付加 --dump-statistics / --dump-statistics-file サイクル推定統計(NeutronGraphごと)をコンソール/ファイルへ出力 --optimization-level OFast :高速ヒューリスティック(デフォルト) / OOpt :ILP/SATソルバーで最適解(変換時間は長い) --include-operator-types / --exclude-operator-types NPUへマッピングする/除外する演算子タイプを指定 --min-num-ops-per-graph NeutronGraphとして抽出する最小演算子数。小さいグラフはCPU実行の方が有利な場合に調整 --use-profiling / --use-profiling-tick-trace 実機でのランタイムプロファイリングを有効化(カーネル単位/ティック単位) --keep-graphs 中間グラフを保持(neutron-runnerでのbit-exact検証に必要) --force-determinism ソルバーのマルチスレッド競合を抑制し決定的な変換結果を得る(変換時間は約2〜3倍に増加) ℹ️ 補足: Neutron-S(i.MX95等)のコンパイラは制約プログラミングソルバーを使用するため、同一モデルを複数回変換すると生成されるマイクロコード(特にTCMアドレス)がわずかに異なることがあります。これはマルチスレッドの競合による複数の最適解の一つが選ばれるためで、いずれも正しい結果です。決定性が必要な場合は --force-determinism を使用します。 4. 代替フロー:Flow B(ONNXレベル量子化) 既存のパイプラインがONNXレベルの量子化( onnx2quant )に依存している場合は、次のフローも利用できます。細かな演算子除外制御はFlow Aより限定的です。 手順 実施内容 使用ツール/主な成果物 1 ONNX FP32モデルをINT8量子化 onnx2quant 、 model_int8.onnx 2 ONNX INT8からTFLite INT8へ変換 onnx2tflite 、 model_int8.tflite 3 Neutron NPU向けにコンパイル neutron-compiler --target imx95 # ① ONNXレベルでINT8量子化 # -cには入力テンソル名と.npyキャリブレーションデータのディレクトリを指定 onnx2quant .onnx -o .onnx -c " ; " # ② ONNX INT8 → TFLite INT8変換(QDQ形式の場合) onnx2tflite --qdq-aware-conversion -o .tflite .onnx # ③ Neutron NPU用コンパイル neutron-compiler --input .tflite --output .tflite --target imx95 ℹ️ Flow Bの注意 onnx2quant では、 -c (キャリブレーションデータ指定)または -u (ランダムキャリブレーションデータ)のいずれかが必要です。複数入力モデルでは入力ごとに -c を指定します。QDQ形式のONNXを変換する場合は --qdq-aware-conversion を使用します。実行前に onnx2quant --help / onnx2tflite --help で使用中SDKのオプションを確認してください。 5. i.MX95ターゲットへの展開と性能評価 5.1 Neutronランタイムの構成 i.MX95(Neutron-S)のNeutronランタイムは以下3つのコンポーネントで構成されます。 コンポーネント ファイル 配置先 Neutron Firmware NeutronFirmware.elf /lib/firmware/ Neutron Driver libNeutronDriver.so /lib/ TensorFlow Neutron Delegate libneutron_delegate.so /lib/ ⚠️ 注意: ランタイム更新前に既存ファイルを必ずバックアップしてください。Driver・Firmware・Compilerのバージョンが一致していないと「Microcode version mismatch」警告が出力され、動作が不安定になる可能性があります。 5.2 モデルの展開 変換済みTFLiteモデル( .tflite )をi.MX95ターゲットボードへコピーします(scp等)。 5.3 性能評価(benchmark_model) NXP Yocto BSPに含まれるTensorFlow Liteの benchmark_model アプリケーションを使用し、Neutron Delegate経由で性能評価を行います。 /usr/bin/tensorflow-lite-2.19.0/examples/benchmark_model \ --graph=<my_model_converted>.tflite \ --external_delegate_path=/usr/lib/libneutron_delegate.so \ --enable_op_profiling=true \ --num_threads=5 出力例(ノードタイプ別サマリー): Number of nodes executed: 26 ============================== Summary by node type ============================== [Node type] [count] [avg ms] [avg %] [cdf %] [mem KB] [times called] NeutronDelegate 1 2.882 87.919% 87.919% 0.000 1 Slice (ND, X8) 10 0.175 5.339% 93.258% 0.000 10 CONCATENATION 2 0.096 2.929% 96.187% 0.000 2 Unary Elementwise (NC) 2 0.078 2.379% 98.566% 0.000 2 Copy (NC, X8) 11 0.047 1.434% 100.000% 0.000 11 Timings (microseconds): count=270 first=3372 curr=3303 min=3015 max=3537 avg=3290.54 std=76 26 nodes observed 💡 ヒント: 「NeutronDelegate」行の avg % が高いほど、計算の大部分がNPUへオフロードされていることを示します。それ以外のノード(Slice, Concatenation等)はCPU実行です。この比率が低い場合、未対応演算子がボトルネックになっている可能性があるため、「Supported Operators」資料で各演算子の制約を確認してください。 6. (任意)Bit-exact検証:neutron-runner neutron-runnerは、neutron-compilerで変換したモデルがNeutron Golden Kernel(参照実装)と完全に一致した結果を出すかを検証するツールです。本番デプロイには使用しませんが、モデル移行時の正しさの検証に有用です。 項目 Neutron Mode Vanilla Mode 対象モデル neutron-compilerで --keep-graphs 付きで変換したモデル 標準TFLiteモデル(FP32/FP16/INT8) 対応ターゲット imx95, imxrt700 N/A 目的 Golden Kernelによるbit-exact検証 リファレンス実行(比較用ベースライン) 典型的な検証ワークフロー: # ① --keep-graphs付きでコンパイル neutron-compiler --input model.tflite --output model_neutron.tflite --target imx95 --keep-graphs # ② Neutronランタイム(Golden Kernel)で実行 neutron-runner --input model_neutron.tflite --dataset inputs/ --use-neutron-runtime=true --target imx95 # ③ Vanillaランタイム(リファレンス)で実行 neutron-runner --input model.tflite --dataset inputs/ --use-neutron-runtime=false # ④ 結果比較 diff model_neutron_results_0.bin model_results_0.bin ℹ️ 補足: Neutron Golden Kernelが未対応の演算子は自動的にTFLite Vanilla実装にフォールバックします。実行完了後、フォールバックした演算子一覧がコンソールに表示されます。 pip install環境でのneutron-runner実行パス pip/uv版では、 neutron-runner 用のPythonラッパーが生成されず、サイトパッケージ内のELFバイナリを直接指定する場合があります。 /eiq_neutron_sdk/bin/neutron-runner \ --input model_neutron.tflite \ --dataset inputs/ \ --use-neutron-runtime=true \ --target imx95 eIQ Toolkitのzip版では、通常どおり bin/neutron-runner を実行します。 7. 対応演算子(Supported Operators)と量子化制約 neutron-compilerがNPUへマッピング可能な演算子には共通の制約があります。制約を満たさない演算子はCPU実行にフォールバックします。 7.1 共通制約(Neutron-S / Neutron-C 共通) テンソルの形状は静的(固定)でなければならない(バッチサイズNは1固定:Neutron-Cは可変バッチも一部対応) テンソル型は UINT8 / INT8 / INT16 / INT32 / INT64 のいずれか テンソルレイアウトは NHWC(TFLite標準) 量子化スケールは正のFLOAT32値であること 重み(Weights)はPTQまたはPCQで対称量子化(オフセット=0)されていること バイアス(Bias)はPTQまたはPCQで対称量子化され、スケールは input_scale × weights_scale であること 上記制約を満たさない層はNPUへマッピングされません。 7.2 i.MX95(Neutron-S)で対応する主な演算子 CONV_2D , DEPTHWISE_CONV_2D , FULLY_CONNECTED , ADD , SUB , MUL , AVERAGE_POOL_2D , MAX_POOL_2D , CONCATENATION , PAD , PADV2 , RESHAPE , RESIZE_BILINEAR , RESIZE_NEAREST_NEIGHBOR , MEAN , SUM , LOGISTIC , TANH , HARD_SWISH , PRELU , LEAKY_RELU , RELU系, TRANSPOSE_CONV , UNIDIRECTIONAL_SEQUENCE_LSTM 等(詳細な制約は SupportedOperatorsS.md を参照)。 ⚠️ 注意: 対応演算子リストは Neutron Compiler のバージョンごとに更新されます(例:3.2.1でGroup Conv2D対応、3.1.1でCAST/SELECT/UNIDIRECTIONAL_SEQUENCE_LSTM追加)。使用するSDKバージョンのリリースノートを必ず確認してください。 8. トラブルシューティング/よくある落とし穴 症状 原因 対処 Microcode version mismatch 警告 Driver/Firmware/Compilerのバージョン不一致 全コンポーネントを同一Neutron SDKバージョンに揃えて再変換・再配置 NeutronDelegateのavg%が低い(NPU活用率が低い) モデル内に未対応演算子(Resize/Reduce等)が多く含まれる Supported Operatorsで制約を確認し、代替演算子へ置換、または演算子を手動でFPのままInterpolatorへマッピング 量子化後に精度が大きく低下 キャリブレーションデータが代表性不足、または特定演算子が量子化に敏感 キャリブレーションサンプル数を増やす(200〜1000)。LayerNorm等は --quantize-operator-types-except で除外 neutron-compilerの変換が極端に遅い OOpt最適化レベル使用、または大規模モデル まずOFast(デフォルト)で確認。OOptは最大性能が必要な場合のみ使用(最大16コア使用、変換時間増大) neutron-runnerで一部演算子がVanillaにフォールバック Golden Kernel未対応演算子が存在 問題なし(想定動作)。フォールバック一覧を確認し、性能クリティカルな箇所でないか確認 コマンドが見つからない( command not found ) インストール方法によってコマンド名・配置場所が異なる pip/uv版はアンダースコア表記やサイトパッケージ内の実体パスを確認し、zip版はハイフン表記と bin/ 配下を確認する onnx2tflite / onnx2quant でオプションエラー 付属ドキュメントとSDKバージョンの相違 実行前に --help で現在のオプション名を確認する おわりに 本記事では、i.MX95のNeutron-S NPUでAIモデルを実行するための標準的な変換フローを紹介しました。実運用で特に重要なポイントは、次の3点です。 Neutron SDKとターゲット側ランタイムのバージョンを揃えること。 Driver、Firmware、Delegate、Compilerの不整合は、 Microcode version mismatch の原因になります。 まずはFlow Aで量子化と演算子の対応状況を確認すること。 代表データセットを使ったプロファイリングにより、精度とNPUへのマッピングを調整しやすくなります。 benchmark_model の結果を演算子単位で確認すること。 NeutronDelegate 以外の処理が多い場合は、未対応演算子やデータ変換が性能上のボトルネックになっている可能性があります。 モデルの精度、NPUへのオフロード率、推論レイテンシーは、モデル構造、量子化設定、入力データ、SDKバージョンによって変わります。まずは小さなモデルで変換から実機評価までを通し、問題がなければ対象モデルへ段階的に適用する進め方がおすすめです。 本記事のコマンド例および対応情報は、使用するNeutron SDKのバージョンによって変わる場合があります。最新の正式仕様は、利用中のSDKに付属するドキュメントとリリースノートを参照してください。 ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。 お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。 (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) i.MX95のeIQ Neutron NPUでAIモデルを実行するための実践ガイドです。 ONNX/TensorFlowモデルのTFLite変換、INT8量子化、Neutron NPU向けコンパイル、ターゲットへの展開、benchmark_modelによる性能評価までの流れを解説します。 日本語ブログ i.MX Processors Technology Focus
View full article
i.MX RT1176: GPTの最大周波数 GPTの最大周波数 #RT1176 を知りたいです。GPTのキャプチャ機能を使って信号の周波数を測定したいと思っています。これまではMCUを使っていましたが、タイマーの最大周波数STM32H7 240MHzで、低く感じます。だから高い周波数タイマーを持つMCUが欲しいです。しかしRT1170のデータシートにはGPTの導入がありません。
View full article
AN15071:在哪里可以下载演示版和工具? 您好,NXP团队, AN15071 Rev 1.0(MCX N947 上的 CMIS over I3C)提到了mcxn947_optical_module_cmis_over_i3c_demo项目及其脚本文件夹中的cmis_test_tool.exe ,但文档中唯一的链接是 USB 转 I3C 桥接存储库。 演示源代码和PC工具在哪里可以下载?或者它们何时发布? 感谢您的支持, 查尔斯·迪亚斯 FRDM 培训 动手实践培训 MCX N
View full article
需要NXP IMX 1050evkb的帮助 我学过C语言编程。现在,我正在尝试学习嵌入式开发的基础知识。我刚买了一套NXP 1050评估套件。但这与 NXP 入门指南中提到的基本步骤并不一致。- 它没有内置加速度计项目。我尝试安装驱动程序,但链接指向构建 SDK 的页面。指南上说要安装SDK,但我找不到任何可安装的文件。里面的视频都太老了。 有人能帮忙吗?
View full article
使用百分比大小设置图像按钮时存在一个错误。 在使用 GUI Guider 2.0.1 版本绘制用户界面时,我发现使用百分比大小的图像按钮存在一个错误。当我将图像按钮的大小设置为百分比时,自动生成的图像源的大小也将是该百分比,这可能会导致图像显示异常。
View full article
FRDM-MCXN947 上的 SWO 数据监视功能无法正常工作 NXP社区的各位朋友,大家好! 我正在使用MCUXpresso IDE 25.6和FRDM-MCXN947开发板。 SWO 的其他所有功能,包括 ITM 控制台输出、中断、性能分析和计数器,均运行正常。但是, SWO 数据监视器不显示实时变量值,也不生成图表。 我测试了一个简单的程序,其中包含持续更新的全局易失性变量。暂停时,这些变量在调试器中显示正确的值,并且在执行过程中持续更新(显示在全局变量中),但 SWO 数据监视器仍然为空或显示零值。 我已附上 SWO 跟踪配置的屏幕截图。SWO 时钟频率设置为12.0 MHz ,并且在时钟配置工具中启用了跟踪时钟。SWO 跟踪统计信息显示只有有效字节,没有坏字节,并且跟踪配置似乎已激活。 这是我使用的简单代码 - #include #include "fsl_common.h" #include "fsl_clock.h" #include "board.h" volatile uint32_t trace_counter = 0 ; volatile uint32_t trace_ramp = 0 ; volatile uint32_t trace_wave = 0 ; int main ( void ) { BOARD_InitBootClocks () ; 当( 1 ) { trace_counter ++; trace_ramp += 10 U ; 如果( trace_ramp >= 1000 U ) { trace_ramp = 0 U ; } trace_wave = ( trace_wave == 0 U ) ?100 U : 0 U ; SDK_DelayAtLeastUs ( 100000U , CLOCK_GetFreq ( kCLOCK_CoreSysClk ) ) ; } } 附上屏幕截图以便更好地说明。 这会不会是 MCUXpresso IDE 25.6 中 MCXN947 上的 SWO 数据监视器存在限制或兼容性问题?要启用实时变量监测,是否需要任何额外的目标、探针或观察点配置? 感谢您的帮助。 FRDM-MCXN947 MCX N
View full article
如何在 CodeWarrior 10.6 中使用 CodeWarrior 2.1 生成的 hex 文件对 MPC5607B 进行编程 您好,我遇到一个问题。在CodeWarrior 2.1中编译MPC5607B生成的hex文件可以在CodeWarrior 2.1中正常烧录,但无法在CodeWarrior 10.6中编程。 CodeWarrior 10.6 中的编程配置选择和错误信息如下:
View full article
2026年版 ベスト個人データ削除サービス:独立機関によるテストと専門家によるランキング上位6社 結論 6か月にわたる実践形式の評価の結果、DeleteMeは 最高の個人データ削除サービスの明確な勝者として浮上しました。750+のブローカーカバレッジと人間のプライバシー専門家を擁し、自動化ツールでは到底及ばない結果を提供します。 個人情報を削除 この2年間、私は数多くのデータ削除サービスを試してみましたが、正直なところ、ほとんどが期待外れでした。私の情報は一時的に消え、数週間後に人検索サイトで再び現れることがありました。まるでお金をドブに捨てたような気分だった。 DeleteMeを知ってから、状況は一変しました。最初は躊躇しましたが、半年間継続して使用した結果、2026年時点で利用できる最高の個人データ削除サービスだと確信しました。信頼できるIncogniの代替サービスを探している場合、またはインターネットから個人情報を完全に削除する方法を知りたい場合は、これが解決策です。 DeleteMeが際立つ理由 永久的な削除:一度限りのクリーンアップを実行する基本的な自動データ削除サービスとは異なり、DeleteMeは継続的な監視を行い、データが再び出現した場合(これは常に発生します)、その都度データを削除します。 人間の介入:ボットが失敗した場合、実際のプライバシー専門家が対応し、抵抗するサイトを管理します。この人的要素こそが、それを真に効果的なデータブローカー削除サービスへと変える要因となるのです。 比類のないカバレッジ:750以上のデータブローカーを監視しており、Incogni(約180ブローカー)のような競合他社やOpteryのような低価格オプションよりもはるかに多い。 透明性の高い報告:四半期ごとの報告書には、発見され、正常に除去された内容が正確に記載されており、文書化された安心感を提供します。 他のトップ6サービスとの比較 公平性を確保するため、調査中に他の人気のあるDeleteMe競合サービスも評価しました。 Incogni:フルオートメーション(~月$6.49)の予算的に堅実な選択肢です。しかし、複雑なシナリオに対する人間のサポートが不足しています。 Optery :スクリーンショットによる確認で視覚的な証明に最適です(月額約3.99ドル)。ただし、その後の対応の積極性はDeleteMeとは一致しない。 Aura :VPN/アンチウイルスとのバンドル削除(月額約12ドル)が可能ですが、専用のブローカーデータベースは限定的です(約100サイト)。 プライバシー Bee:テクノロジーに詳しいユーザー向けに深いカスタマイズを提供します(~月$14.99)、しかし、カジュアルユーザーには複雑すぎる。 Cloaked :既存のデータを削除するのではなく、積極的なエイリアス生成に重点を置いています。代替ではなく、優れた補完機能です。 プレミアム価格は正当化されるのか? DeleteMeは年間10.75ドル/月で、基本的な代替サービスよりも高額です。しかし、人間の専門知識、広範なブローカーネットワーク、そして長期的な情報抑制の保証という組み合わせは、それだけの価値がある。手動での除去は無料だが、膨大な時間がかかり、効果も一時的なものにとどまる。 ウェブ上に個人情報が散乱しているのを見てうんざりしていて、永続的な保護を提供するデータ削除サービスが必要な場合。
View full article