Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine Board/SDK: FRDM-RW612, NXP-Zephyr v4.3.0 Configured on-board RGB LED (GPIO0=Blue, GPIO1=Red, GPIO12=Green) as pwm-leds on CTIMER0, channels 0/1/2 respectively, using IO_MUX_CT0_MAT0_OUT_IO0, IO_MUX_CT0_MAT1_OUT_IO1, IO_MUX_CT0_MAT2_OUT_IO12 in a shared pinctrl-0 group. Ran a test app cycling duty cycle on all three channels. Red and Green LEDs PWM correctly (confirmed with Saleae logic analyzer — clean waveforms on GPIO1 and GPIO12). Blue LED (GPIO0/MAT0) stays completely off — logic analyzer shows a flat line, no toggling at any duty cycle (0–100%). Digital GPIO (non-PWM) toggle on GPIO0 works fine, Only CTIMER0 MAT0 channel fails to output PWM; MAT1/MAT2 on the same timer instance work. What we need: Confirmation whether GPIO0/CT0_MAT0 is a known-working PWM combination on FRDM-RW612 under Zephyr. Guidance on any erratum/limitation for CTIMER0 channel 0 on RW612. Any working .overlay example that PWMs GPIO0 via CTIMER, for us to diff against. frdm_rw612.overlay ``` #include / { pwm_outputs { compatible = "pwm-leds"; pwm_gpio0: pwm_gpio0 { pwms = <&ctimer0_pwm 0 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio1: pwm_gpio1 { pwms = <&ctimer0_pwm 1 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; pwm_gpio12: pwm_gpio12 { pwms = <&ctimer0_pwm 2 PWM_KHZ(1) PWM_POLARITY_NORMAL>; }; }; aliases { pwm-gpio0 = &pwm_gpio0; pwm-gpio1 = &pwm_gpio1; pwm-gpio12 = &pwm_gpio12; }; }; ctimer0_pwm: &ctimer0 { compatible = "nxp,ctimer-pwm"; status = "okay"; clk-source = <5>; clocks = <&clkctl1 MCUX_CTIMER0_CLK>; #pwm-cells = <3>; mode = <0>; prescale = <0>; pinctrl-0 = <&pinmux_ctimer0_pwm>; pinctrl-names = "default"; }; &pinctrl { pinmux_ctimer0_pwm: pinmux_ctimer0_pwm { group0 { pinmux = < IO_MUX_CT0_MAT0_OUT_IO0 IO_MUX_CT0_MAT1_OUT_IO1 IO_MUX_CT0_MAT2_OUT_IO12 >; slew-rate = "normal"; }; }; }; ``` Evaluation Board Re: FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine Hello, Hope you are doing well. Could you please helps us confirm what application are you taking as a base? Also, can you clarify how are you measuring the pwm signals? Specific pin of the FRDM for each pwm. Best Regards, Ricardo Re: FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine @Ricardo_Zamora, I created a custom project based on zephyr/samples/basic/rgb_led using NXP-Zephyr v4.3.0. When I build the project with v4.3.0, ctimer0_pwm 0 does not work. However, when I build it with v4.4.1.1 or later, ctimer0_pwm 0 works as expected. I used a Saleae logic analyzer to capture the PWM signals during testing and confirmed the difference between the two versions. Could this be a bug in v4.3.0?
View full article
i.MX8M Quad – M4コア起動手順と必要なU-Bootコマンド 私は i.MX8M Quad EVK SDカードイメージ を扱っており 、 U-Bootから Cortex-M4コア でアプリケーションの起動と実行の正しい手順を理解したい と思っています。 i.MX8M Quad用の MCUXpresso SDK をダウンロード し、 M4コア用の Hello World 例を無事にコンパイルしました。生成された.bin ファームウェアファイル も手に入りました。 U-Bootから このM4.bin ファームウェアをロードして起動するための 正しい U-Bootコマンドとブートシーケンス を教えてください 。また、M4コンソールを確認する方法も教えてください。 #imx8mq #m4 #cortex-m4 #boot_m4 #UBoot Yocto #ubootコマンド i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Yocto Project Re: i.MX8M Quad – M4 Core Boot Steps and Required U-Boot Commands こんにちは、 U-Bootコマンドの手順 1. SDカードを準備する コンパイル済みの .bin ファイルをコピーしてください。ファイル(例: hello_world.bin )SDカードをEVKに挿入する前に、SDカードのFAT/ブートパーティション(パーティション1)にコピーしてください。 2. U-Bootの自動起動を停止する ボードの電源を入れ、U-Bootプロンプトが表示されたらすぐに任意のキーを押して自動起動を中断してください。 3. オプションA — TCM実行(MCUXpresso SDKアプリに推奨) これはMCUXpresso SDKのHello World例の標準的な方法であり、TCM at 0x1FFE0000 (エイリアス)から実行するためにリンクされています 0x7E0000 😞 # Step 1: Load .bin from SD card FAT partition into a DDR staging buffer u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin # Step 2: Copy the image from DDR staging buffer into the M4's TCM u-boot=> cp.b 0x48000000 0x7e0000 0x20000 # Step 3: (Optional but recommended) Flush data cache before starting M4 u-boot=> dcache flush # Step 4: Release M4 from reset and start execution from TCM u-boot=> bootaux 0x7e0000   以下のような出力が表示されるはずです。 ## Starting auxiliary core stack = 0x20020000, pc = 0x1FFE0305...       3. オプションB — DDR実行 バイナリが DDR から実行するようにリンクされている場合 (例: 0x80000000 😞 u-boot=> fatload mmc 1:1 0x80000000 hello_world.bin u-boot=> dcache flush u-boot=> bootaux 0x80000000   ⚠️ 重要: MCUXpresso SDKアプリをコンパイルした際に使った リンカースクリプト によって、 0x7e0000(TCM)または 0x80000000(DDR)を使用してください。 デフォルトのHello Worldの例では、TCM( 0x7e0000 )が正しいターゲットです。 オプション:リソーステーブル領域をクリアする(Hello World / ベアメタル環境向け) イメージに RPMsg リソース テーブルがない場合 (例えば、単純な hello_world.bin など)、後でLinuxを混乱させる可能性のあるゴミ値を避けるために、リソーステーブル領域をクリアしてください: u-boot=> mw 0xb80ff000 0 4 オプション:Linuxも起動する prepare_mcore を実行する M4を起動した後もLinuxを起動し続ける予定がある場合は、 bootaux 前にこの追加コマンドを実行してください。LinuxがM4で使われるクロックを無効化しないようにクロックを設定しています: u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin u-boot=> cp.b 0x48000000 0x7e0000 0x20000 u-boot=> run prepare_mcore u-boot=> bootaux 0x7e0000     M4コンソールの確認 i.MX8MQ EVKは、PCに接続すると 2つの別々のCOMポートを列挙する FTDI USBシリアルチップを使用しています。 ポート コア 小さい方の番号(例:COM9 / /dev/ttyUSB0 ) Cortex-A53(U-Boot / Linuxコンソール) より大きな番号(例:COM10 / /dev/ttyUSB1 ) Cortex-M4コンソール       両ポートの設定: 115200ボー、8データビット、パリティなし、1ストップビット(115200 8N1)。 2つの別々のターミナルウィンドウを開きます(例:TeraTerm、minicom、PuTTY)。 ターミナル1 → 下位COMポート → U-Bootコマンド用 ターミナル2 → 上位COMポート → M4 Hello World 出力を確認する クイックリファレンス:環境変数によるオートメーション 利便性のためにU-Bootの環境変数として保存できます: u-boot=> setenv m4_image hello_world.bin u-boot=> setenv m4_loadaddr 0x7e0000 u-boot=> setenv load_m4_image "fatload mmc '${mmcdev}':'${mmcpart}' 0x48000000 '${m4_image}'; cp.b 0x48000000 0x7e0000 0x20000" u-boot=> setenv run_m4_image "run load_m4_image; bootaux '${m4_loadaddr}'" u-boot=> saveenv # Then simply run: u-boot=> run run_m4_image     主要参考資料 UG10163 — i.MX Linuxユーザーガイド (セクション4.7.4) — i.MX8M Quadの公式M4起動手順 AN5317 — i.MX 用U-Boot/LinuxからCortex-Mにコードを読み込む 方法 — TCMとDDRの読み込みについて詳しく検討 GS-MCIMX8M-EVK — MCIMX8M-EVK 入門ガイド— ボード固有のステップバイステップガイド よろしくお願いします。
View full article
i.MX8MP ENET_RXC/A25 引脚复用说明(适用于 MII 接口) 我们正在使用 PHYTEC phyCORE-i.MX8M Plus SOM 开发定制板,并正在审查以太网引脚复用,以便从现有的 RGMII 接口迁移到 MII。PHYTEC SOM 引脚 A25 与 i.MX8M Plus ENET_RXC 信号相关联。在 i.MX8MP 引脚复用器中,ENET_RXC 支持 ALT0 = CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK 和 ALT1 = ENET_QOS_RX_ER。我们需要澄清预期 MII 配置的正确引脚分配和接口要求。具体来说,MII 接收接口是否需要 ENET_RXC,或者是否可以将所需的 RX_ER 功能分配给另一个合适的 i.MX8M Plus 焊盘/GPIO?如果可以使用其他焊盘,请提供推荐的引脚映射。我们还需要确认 i.MX8M Plus ENET_QOS 控制器是否支持预期的 MII 接口,以及是否需要对 IOMUX、MAC、设备树、GPR 或 PHY 配置进行任何更改。请提供 i.MX8M Plus 与 PHYTEC phyCORE SOM 的推荐以太网引脚映射和配置建议。 Re: i.MX8MP ENET_RXC/A25 Pinmux Clarification for MII Interface 您好, 感谢您对恩智浦半导体产品的关注, i.MX 8M Plus 不支持 MII,请参考 RM 中的以下摘录: 通过以下方式之一与商用以太网PHY设备无缝连接: 工作频率为 50 MHz 的 2 位精简 MII (RMII)。 运行于125 MHz的一个(双倍数据速率)4位简化GMII (RGMII)。 有关信号映射,您可以参考 i.MX 8M Plus DS。 此致
View full article
i.MX 8M Plus:RGMIIからMIIへの移行 – ENET_RXC / RX_ERピン割り当て こんにちは、NXPコミュニティの皆さん、 NXP i.MX 8M Plus SoCとPHYTEC phyCORE-i.MX8M Plus SOMを使ったカスタムイーサネット設計に取り組んでいます。 現在、RGMIIをベースにしたイーサネット設計を採用しており、カスタムボードのRGMIIからMIIへの移行を検討しています。 ピンマルチプレクサのレビュー中に、i.MX 8M PlusのENET_RXCパッドについて以下の機能を発見しました。 ALT0: CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK ALT1: ENET_QOS_RX_ER ALT5: GPIO1_IO25 当社のPHYTEC SOM割り当てでは、この信号はSOMピンA25に関連付けられています。 私の懸念は、RGMIIからMIIへの移行に関するものです。必要なイーサネット信号はRGMIIとMIIで異なります。 以下の点について明確にしておきたいと思います。 1. i.MX 8M Plus ENET_QOS MACはRGMIIやRMIIに加えて、真のMIIインターフェースをサポートしていますか? 2. 真のMIIがサポートされている場合、MII_RX_CLK、MII_RX_DV、MII_RX_ER、MII_RXD0~MII_RXD3、MII_TX_CLK、MII_TX_EN、およびMII_TXD0~MII_TXD3の正しいi.MX 8M Plusピンマッピングは何ですか? 3. ENET_RXCパッドの場合、ALT0、CCM_ENET_QOS_CLOCK_GENERATE_RX_CLKはRGMII専用ですか?それともこの機能はMIIの受信クロックとして使えますか? 4. RGMIIからMIIへの移行中、MIIインターフェースのENET_RXCパッドにENET_QOS_RX_ERが必要ですか? 5. MII_RX_ERが必要な場合、IOMUXを通じて他の利用可能な i.MX 8M Plusパッドに割り当てられますか?それともこの信号は内部的にそのENET_RXCパッドに紐づいているのでしょうか? 6. PHYTEC phyCORE-i.MX8M Plus SOMを使用している場合、MIIインターフェースの実装に伴い考慮すべきSOMルーティングの制限はありますか? 7. もしMIIがサポートされている場合、i.MX 8M Plus MIIのMAC-to-PHYピン構成およびデバイスツリー構成の正しい例や参考文献を誰か教えていただけますか? この説明の理由は、現在ボッシュ社製カスタムキャリアボードのピン配置図と回路図を作成しているためです。SOMとキャリアボードのピン配置を変更する前に、MII信号のマッピングが正しいことを確認したい。 当社のBSPからの関連するピンマルチプレクサ情報は以下のとおりです。 ENET_RXC ALT0: CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK ALT1: ENET_QOS_RX_ER ALT5: GPIO1_IO25 i.MX 8M Plus ENET_QOS MACで真のRGMIIからMIIへの移行がサポートされているのか、もしサポートされているなら、どのように扱うべきENET_RXCやRX_ERを扱うべきか、誰か確認していただけますか? よろしくお願いします。 Re: i.MX 8M Plus: RGMII to MII Migration – ENET_RXC / RX_ER Pin Assignment こんにちは、 NXP Semiconductors製品にご関心いただきありがとうございます。 この問題は このトピックに関連しています。 このThreadでENET_QOS詳細を追加します。以前は聞かれていなかったので。 ENETもENET_QOS/EQOSもMIIをサポートしていません。以下のEQOSのRM情報を参照してください。 RMII(10/100Mbps)、RGMII(10/100/1000Mbps) DSより: 1.8V/3.3V RMII動作、1.8V RGMII動作 この投稿では、ENET信号がEQOS信号とインターフェースしていることについて言及しています。NET信号はNETモジュールに対応し、ENET_QOSはEQOSモジュールに対応します。PHYTEC SOM内の利用可能な信号が希望する機能にマッピングできるか必ず確認してください。pinfunc.hをベースに設定できます。  または設定ツール。 i.MX用設定ツールはこちらからダウンロードしてください。 よろしくお願いします。
View full article
S32K3 上的 eTPU 曲柄、凸轮、喷射和点火装置 你好 我需要执行驱动程序,以根据曲柄和凸轮信号相位启动喷油和点火装置。 我需要了解实施该驱动程序的最佳解决方案是什么。 我的疑问是 1) AN4907SW.zip 提供的 API 是否与 S32K3xx 中的 eTPU 兼容? 2)如果不是,那么将此 API 用于 S32K3xx 是一个好的解决方案,还是使用 ConfigTool 才是最佳解决方案? S32K3xx 有关于此应用的示例吗? 敬请期待,弗朗切斯科。 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@francescovico 将数据从大端转换为小端序涉及通过根据数据类型大小调整位移和掩码来反转字节顺序。 GCC 提供了内置函数来简化这个过程,例如:uint32_t __builtin_bswap32 (uint32_t x)。你可以在 GCC 文档中找到更多细节:7.2.3 字节交换内置函数 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@VaneB、 如果我理解得不错,汽车功能(CRANK、SPARK......)是为大位微控制器设计的。 要在 S32K364(小二进制)上使用带有汽车功能的 eTPU,我需要下载一个功能集,选择 .NET 和 .NET: francescovico_0-1761136257258.pngfrancescovico_0-1761136257258.png 并更改功能: uint32_t *fs_memcpy32(uint32_t *dest,uint32_t *source,uint32_t size); void fs_memset32(uint32_t *start,uint32_t value,int32_t size); 交换每个 32 位的值,以读取/写入小端代码和参数,是这样吗? 敬请期待,弗朗切斯科。 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@francescovico 用于电气化应用的 S32K39/37/36 微控制器包括 eTPU。但是,目前没有适用于这些设备的与 MPC5634 的 AN4907 相似的专用文档或演示。 也就是说,AN4907 文档、演示和微码适用于 S32K39/37/36 系列,但请注意,这些设备使用小端架构。因此,您需要修改内存访问 API。 您可以参考 CodeWarrior eTPU 功能选择器 中与电机控制相关的模块,该功能 选择器 已更新为 little-endian。 BR、VaneB Re: eTPU crank, cam, injections and Ignitions on S32K3 感谢您指出这一点! 这是个endianity转换问题。因此,缺齿掩模的配置不正确,每转 350 度,每周期 700 度。 现在,原帖中的演示程序已经修复。 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@MilanBrejl、 现在,我正在尝试使用 Fuel Cyl 1 etpu 驱动程序。 驱动程序似乎使用 s24AngleNormalEnd 作为"的起始角度" ,并在 s24AngleStop 停止注入。 u24InjectionTime 的持续时间永远不会被遵守。 有可能吗? 附件中有一个 .rar 文件该文件包含"燃料缸 1" 的 picoscope 采集信息,其中喷油器参数为: Etpu_Fuel_Ip_ConfigType fuel_1_config = { .s24AngleNormalEnd= DEG2TCR2(-180), .s24AngleStop= DEG2TCR2(-360), .s24AngleOffsetRecalc= DEG2TCR2(-30), .u24InjectionTime= USEC2TCR1(1200), .u24CompensationTime= USEC2TCR1(0), .u24InjectionTimeMinimum= USEC2TCR1(0), .u24OffTimeMinimum= USEC2TCR1(0), .eGenerationDisable= etpu_fuel_generation_allowed }; 在 picoscope 采集器中,可以看到注入开始点正好是 180°,注入停止点是 360°,注入持续时间为 30 毫秒(应为 1.2 毫秒)。 敬请期待,弗朗切斯科。 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@MilanBrejl、 现在,我正在尝试使用 Fuel Cyl 1 etpu 驱动程序。 驱动程序似乎使用s24AngleNormalEnd 作为"的起始角度" ,并在 s24AngleStop 停止所有注入。 u24InjectionTime 的持续时间永远不会被遵守。 有可能吗? 附件中有一个 .rar 文件文件,其中包含喷油器参数所在的"燃油 1 缸" 的 picoscope 采集结果: Etpu_Fuel_Ip_ConfigType fuel_1_config = { .s24AngleNormalEnd= DEG2TCR2(-180), .s24AngleStop= DEG2TCR2(-360), .s24AngleOffsetRecalc= DEG2TCR2(-30), .u24InjectionTime= USEC2TCR1(1200), .u24CompensationTime= USEC2TCR1(0), .u24InjectionTimeMinimum= USEC2TCR1(0), .u24OffTimeMinimum= USEC2TCR1(0), .eGenerationDisable= etpu_fuel_generation_allowed }; 在 picoscope 采集器中,可以看到注入开始点正好是 180°,注入停止点是 360°,注入持续时间为 30 毫秒(应为 1.2 毫秒)。 敬请期待,弗朗切斯科。 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@MilanBrejl、 你说得没错,s24AngleOffsetRecalc 必须是正数,但要把它放进去: s24AngleOffsetRecalc = DEG2TCR2(30) 结果还是一样(......)。 我使用的 S32K364 有 2 个 ETPU(A 和 B),共 16 个通道。 在 ETPUA 上使用燃料驱动程序,驱动程序工作正常,但我需要使用 ETPUB 通道 0。 我需要使用 STAC 寄存器将 TCR1 和 TCR2 从 ETPUA 共享到 ETPUB。 可能是 STAC 寄存器没有正确初始化? 敬请期待,弗朗切斯科。 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@francescovico, 这是如何配置 STAC_ENG1 和 STAC_ENG2 寄存器,以便从 eTPU1 到 eTPU2 共享 TCR1 和 TCR2: MilanBrejl_0-1770199430269.pngMilanBrejl_0-1770199430269.png 如果有帮助,请告诉我。 致: Milan Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@MilanBrejl、 我的注册表与您的建议完全相同: ETPU_A_B_REGISTER.pngETPU_A_B_REGISTER.png 但问题依然存在。 在所附的皮镜采集中,您可以看到 ETPU A 产生的火花为蓝色,ETPU B 产生的火花为红色。 两个火花的端角都是 180 度,停留时间都是 8000 秒。 敬请期待,弗朗切斯科。   Re: eTPU crank, cam, injections and Ignitions on S32K3 你好,@francescovico、 我在我的网站上复制了你的问题,并找到了根本原因。在两个 eTPU 引擎之间共享 TCR1/TCR2 时间/角度总线是不够的。火花和燃油功能根据发动机的实际转速进行时间到角度的转换。它使用 TRR(跳动速率寄存器)。该寄存器是角度时钟逻辑的一部分,由运行在 eTPU A 上的 Crank eTPU 功能维护。然后,使用 eTPU B TRR 对 eTPU B 进行时间到角度的变换会返回错误的结果。 这是最基本的问题,我可能从未见过有人同时在两个 eTPU 引擎上运行引擎控制,因此这个问题一直没有得到解决。尤其是在新的 S32K3 设备仅限于 16+16 个通道的情况下,这一点变得很重要。感谢您提出这个用例,也感谢您的耐心。 所附的演示程序以之前的程序(在本主题中)为基础,并增加了以下改动: 火花 2 通道从 eTPU 引擎 A 移至 eTPU 引擎 B MilanBrejl_0-1770672522362.pngMilanBrejl_0-1770672522362.png 相应更新通道掩码 MilanBrejl_1-1770672675064.pngMilanBrejl_1-1770672675064.png 通道链接需要支持两个引擎的使用(使用宏 ETPU_IP_CHANNEL_TO_LINK) MilanBrejl_2-1770672729220.pngMilanBrejl_2-1770672729220.png 引脚配置已更新,中断配置已更新 现在是 Crank eTPU FW 的新功能: 更新 eTPU FW 映像。曲柄功能可在两个发动机上运行,并更新另一个 eTPU 发动机的 TRR 值。 这项新功能需要在曲柄配置中设置一个新参数 MilanBrejl_4-1770673143063.pngMilanBrejl_4-1770673143063.png 其中 MilanBrejl_3-1770673103441.pngMilanBrejl_3-1770673103441.png 希望对您有所帮助。 致: Milan Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@MilanBrejl、 现在它工作得很好。 非常感谢你们的支持! 敬请期待,弗朗切斯科。 Re: eTPU crank, cam, injections and Ignitions on S32K3 您好,我也在研究k396的板子,也想将etpu用于曲轴凸轮轴和喷油,我们可以交流一下嘛 Re: eTPU crank, cam, injections and Ignitions on S32K3 嗨@MilanBrejl 我目前正在开发基于S32K396芯片的V12 ECU项目。 第一个原型我将使用 lqfp176 封装,很高兴看到这个项目也是用这种封装编写的。我想请问一下,是否有办法为 crank_instance 添加更多链接通道? Etpu_Crank_Ip_InstanceType 曲柄实例= { .u8ChanNum = ETPU_CRANK_CHAN ,​ .u8OtherEngChanNum = ETPU_CRANK_OTHER_ENG_CHAN ,​ . ePriority = ETPU_PRIORITY_HIGH , . ePolarity = ETPU_CRANK_IP_POLARITY_FALLING , .u8TeethTillGap = TEETH_TILL_GAP ,​ .u8TeethInGap = TEETH_IN_GAP ,​ .u8TeethPerCycle = TEETH_PER_CYCLE ,​ . u24Tcr2TicksPerTooth = TCR2_TICKS_PER_TOOTH , .u24Tcr2TicksPerAddTooth = 0 ,​ .eLogToothPeriods = ETPU_CRANK_IP_LOG_TOOTH_PERIODS_ON ,​ .u32LinkCam = ( ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 24 ) ) .u32Link1 = ( ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_3_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_4_CHAN ) << 24 )) , .u32Link2 = ( ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_3_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_4_CHAN ) << 24 )) , .u32Link3 = ( ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_KNOCK_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_KNOCK_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_BANK_1_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_BANK_2_CHAN ) << 24 )) , .u32Link4 = ( ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_3_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_4_CHAN ) << 24 ) ) .pCpba = NULL_PTR ,​ . pCpbaToothPeriodLog = NULL_PTR } ; 我想使用 eTPU 发动机 A 来实现 12 缸 DI、12 缸点火和曲轴、右侧进气凸轮轴、右侧排气凸轮轴,使用 eTPU 发动机 B 来实现 12 缸 PI 喷射和左侧凸轮轴。 或者 eTPU 发动机 A 适用于 6DI、6Ignition、6PI、Knock、RH CAMx2,eTPU 发动机 B 适用于 6DI、6Ignition、6PI、Knock、LH CAMx2。 但为此我还需要另外两个链接条目。我还没算上我可能还需要的其他东西呢。我需要WMI,也需要Nitro。我知道这是个大工程,但我真的非常感谢大家的帮助。 我是 eTPU 编程新手,对整个 NXP 生态系统也不熟悉。 感谢您的解答。 理查德 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好@rudikakk11 , 如果当前参数集 .u32Link1 到 .u32Link4(最多 16 个通道) 扩展至 .u32Link1 到 .u32Link12(最多 48 个通道) 你觉得可行吗? 问候, 米兰 Re: eTPU crank, cam, injections and Ignitions on S32K3 嗨@MilanBrejl 那真是太好了! eTPU编译器都是付费使用的吗?以防我需要任何其他修改或自定义功能。 感谢您的回复,也提前感谢您的下次回复! 理查德 Re: eTPU crank, cam, injections and Ignitions on S32K3 你好, @MilanBrejl 还有一个问题,如何控制 GDI 发动机的高压燃油泵 (HPFP)?我在库中找不到对应的函数。 我的想法是使用注入实例来实现它。 此致, 理查德
View full article
eTPU crank, cam, injections and Ignitions on S32K3 Hello, I need to implement drivers to actuate Injections and ignitions phased with crank and cam signals. I need to understand which is the best solution to implement this drivers. My doubt are: 1) The API provided by AN4907SW.zip are compatible with eTPU present in S32K3xx? 2)If no, it's a good solution adapt this API for S32K3xx or the best solution it's use ConfigTool ? There is an example for S32K3xx about this application? Regards, Francesco. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @francescovico  Converting data from big-endian to little-endian involves reversing the byte order by adjusting bit shifts and masks according to the data type size. GCC provides built-in functions to simplify this process, for example: uint32_t __builtin_bswap32 (uint32_t x). You can find more details in the GCC documentation: 7.2.3 Byte-Swapping Builtins Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @VaneB , if I understood well , the Automotive functions (CRANK, SPARK...), are made for big endian microcontrollers. To use eTPU with Automotive functions on S32K364 (little endian), I need to download a function set selecting : francescovico_0-1761136257258.pngfrancescovico_0-1761136257258.png And change the functions: uint32_t *fs_memcpy32(uint32_t *dest,uint32_t *source,uint32_t size); void fs_memset32(uint32_t *start,uint32_t value,int32_t size); to swap each 32 bit values to read/write little endian code and parameters, it's true? Regards, Francesco. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @francescovico  The S32K39/37/36 Microcontrollers for Electrification Applications, includes eTPU. However, there is currently no dedicated documentation or demo similar to the MPC5634's AN4907 available for these devices. That said, the AN4907 document, demo, and microcode are suitable for the S32K39/37/36 family, but please note that these devices use a little-endian architecture. Therefore, you will need to modify the memory access API. You can refer to the motor control-related modules in the CodeWarrior eTPU Function Selector, which has been updated to little-endian. BR, VaneB Re: eTPU crank, cam, injections and Ignitions on S32K3 Thanks for pointing this out! There was an endianity conversion issue. As a result, the missing tooth mask was not configured correctly and it counted 350 deg per rev resp 700 deg per cycle. Now, the demo app in the original post is fixed. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl , Now I'm trying to use Fuel Cyl 1 etpu driver. It seem that  the driver use s24AngleNormalEnd as "start angle" and stop all injections at s24AngleStop. The duration u24InjectionTime it's never respected. It's possible? Attached there is a .rar file that contain  picoscope acquisition of "fuel cyl 1" where the injector parameter are: Etpu_Fuel_Ip_ConfigType fuel_1_config = { .s24AngleNormalEnd = DEG2TCR2(-180), .s24AngleStop = DEG2TCR2(-360), .s24AngleOffsetRecalc = DEG2TCR2(-30), .u24InjectionTime = USEC2TCR1(1200), .u24CompensationTime = USEC2TCR1(0), .u24InjectionTimeMinimum = USEC2TCR1(0), .u24OffTimeMinimum = USEC2TCR1(0), .eGenerationDisable = ETPU_FUEL_GENERATION_ALLOWED }; In the picoscope acquisition it's visible start of injection exactly at 180° , stop of injection at 360° and injection duration of 30 ms (it should be 1,2ms). Regards, Francesco. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl  , Now I'm trying to use Fuel Cyl 1 etpu driver. It seem that  the driver use s24AngleNormalEnd as "start angle" and stop injection ever at s24AngleStop. The duration u24InjectionTime it's never respected. It's possible? Attached there is a .rar file that contain  picoscope acquisition of "fuel cyl 1" where the injector parameter are: Etpu_Fuel_Ip_ConfigType fuel_1_config = { .s24AngleNormalEnd = DEG2TCR2(-180), .s24AngleStop = DEG2TCR2(-360), .s24AngleOffsetRecalc = DEG2TCR2(-30), .u24InjectionTime = USEC2TCR1(1200), .u24CompensationTime = USEC2TCR1(0), .u24InjectionTimeMinimum = USEC2TCR1(0), .u24OffTimeMinimum = USEC2TCR1(0), .eGenerationDisable = ETPU_FUEL_GENERATION_ALLOWED }; In the picoscope acquisition it's visible start of injection exactly at 180° , stop of injection at 360° and injection duration of 30 ms (it should be 1,2ms). Regards, Francesco. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl , You are right, the s24AngleOffsetRecalc must be a positive number, but putting: s24AngleOffsetRecalc = DEG2TCR2(30) The result it's the same (. I'm using S32K364 that have 2 ETPU (A and B) with 16 channels. Using fuel driver on ETPUA the driver work correctly, but I need to use ETPUB channel 0. My necessity it's to share TCR1 and TCR2 from ETPUA to ETPUB, using STAC registers. It's possible that STAC registers are not correctly initialized? Regards, Francesco. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @francescovico, this is how to configure STAC_ENG1 and STAC_ENG2 registers to share TCR1 and TCR2 from eTPU1 to eTPU2: MilanBrejl_0-1770199430269.pngMilanBrejl_0-1770199430269.png Let me know if it helps.  Regards, Milan Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl , my registers are exactly the same of your suggestion: ETPU_A_B_REGISTER.pngETPU_A_B_REGISTER.png But the problem it's still present. In the attached picoscope acquisition you can see the spark generated with ETPU A in BLU and spark generated with ETPU B in RED. Both sparks have end angle 180 degree and dwell time 8000 us. Regards, Francesco.   Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @francescovico, I duplicated your issue on my site and found the root cause. It is not enough to share TCR1/TCR2 time/angle buses between both eTPU engines. Spark and Fuel functions do time to angle transformation, based on the actual engine speed. It uses TRR (Tick Rate Register). This register is part of the Angle Clock logic and it is maintained by Crank eTPU function, running on eTPU A. Hence, TRR has the correct value on eTPU A only. Then, time to angle transformation on eTPU B, using eTPU B TRR, returns a wrong result. This is pretty fundamental, I probably never met anybody running engine control over both eTPU engines and hence this has not been solved. And especially with the new S32K3 devices limited to 16+16 channels this becomes important. Thanks for bringing up this use-case and thanks for your patience. The attached demo application is based on the previous one (in this thread) and adds the following changes: Spark 2 channel is moved from eTPU engine A to eTPU engine B MilanBrejl_0-1770672522362.pngMilanBrejl_0-1770672522362.png Channel masks are updated accordingly MilanBrejl_1-1770672675064.pngMilanBrejl_1-1770672675064.png Channel links need to support usage of both engines (use macro ETPU_IP_CHANNEL_TO_LINK) MilanBrejl_2-1770672729220.pngMilanBrejl_2-1770672729220.png pin configuration is updated, interrupt configuration updated And now new features of Crank eTPU FW: eTPU FW image is updated. The Crank function can run on both engines and update the TRR value also for the other eTPU engine.  This new feature requires to set one new parameter to the Crank configuration MilanBrejl_4-1770673143063.pngMilanBrejl_4-1770673143063.png where MilanBrejl_3-1770673103441.pngMilanBrejl_3-1770673103441.png I hope this helps.  Regards, Milan Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl , Now It's working perfectly. Thank you very much for the support! Regards, Francesco. Re: eTPU crank, cam, injections and Ignitions on S32K3 Hello, I'm also researching the K396 board and want to use ETPU for crankshaft, camshaft, and oil injectors. Could we discuss this further? Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl  I'm currently working on V12 ECU projekt with s32k396.  For the first prototype i will be using the lqfp176 packaging and was happy to see that this project is written in that packaging. I would like to ask you, if there would be a way to have more Linking channel for the crank_instance? Etpu_Crank_Ip_InstanceType crank_instance = { .u8ChanNum = ETPU_CRANK_CHAN, .u8OtherEngChanNum = ETPU_CRANK_OTHER_ENG_CHAN, .ePriority = ETPU_PRIORITY_HIGH, .ePolarity = ETPU_CRANK_IP_POLARITY_FALLING, .u8TeethTillGap = TEETH_TILL_GAP, .u8TeethInGap = TEETH_IN_GAP, .u8TeethPerCycle = TEETH_PER_CYCLE, .u24Tcr2TicksPerTooth = TCR2_TICKS_PER_TOOTH, .u24Tcr2TicksPerAddTooth = 0, .eLogToothPeriods = ETPU_CRANK_IP_LOG_TOOTH_PERIODS_ON, .u32LinkCam = ((ETPU_IP_CHANNEL_TO_LINK(ETPU_CAM_CHAN) << 0) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_CAM_CHAN) << 8) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_CAM_CHAN) << 16) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_CAM_CHAN) << 24)), .u32Link1 = ((ETPU_IP_CHANNEL_TO_LINK(ETPU_SPARK_1_CHAN) << 0) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_SPARK_2_CHAN) << 8) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_SPARK_3_CHAN) << 16) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_SPARK_4_CHAN) << 24)), .u32Link2 = ((ETPU_IP_CHANNEL_TO_LINK(ETPU_FUEL_1_CHAN) << 0) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_FUEL_2_CHAN) << 8) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_FUEL_3_CHAN) << 16) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_FUEL_4_CHAN) << 24)), .u32Link3 = ((ETPU_IP_CHANNEL_TO_LINK(ETPU_KNOCK_1_CHAN) << 0) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_KNOCK_2_CHAN) << 8) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_INJ_BANK_1_CHAN) << 16) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_INJ_BANK_2_CHAN) << 24)), .u32Link4 = ((ETPU_IP_CHANNEL_TO_LINK(ETPU_INJ_1_CHAN) << 0) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_INJ_2_CHAN) << 8) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_INJ_3_CHAN) << 16) + (ETPU_IP_CHANNEL_TO_LINK(ETPU_INJ_4_CHAN) << 24)), .pCpba = NULL_PTR, .pCpbaToothPeriodLog = NULL_PTR }; I would like to use eTPU engine A for like 12 DI, 12 Ignition, and crank, rightbank intake CAM, rightbank exhaust bank, eTPU engine B for 12 PI injection, and leftside CAM instances. Or perhaps eTPU engine A for 6DI,6Ignition,6PI, Knock, RH CAMx2, eTPU engine B 6DI,6Ignition,6PI, Knock, LH CAMx2. but for this i would need like 2 more Link entries. and im not even counting all the other things i would likely need too. i will want WMI, and Nitro too. i know its a big project but i would really be thankful for some help.  Im new to eTPU programming, and for this whole NXP ecosystem. Thanks in advance for your answer, Richard Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @rudikakk11, If the current set of parameters .u32Link1 to .u32Link4 (up to 16 channels) is extended to .u32Link1 to .u32Link12 (up to 48 channels) would it work for you? Regards, Milan Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi @MilanBrejl  That would be perfect! The eTPU compilers are all pay-to-use? Just in case i would need any more modification or self made functions.  Thank you for your reply and thanks in advance for the next! Richard Re: eTPU crank, cam, injections and Ignitions on S32K3 Hi, @MilanBrejl  One more question, how do you control the HPFP (High Pressure Fuel Pumps) of the GDI engine? I couldnt find a function for it in the libraries. My thought was to use an injection instance for it. Regards, Richard
View full article
Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? Hello, We're trying to understand how ReLU6 behaves on the i.MX95 Neutron NPU. As far as we understand, ReLU6 should always keep its output between 0 and 6. We noticed lower detection accuracy on the NPU compared to the CPU for an SSD MobileNet V1 model, so we started checking intermediate layer outputs. For a layer using ReLU6, the value on the board went above 6 (up to about 25), while the same layer on the CPU (same model, same input) always stayed within 0-6, as expected. We didn't see any error or warning about this at runtime on the board. During model conversion, neutron-compiler does show a couple of general warnings about quantization, but none of them seem related to this specific point. Could you help us understand: 1. Is it expected that a ReLU6 output can go above 6 on this NPU? 2. If not, shouldn't the compiler or the runtime show an error or a warning in that case? Environment: - Board: i.MX95 EVK - BSP: LF_6.18.20_2.0.0 - eIQ Neutron SDK: 3.2.3 - Model: SSD MobileNet V1 (uint8, Arm ML-Zoo) Thank you! Re: Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? Hi, Thank you for your interest in NXP Semiconductor products, ReLU6 is listed as a supported operator in Neutron Supported Operators markdown, I would like to confirm if such layer wasn't changed to ReLU, could you please share the steps to reproduce and the binaries you get? You could try eIQ Model Zoo mobilenetv1 and convert it to Neutron. Regards Re: Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? Hi, Thanks for the quick reply. 1) Confirming it's still ReLU6, not ReLU No, this layer was not changed to ReLU. neutron-compiler's own NeutronIR (--dump-neutron-ir-final-file) still shows FusedActivation = "Relu6" for it - not our interpretation of the file. See evidence/01_confirm_still_relu6/ for the exact model, command, and output. 2) Steps to reproduce, and the binaries we get See evidence/02_reproduction_npu_exceeds_bound/ for the exact commands, the compiled model, input, script, console log, and raw output tensor. On the i.MX95 EVK board: min=-15 max=96 ReLU6 upper bound (raw): 12 elements above the bound: 4650 of 720000 (0.65%) The same layer on the CPU stays within 0-6 as expected (real max=5.999, vs. NPU's real max=24.664). 3) Re: trying eIQ Model Zoo mobilenetv1 We tried it (mobilenet_v1_0.25_128_quant.tflite, from your recipe.sh). None of its 28 CONV_2D/DEPTHWISE_CONV_2D operators actually have ReLU6 as a fused activation, so this model doesn't reproduce (or rule out) the issue we're reporting. For reference, this all uses eIQ Neutron SDK 3.2.3 throughout (compiler and on-board runtime). We suspect the problem is in neutron-compiler itself: compiling this layer with ReLU6 changed to plain ReLU produced byte-for-byte identical microcode, so the upper bound doesn't seem to make it into the generated code at all. Could you confirm this on your end, and let us know if there's anything else you need from us? Thank you!
View full article
i.MX 8M Plus:RGMII 到 MII 的迁移 – ENET_RXC / RX_ER 引脚分配 NXP社区的各位朋友,大家好! 我正在使用 NXP i.MX 8M Plus SoC 和 PHYTEC phyCORE-i.MX8M Plus SOM 开发定制以太网设计。 我们目前有一个基于 RGMII 的以太网设计,我们正在评估将我们的定制板从 RGMII 迁移到 MII 的可能性。 在引脚复用审查过程中,我发现 i.MX 8M Plus ENET_RXC 引脚具有以下功能: ALT0:CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK ALT1:ENET_QOS_RX_ER ALT5:GPIO1_IO25 在我们的 PHYTEC SOM 分配中,该信号与 SOM 引脚 A25 相关联。 我担心的是 RGMII 到 MII 的迁移问题。RGMII 和 MII 所需的以太网信号不同。 我想澄清以下几点: 1. 除了 RGMII 和 RMII 之外,i.MX 8M Plus ENET_QOS MAC 是否支持真正的 MII 接口? 2. 如果支持真正的 MII,那么 i.MX 8M Plus 的 MII_RX_CLK、MII_RX_DV、MII_RX_ER、MII_RXD0 到 MII_RXD3、MII_TX_CLK、MII_TX_EN 和 MII_TXD0 到 MII_TXD3 的正确引脚映射是什么? 3. 对于 ENET_RXC 焊盘,ALT0、CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK 是否仅用于 RGMII,或者该功能是否可以用作 MII 接收时钟? 4. 在 RGMII 到 MII 迁移期间,MII 接口是否需要 ENET_RXC 焊盘上的 ENET_QOS_RX_ER? 5. 如果需要 MII_RX_ER,能否通过 IOMUX 将其分配给另一个可用的 i.MX 8M Plus 焊盘,还是该信号内部与 ENET_RXC 焊盘关联? 6. 由于我们使用的是 PHYTEC phyCORE-i.MX8M Plus SOM,在实现 MII 接口时,是否需要考虑 SOM 路由方面的任何限制? 7. 如果支持 MII,能否提供 i.MX 8M Plus MII MAC 到 PHY 引脚配置和设备树配置的示例或参考资料? 之所以要进行此项澄清,是因为我们目前正在为博世定制载板准备引脚复用和原理图。在更改 SOM 和载板引脚分配之前,我们希望确认正确的 MII 信号映射。 我们的 BSP 中相关的 pinmux 信息如下: ENET_RXC ALT0:CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK ALT1:ENET_QOS_RX_ER ALT5:GPIO1_IO25 请问有人可以确认 i.MX 8M Plus ENET_QOS MAC 是否支持真正的 RGMII 到 MII 迁移吗?如果支持,应该如何处理 ENET_RXC 和 RX_ER? 谢谢! Re: i.MX 8M Plus: RGMII to MII Migration – ENET_RXC / RX_ER Pin Assignment 您好, 感谢您对恩智浦半导体产品的关注, 这个问题与这个主题相关。 由于之前没有问到 ENET_QOS 的详细信息,我将在本帖中补充这些信息。 ENET 和 ENET_QOS / EQOS 均不支持 MII,请参考 EQOS RM 提供的以下信息: RMII(10/100Mbps),RGMII(10/100/1000Mbps) 来自DS: 1.8V/3.3V RMII 操作,1.8V RGMII 操作 帖子中提到了 ENET 信号与 EQOS 信号的接口。ENET 信号对应于 ENET 模块,而 ENET_QOS 对应于 EQOS 模块。请务必检查 PHYTEC SOM 中可用的信号是否可以映射到您所需的功能,您可以参考pinfunc.h文件。或配置工具。 在此处下载 i.MX 配置工具。 此致
View full article
i.MX 8M Plus: RGMII to MII Migration – ENET_RXC / RX_ER Pin Assignment Hello NXP Community, I am working on a custom Ethernet design using the NXP i.MX 8M Plus SoC with a PHYTEC phyCORE-i.MX8M Plus SOM. We currently have an Ethernet design based on RGMII, and we are evaluating a migration from RGMII to MII for our custom board. During the pinmux review, I found the following functions for the i.MX 8M Plus ENET_RXC pad: ALT0: CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK ALT1: ENET_QOS_RX_ER ALT5: GPIO1_IO25 In our PHYTEC SOM allocation, this signal is associated with SOM pin A25. My concern is related to the RGMII to MII migration. The required Ethernet signals are different between RGMII and MII. I would like to clarify the following points: 1. Does the i.MX 8M Plus ENET_QOS MAC support a true MII interface in addition to RGMII and RMII? 2. If true MII is supported, what is the correct i.MX 8M Plus pin mapping for MII_RX_CLK, MII_RX_DV, MII_RX_ER, MII_RXD0 to MII_RXD3, MII_TX_CLK, MII_TX_EN, and MII_TXD0 to MII_TXD3? 3. For the ENET_RXC pad, is ALT0, CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK, intended only for RGMII, or can this function be used as the MII receive clock? 4. During an RGMII to MII migration, is ENET_QOS_RX_ER on the ENET_RXC pad required for the MII interface? 5. If MII_RX_ER is required, can it be assigned to another available i.MX 8M Plus pad through IOMUX, or is this signal internally associated with the ENET_RXC pad? 6. Since we are using a PHYTEC phyCORE-i.MX8M Plus SOM, are there any SOM routing limitations that need to be considered for implementing the MII interface? 7. If MII is supported, could someone provide an example or reference for the correct i.MX 8M Plus MII MAC-to-PHY pin configuration and device-tree configuration? The reason for this clarification is that we are currently preparing the pinmux and schematic for a Bosch custom carrier board. We want to confirm the correct MII signal mapping before changing the SOM and carrier-board pin allocation. The relevant pinmux information from our BSP is: ENET_RXC ALT0: CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK ALT1: ENET_QOS_RX_ER ALT5: GPIO1_IO25 Could someone please confirm whether a true RGMII-to-MII migration is supported on the i.MX 8M Plus ENET_QOS MAC and, if so, how ENET_RXC and RX_ER should be handled? Thank you. Re: i.MX 8M Plus: RGMII to MII Migration – ENET_RXC / RX_ER Pin Assignment Hi, Thank you for your interest in NXP Semiconductor products, This issue is related to this topic. I will add in this thread the ENET_QOS details since they were not asked previously. Neither ENET nor ENET_QOS / EQOS support MII, please refer to the following information from RM of EQOS: RMII (10/100Mbps), RGMII (10/100/1000Mbps) From DS: 1.8 V/3.3 V RMII operation, 1.8 V RGMII operation Post mentions ENET signals interfacing EQOS signals. ENET signals correspond to ENET module, while ENET_QOS correspond to EQOS module, make sure to review that an available signal in PHYTEC SOM can be mapped to your desired function, you can base in pinfunc.h  or config tools. Download Config Tools for i.MX here. Regards
View full article
i.MX8MP ENET_RXC/A25 Pinmux Clarification for MII Interface We are developing a custom board using the PHYTEC phyCORE-i.MX8M Plus SOM and are reviewing the Ethernet pinmux for migration from the existing RGMII interface to MII. The PHYTEC SOM pin A25 is associated with the i.MX8M Plus ENET_RXC signal. In the i.MX8MP pinmux, ENET_RXC supports ALT0 = CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK and ALT1 = ENET_QOS_RX_ER. We need clarification regarding the correct pin assignment and interface requirements for the intended MII configuration. Specifically, is ENET_RXC required for the MII receive interface, or can the required RX_ER function be assigned to another suitable i.MX8M Plus pad/GPIO? If a different pad can be used, please provide the recommended pin mapping. We also need confirmation of whether the i.MX8M Plus ENET_QOS controller supports the intended MII interface and whether any IOMUX, MAC, device-tree, GPR, or PHY configuration changes are required. Please advise on the recommended Ethernet pin mapping and configuration for the i.MX8M Plus with the PHYTEC phyCORE SOM. Re: i.MX8MP ENET_RXC/A25 Pinmux Clarification for MII Interface Hi, Thank you for your interest in NXP Semiconductor products, i.MX 8M Plus does not support MII, please refer to the following extract from RM: Seamless interface to commercial ethernet PHY devices via one of the following: a 2-bit Reduced MII (RMII) operating at 50 MHz. a (double data rate) 4-bit Reduced GMII (RGMII) operating at 125 MHz. For signal mapping, you can refer to i.MX 8M Plus DS. Regards
View full article
i.MX8M Quad – M4 Core Boot Steps and Required U-Boot Commands I am working with an i.MX8M Quad EVK SD card image and would like to understand the correct procedure for booting and running an application on the Cortex-M4 core from U-Boot. I have downloaded the MCUXpresso SDK for the i.MX8M Quad and successfully compiled the Hello World example for the M4 core. I now have the generated .bin firmware file. Please provide the correct U-Boot commands and boot sequence to load and start this M4 .bin firmware from U-Boot? And how to check M4 console ? #imx8mq #m4 #cortex-m4 #boot_m4 #UBoot #yocto #uboot-commands i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Yocto Project Re: i.MX8M Quad – M4 Core Boot Steps and Required U-Boot Commands Hello, Step-by-Step U-Boot Commands 1. Prepare the SD Card Copy your compiled .bin file (e.g., hello_world.bin ) to the FAT/boot partition (partition 1) of the SD card before inserting it into the EVK. 2. Stop U-Boot Autoboot Power on the board and immediately press any key to interrupt autoboot at the U-Boot prompt. 3. Option A — TCM Execution (Recommended for MCUXpresso SDK apps) This is the standard method for MCUXpresso SDK Hello World examples, which are linked to run from TCM at 0x1FFE0000 (alias 0x7E0000 😞 # Step 1: Load .bin from SD card FAT partition into a DDR staging buffer u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin # Step 2: Copy the image from DDR staging buffer into the M4's TCM u-boot=> cp.b 0x48000000 0x7e0000 0x20000 # Step 3: (Optional but recommended) Flush data cache before starting M4 u-boot=> dcache flush # Step 4: Release M4 from reset and start execution from TCM u-boot=> bootaux 0x7e0000   You should see output like: ## Starting auxiliary core stack = 0x20020000, pc = 0x1FFE0305...       3. Option B — DDR Execution If your binary is linked to run from DDR (e.g., 0x80000000 😞 u-boot=> fatload mmc 1:1 0x80000000 hello_world.bin u-boot=> dcache flush u-boot=> bootaux 0x80000000   ⚠️ Important: Use 0x7e0000 (TCM) or 0x80000000 (DDR) depending on the linker script used when you compiled the MCUXpresso SDK app. For the default Hello World example, TCM ( 0x7e0000 ) is the correct target. Optional: Clear Resource Table Area (for Hello World / bare-metal) If your image does not have an RPMsg resource table (like a simple hello_world.bin ), clear the resource table area to avoid garbage values that could confuse Linux later: u-boot=> mw 0xb80ff000 0 4 Optional: Run prepare_mcore (When Linux Will Also Boot) If you plan to continue booting Linux after starting the M4, run this additional command before bootaux . It configures clocks so Linux does not disable M4-used clocks: u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin u-boot=> cp.b 0x48000000 0x7e0000 0x20000 u-boot=> run prepare_mcore u-boot=> bootaux 0x7e0000     Checking the M4 Console The i.MX8MQ EVK uses an FTDI USB-serial chip that enumerates two separate COM ports when connected to the PC: Port Core Lower number (e.g., COM9 / /dev/ttyUSB0 ) Cortex-A53 (U-Boot / Linux console) Higher number (e.g., COM10 / /dev/ttyUSB1 ) Cortex-M4 console       Settings for both ports: 115200 baud, 8 data bits, No parity, 1 stop bit (115200 8N1). Open two separate terminal windows (e.g., TeraTerm, minicom, PuTTY): Terminal 1 → Lower COM port → for U-Boot commands Terminal 2 → Higher COM port → to see M4 Hello World output Quick Reference: Automation via Environment Variables You can save these as U-Boot environment variables for convenience: u-boot=> setenv m4_image hello_world.bin u-boot=> setenv m4_loadaddr 0x7e0000 u-boot=> setenv load_m4_image "fatload mmc '${mmcdev}':'${mmcpart}' 0x48000000 '${m4_image}'; cp.b 0x48000000 0x7e0000 0x20000" u-boot=> setenv run_m4_image "run load_m4_image; bootaux '${m4_loadaddr}'" u-boot=> saveenv # Then simply run: u-boot=> run run_m4_image     Key Reference Documents UG10163 — i.MX Linux User's Guide (Section 4.7.4) — Official M4 boot procedure for i.MX8M Quad AN5317 — Loading Code on Cortex-M from U-Boot/Linux for the i.MX — Deep dive on TCM vs DDR loading GS-MCIMX8M-EVK — Getting Started with the MCIMX8M-EVK — Board-specific step-by-step guide Regards
View full article
i.MX95 NPUのReLU6出力が6を超えてもエラーや警告なしに問題ないのは予想されますか? こんにちは、 私たちは、i.MX95 Neutron NPU上でReLU6がどのように挙動するかを理解しようとしています。 私たちが理解している限りでは、ReLU6は常に0から6の間の出力値を維持するはずです。私たちは気づきました SSD MobileNet V1モデルではCPUに比べてNPUの検出精度が低いため、 中間層の出力をチェックし始めました。ReLU6を使うレイヤーの場合、基板上の値は 6を超え(最大で約25まで)、同じCPUの同じレイヤー(同じモデル、同じ入力)が常に使われていました 予想通り0-6の差を保ちました。 実行時にボード上でこれに関するエラーや警告は一切表示されませんでした。モデル変換中、 Neutron-compilerは量子化に関する一般的な警告をいくつか表示しますが、どれも表示していません この点に関係しているようです。 以下の点について教えていただけますか: 1.このNPUでReLU6の出力が6を超えることは期待できますか? 2. もしそうでなければ、その場合にコンパイラやランタイムがエラーや警告を表示するべきではないでしょうか? 環境: - ボード:i.MX95 EVK - BSP:LF_6.18.20_2.0.0 - eIQ Neutron SDK: 3.2.3 - モデル:SSD MobileNet V1(uint8、Arm ML-Zoo) ご回答をお待ちしています。 Re: Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? こんにちは、 NXP Semiconductors製品にご関心いただきありがとうございます。 ReLU6はNeutron Supported Operatorsのマークダウンでサポートされているオペレーターとしてリストされていますが、もしそのレイヤーがReLUに変更されていないか確認したいのですが、再現の手順と入手するバイナリを教えていただけますか? eIQ Model Zoo mobilenetv1を試して、Neutronに変換するのも良いでしょう。 よろしくお願いします。 Re: Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? こんにちは、 迅速なご返信ありがとうございます。 1) ReLUではなくReLU6であることを確認する いいえ、この層はReLUに変更されていません。ニュートロンコンパイラ自身のニュートロンIR(--dump-neutron-ir-final-file) それでもFusedActivation = "Relu6"と表示されており、私たちのファイルの解釈ではありません。参照 正確なモデル、コマンド、出力のためのevidence/01_confirm_still_relu6/。 2) 再現手順と取得したバイナリ 正確なコマンド、コンパイルされたモデル、入力についてはevidence/02_reproduction_npu_exceeds_bound/を参照してください。 スクリプト、コンソールログ、そして生の出力テンソルです。i.MX95 EVKボードについて: 最小値=-15 最大値=96 ReLU6の上限値(生データ):上限値を超える要素数:720000個中4650個(0.65%) CPU 上の同じレイヤーは予想通り 0~6 の範囲内に収まります (実際の最大値=5.999、NPU の実際の最大値=24.664)。 3) eIQ Model Zoo mobilenetv1 を試すについて 試してみました(あなたのrecipe.shにあるmobilenet_v1_0.25_128_quant.tflite)。28人のうち、誰もいない CONV_2D/DEPTHWISE_CONV_2Dオペレーターは実際にはReLU6を融合した作動として使っているので、このモデルには含まれていません 報告している問題を再現(または除外)してください。 参考までに、これらはすべてeIQ Neutron SDK 3.2.3を使用していますコンパイラおよび搭載ランタイム全体で。私たちは 問題はNeutronコンパイラ自体にあると推測されます。ReLU6でこのレイヤーをコンパイルするとプレーンに変更されました ReLUはバイトごとに同一のマイクロコードを生成したため、上限は 生成コード自体が問題ありません。 ご自身で確認していただけますか?他に何か必要なことがあれば教えてください。 ご回答をお待ちしています。
View full article
S32K3のeTPUクランク、カム、インジェクション、イグニッション こんにちは、 クランクとカムの信号に合わせてインジェクションと点火を作動させるドライバを実装する必要があります。 このドライバを実装するための最適なソリューションを理解する必要があります。 私の疑問は次のとおりです: 1) AN4907SW.zip で提供される API は、S32K3xx に存在する eTPU と互換性がありますか? 2)いいえの場合、この API を S32K3xx に適合させるのは良い解決策ですか、それとも ConfigTool を使用するのが最善の解決策でしょうか? このアプリケーションについて S32K3xx の例はありますか? よろしく、フランチェスコ。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@francescovico ビッグ エンディアンからリトルエンディアンにデータを変換するには、データ型のサイズに応じてビット シフトとマスクを調整してバイト順序を逆にする必要があります。 GCC は、このプロセスを簡素化する組み込み関数を提供します。例: uint32_t __builtin_bswap32 (uint32_t x)。詳細については、GCC ドキュメントの7.2.3 バイトスワッピング組み込みを参照してください。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@VaneB 、 私が正しく理解していれば、オートモーティブ機能 (CRANK、SPARK...) はビッグエンディアンマイクロコントローラ用に作られています。 S32K364 (リトルエンディアン) 上のオートモーティブ機能で eTPU を使用するには、次を選択して関数セットをダウンロードする必要があります。 francescovico_0-1761136257258.pngfrancescovico_0-1761136257258.png そして関数を変更します: uint32_t *fs_memcpy32(uint32_t *dest、uint32_t *source、uint32_t size); void fs_memset32(uint32_t *開始、uint32_t 値、int32_t サイズ); 各 32 ビット値を交換して、リトルエンディアン コードとパラメータを読み書きするというのは本当ですか? よろしく、フランチェスコ。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@francescovico 電動化アプリケーション向け S32K39/37/36 マイクロコントローラにはeTPU が含まれています。ただし、現在、これらのデバイス向けに利用できる MPC5634 の AN4907 に類似した専用のドキュメントやデモはありません。 ただし、AN4907 ドキュメント、デモ、マイクロコードは S32K39/37/36 ファミリに適していますが、これらのデバイスはリトルエンディアン アーキテクチャを使用していることに注意してください。したがって、メモリ アクセス API を変更する必要があります。 リトルエンディアン に更新された CodeWarrior eTPU 関数セレクタ でモータ制御関連のモジュールを参照できます。 BR、ヴェインB Re: eTPU crank, cam, injections and Ignitions on S32K3 指摘していただきありがとうございます! エンディアン変換の問題が発生しました。その結果、欠落した歯のマスクが正しく構成されず、1 回転あたり 350 度、または 1 サイクルあたり 700 度とカウントされました。 現在、元の投稿のデモ アプリは修正されています。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@MilanBrejlさん、 現在、Fuel Cyl 1 etpu ドライバを使用しようとしています。 ドライバは s24AngleNormalEnd を「開始角度」として使用し、s24AngleStop で噴射を停止するようです。 u24InjectionTime の持続時間は決して尊重されません。 それは可能ですか? .rarが添付されていますインジェクターパラメータが以下の「燃料シリンダー 1」のピコスコープ取得を含むファイル: Etpu_Fuel_Ip_ConfigType fuel_1_config = { .s24角度法線終了= DEG2TCR2(-180)、 .s24アングルストップ= DEG2TCR2(-360)、 .s24角度オフセット再計算= DEG2TCR2(-30)、 .u24注入時間= USEC2TCR1(1200)、 .u24補償時間= USEC2TCR1(0)、 .u24注入時間最小値= USEC2TCR1(0)、 .u24オフタイム最小値= USEC2TCR1(0)、 .eGenerationDisable= ETPU_FUEL_GENERATION_ALLOWED }; ピコスコープ取得では、正確に 180° で注入が開始され、360° で注入が停止し、注入持続時間が 30 ms (1.2 ms であるべき) であることが確認できます。 よろしく、フランチェスコ。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@MilanBrejlさん、 現在、Fuel Cyl 1 etpu ドライバを使用しようとしています。 ドライバはs24AngleNormalEnd を「開始角度」として使用し、s24AngleStop ですべての噴射を停止するようです。 u24InjectionTime の持続時間は決して尊重されません。 それは可能ですか? .rarが添付されていますインジェクターパラメータが以下の「燃料シリンダー 1」のピコスコープ取得を含むファイル: Etpu_Fuel_Ip_ConfigType fuel_1_config = { .s24角度法線終了= DEG2TCR2(-180)、 .s24アングルストップ= DEG2TCR2(-360)、 .s24角度オフセット再計算= DEG2TCR2(-30)、 .u24注入時間= USEC2TCR1(1200)、 .u24補償時間= USEC2TCR1(0)、 .u24注入時間最小値= USEC2TCR1(0)、 .u24オフタイム最小値= USEC2TCR1(0)、 .eGenerationDisable= ETPU_FUEL_GENERATION_ALLOWED }; ピコスコープ取得では、正確に 180° で注入が開始され、360° で注入が停止し、注入持続時間が 30 ms (1.2 ms であるべき) であることが確認できます。 よろしく、フランチェスコ。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@MilanBrejlさん、 おっしゃる通り、 s24AngleOffsetRecalc は正の数である必要がありますが、次のように記述します。 s24角度オフセット再計算 = DEG2TCR2(30) 結果は同じです(。 私は 16 チャネルの 2 つの ETPU (A と B) を備えた S32K364 を使用しています。 ETPUA で燃料ドライバーを使用するとドライバーは正常に動作しますが、ETPUB チャネル 0 を使用する必要があります。 私の必要性は、STAC レジスタを使用して、ETPUA から ETPUB に TCR1 と TCR2 を共有することです。 STAC レジスタが正しく初期化されていない可能性があります。 よろしく、フランチェスコ。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@francescovicoさん、 これは、eTPU1 から eTPU2 に TCR1 と TCR2 を共有するように STAC_ENG1 および STAC_ENG2 レジスタを設定する方法です。 MilanBrejl_0-1770199430269.pngMilanBrejl_0-1770199430269.png 役に立つかどうか教えてください。 よろしくお願いいたします。 ミラノ Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@MilanBrejlさん、 私のレジスターはあなたの提案と全く同じです: ETPU_A_B_REGISTER.pngETPU_A_B_REGISTER.png しかし、問題はまだ存在しています。 添付のピコスコープ取得では、ETPU A で生成されたスパークが青色で、ETPU B で生成されたスパークが赤色で確認できます。 両方のスパークの終了角度は 180 度、滞在時間は 8000 マイクロ秒です。 よろしく、フランチェスコ。   Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@francescovicoさん、 私のサイトでもあなたの問題を再現し、根本的な原因を見つけました。両方の eTPU エンジン間で TCR1/TCR2 時間/角度バスを共有するだけでは不十分です。スパークおよび燃料機能は、実際のエンジン速度に基づいて時間を角度に変換します。TRR(ティック レート レジスタ)を使用します。このレジスタは、Angle Clock ロジックの一部であり、eTPU A で実行される Crank eTPU 機能によって管理されます。したがって、TRR の正しい値は eTPU A でのみ保持されます。次に、eTPU B TRR を使用した eTPU B の時間から角度への変換で間違った結果が返されます。 これはかなり基本的な問題で、おそらく両方の eTPU エンジンでエンジン制御を実行している人に会ったことがないので、これは解決されていません。特に、新しい S32K3 デバイスは 16+16 チャネルに制限されているため、これは重要になります。このユースケースを提起していただき、またお待ちいただきありがとうございます。 添付のデモ アプリケーションは、(このスレッド内の) 以前のものに基づいており、次の変更が追加されています。 Spark 2 チャネルは eTPU エンジン A から eTPU エンジン B に移動されます。 MilanBrejl_0-1770672522362.pngMilanBrejl_0-1770672522362.png チャネルマスクはそれに応じて更新されます MilanBrejl_1-1770672675064.pngMilanBrejl_1-1770672675064.png チャネルリンクは両方のエンジンの使用をサポートする必要があります(マクロ ETPU_IP_CHANNEL_TO_LINK を使用) MilanBrejl_2-1770672729220.pngMilanBrejl_2-1770672729220.png ピン構成が更新され、割り込み構成が更新されました Crank eTPU FW の新機能: eTPU FW イメージが更新されました。Crank 関数は両方のエンジンで実行でき、他の eTPU エンジンの TRR 値も更新できます。 この新機能では、クランク構成に1つの新しいパラメータを設定する必要があります。 MilanBrejl_4-1770673143063.pngMilanBrejl_4-1770673143063.png どこ MilanBrejl_3-1770673103441.pngMilanBrejl_3-1770673103441.png これが役に立つことを願います。 よろしくお願いいたします。 ミラノ Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは@MilanBrejlさん、 今では完璧に動作しています。 サポートしていただき本当にありがとうございます! よろしく、フランチェスコ。 Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは。私もK396基板について調べており、クランクシャフト、カムシャフト、オイルインジェクターにETPUを使用したいと考えています。この件についてもう少し詳しくお話しいただけますでしょうか? Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは、 @MilanBrejl 現在、S32K396を使用したV12 ECUプロジェクトに取り組んでいます。 最初のプロトタイプではlqfp176パッケージを使用する予定なので、このプロジェクトがそのパッケージで記述されているのを見て嬉しく思いました。crank_instanceでリンクチャネルを増やす方法はありますか? Etpu_Crank_Ip_InstanceType crank_instance = { . u8ChanNum = ETPU_CRANK_CHAN 、 . u8OtherEngChanNum = ETPU_CRANK_OTHER_ENG_CHAN 、 . ePriority = ETPU_PRIORITY_HIGH 、 . ePolarity = ETPU_CRANK_IP_POLARITY_FALLING 、 . u8TeethTillGap = TEETH_TILL_GAP 、 . u8TeethInGap = TEETH_IN_GAP 、 . u8TeethPerCycle = TEETH_PER_CYCLE 、 . u24Tcr2TicksPerTooth = TCR2_TICKS_PER_TOOTH 、 . u24Tcr2TicksPerAddTooth = 0 、 . eLogToothPeriods = ETPU_CRANK_IP_LOG_TOOTH_PERIODS_ON 、 . u32LinkCam = (( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_CAM_CHAN ) << 24 )) 、 . u32Link1 = (( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_3_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_SPARK_4_CHAN ) << 24 )) 、 . u32Link2 = (( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_3_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_FUEL_4_CHAN ) << 24 )) 、 . u32Link3 = (( ETPU_IP_CHANNEL_TO_LINK ( ETPU_KNOCK_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_KNOCK_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_BANK_1_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_BANK_2_CHAN ) << 24 )) 、 . u32Link4 = (( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_1_CHAN ) << 0 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_2_CHAN ) << 8 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_3_CHAN ) << 16 ) + ( ETPU_IP_CHANNEL_TO_LINK ( ETPU_INJ_4_CHAN ) << 24 )) 、 . pCpba = NULL_PTR 、 . pCpbaToothPeriodLog = NULL_PTR } ; eTPUエンジンAを12DI、12点火、クランク、右バンク吸気カム、右バンク排気バンクに、eTPUエンジンBを12PI噴射、左側カムインスタンスに使用したいと考えています。 あるいは、eTPUエンジンA(6DI、6点火、6PI、ノック、RHカムx2)、eTPUエンジンB(6DI、6点火、6PI、ノック、LHカムx2)かもしれません。 しかし、そのためにはあと2つリンクエントリが必要になります。しかも、他にも必要になりそうなものは数えていません。WMIとNitroも欲しいです。大変なプロジェクトだとは承知していますが、どなたかお手伝いいただけると本当にありがたいです。 私はeTPUプログラミング、そしてNXPのエコシステム全体について初心者です。 ご回答ありがとうございます。 リチャード Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは、@rudikakk11 さん。 現在のパラメータセットが .u32Link1 から .u32Link4(最大16チャネル) は次のように拡張されます .u32Link1から.u32Link12へ(最大48チャネル) あなたには合いますか? 敬具 ミラノ Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは、 @MilanBrejl それは完璧ですね! eTPUコンパイラはすべて有料ですか?念のために、他に改造や自作機能が必要になるかもしれない。 ご返信ありがとうございます。次回もよろしくお願いいたします! リチャード Re: eTPU crank, cam, injections and Ignitions on S32K3 こんにちは、 @MilanBrejl もう一つ質問です。GDIエンジンの高圧燃料ポンプ(HPFP)はどのように制御するのですか?ライブラリの中にそれに対応する関数が見つかりませんでした。 私の考えでは、インジェクションインスタンスを使うのが良いだろうと思いました。 よろしくお願いいたします。 リチャード
View full article
i.MX95 NPU 的 ReLU6 输出值超过 6 时,是否会没有错误或警告? 你好, 我们正在尝试了解 ReLU6 在 i.MX95 Neutron NPU 上的表现。 据我们所知,ReLU6 的输出应该始终保持在 0 到 6 之间。我们注意到 对于 SSD MobileNet V1 模型,NPU 的检测精度低于 CPU,因此我们 开始检查中间层输出。对于使用 ReLU6 的层,板上的值 超过了 6(最高可达约 25),而 CPU 上的同一层(相同模型,相同输入)始终 正如预期的那样,分数保持在0-6分之间。 我们在运行时没有在板上看到任何相关的错误或警告。在模型转换过程中, neutron-compiler 确实会显示一些关于量化的通用警告,但没有一个警告是错误的。 似乎与这一点有关。 您能帮我们理解一下吗? 1.在这个NPU上,ReLU6的输出值是否可以超过6? 2. 如果不是,编译器或运行时在这种情况下难道不应该显示错误或警告吗? 环境: - 板:i.MX95 EVK - 电路板支持包。:LF_6.18.20_2.0.0 - eIQ Neutron SDK:3.2.3 - 型号:SSD MobileNet V1(uint8,Arm ML-Zoo) 谢谢! Re: Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? 您好, 感谢您对恩智浦半导体产品的关注, Neutron Supported Operators markdown 中列出了 ReLU6 作为支持的运算符,我想确认一下该层是否已更改为 ReLU,能否请您分享一下重现步骤以及您得到的二进制文件? 您可以尝试使用eIQ Model Zoo mobilenetv1并将其转换为 Neutron。 此致 Re: Is it expected that a ReLU6 output can exceed 6 on the i.MX95 NPU, with no error or warning? 您好, 感谢您的快速回复。 1)确认仍然是 ReLU6,而不是 ReLU 不,这一层没有改成 ReLU。neutron-compiler 自带的 NeutronIR(--dump-neutron-ir-final-file) 它仍然显示 FusedActivation = "Relu6" - 这不是我们对文件的解释。看 请参阅 evidence/01_confirm_still_relu6/ 获取确切的模型、命令和输出。 2) 重现步骤以及我们得到的二进制文件 有关确切的命令、编译后的模型、输入,请参阅 evidence/02_reproduction_npu_exceeds_bound/。 脚本、控制台日志和原始输出张量。在 i.MX95 EVK 板上: 最小值=-15 最大值=96 ReLU6 上限(原始数据):超出上限 12 个元素:720000 个元素中有 4650 个(0.65%) CPU 上的同一层保持在 0-6 的范围内,符合预期(实际最大值=5.999,而 NPU 的实际最大值=24.664)。 3) 回复:尝试 eIQ Model Zoo mobilenetv1 我们试过了(mobilenet_v1_0.25_128_quant.tflite,来自您的 配方.sh)。它的28个中没有一个 CONV_2D/DEPTHWISE_CONV_2D 算子实际上融合了 ReLU6 作为激活函数,因此该模型不 重现(或排除)我们报告的问题。 作为参考,所有这些操作均使用 eIQ Neutron SDK 3.2.3。贯穿始终(编译器和板载运行时)。我们 怀疑问题出在 neutron-compiler 本身:用 ReLU6 编译这一层时,已将其更改为普通层。 ReLU 生成的微代码与实际生成的微代码完全相同的字节,因此上限似乎并未被纳入考虑范围。 完全没有生成代码。 请您确认一下,如果还有其他需要我们提供的信息,请与我们联系。 谢谢!
View full article
i.MX8M 四核 – M4 核心启动步骤和所需的 U-Boot 命令 我正在使用 i.MX8M Quad EVK SD 卡镜像 ,想了解 从 U-Boot 启动并在 Cortex-M4 内核 上运行应用程序的正确步骤。 我已经下载了 适用于 i.MX8M 四核处理器的 MCUXpresso SDK ,并成功编译了 M4 内核的 Hello World 示例程序。现在我已经得到了生成的.bin 固件文件。 请提供正确的U-Boot 命令和启动顺序,以便从 U-Boot 加载并启动此 M4 .bin固件?以及如何查看 M4 控制台? #imx8mq #m4 #cortex-m4 #boot_m4 #UBoot #yocto #uboot命令 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Linux Yocto Project Re: i.MX8M Quad – M4 Core Boot Steps and Required U-Boot Commands 你好, U-Boot 命令分步指南 1. 准备 SD 卡 复制你编译好的 .bin 文件文件(例如, hello_world.bin )在将 SD 卡插入 EVK 之前,将其写入 SD 卡的FAT/启动分区(分区 1)。 2. 停止 U-Boot 自动启动 打开板电源,然后立即按任意键中断 U-Boot 提示符处的启动。 3. 选项 A — TCM 执行(推荐用于 MCUXpresso SDK 应用) 这是 MCUXpresso SDK Hello World 示例的标准方法,这些示例链接到位于 0x1FFE0000 (别名 0x7E0000 的 TCM 运行。😞 # Step 1: Load .bin from SD card FAT partition into a DDR staging buffer u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin # Step 2: Copy the image from DDR staging buffer into the M4's TCM u-boot=> cp.b 0x48000000 0x7e0000 0x20000 # Step 3: (Optional but recommended) Flush data cache before starting M4 u-boot=> dcache flush # Step 4: Release M4 from reset and start execution from TCM u-boot=> bootaux 0x7e0000   你应该看到类似这样的输出: ## Starting auxiliary core stack = 0x20020000, pc = 0x1FFE0305...       3. 选项 B — DDR 执行 如果您的二进制文件链接到 DDR 运行(例如, 0x80000000 😞 u-boot=> fatload mmc 1:1 0x80000000 hello_world.bin u-boot=> dcache flush u-boot=> bootaux 0x80000000   ⚠️ 重要提示: 根据编译 MCUXpresso SDK 应用程序时使用的 链接器脚本 ,使用 0x7e0000 (TCM) 或 0x80000000 (DDR)。 对于默认的 Hello World 示例,TCM( 0x7e0000 )是正确的目标。 可选:清除资源表区域(用于 Hello World / 裸机环境) 如果你的镜像没有RPMsg 资源表(例如简单的 hello_world.bin ),清除资源表区域,以避免产生可能在以后导致 Linux 系统混乱的垃圾值: u-boot=> mw 0xb80ff000 0 4 可选:运行 prepare_mcore (当 Linux 系统也启动时) 如果您计划在启动 M4 后继续启动 Linux,请在 bootaux 之前运行此附加命令。它配置时钟,使 Linux 不会禁用 M4 使用的时钟: u-boot=> fatload mmc 1:1 0x48000000 hello_world.bin u-boot=> cp.b 0x48000000 0x7e0000 0x20000 u-boot=> run prepare_mcore u-boot=> bootaux 0x7e0000     检查M4控制台 i.MX8MQ EVK 使用 FTDI USB 转串口芯片,连接到 PC 时会枚举两个独立的 COM 端口: 端口 内核 较低的编号(例如,COM9 / /dev/ttyUSB0 ) Cortex-A53(U-Boot/Linux 控制台) 更高的数字(例如,COM10 / /dev/ttyUSB1 ) Cortex-M4 控制台       两个端口的设置: 115200 波特率,8 位数据位,无奇偶校验,1 位停止位 (115200 8N1)。 打开两个独立的终端窗口(例如,TeraTerm、minicom、PuTTY): 终端 1 → 下方 COM 端口 → 用于 U-Boot 命令 终端 2 → 更高端口的 COM 端口 → 查看 M4 Hello World 输出 快速参考:通过环境变量实现自动化 为了方便起见,您可以将这些值保存为 U-Boot 环境变量: u-boot=> setenv m4_image hello_world.bin u-boot=> setenv m4_loadaddr 0x7e0000 u-boot=> setenv load_m4_image "fatload mmc '${mmcdev}':'${mmcpart}' 0x48000000 '${m4_image}'; cp.b 0x48000000 0x7e0000 0x20000" u-boot=> setenv run_m4_image "run load_m4_image; bootaux '${m4_loadaddr}'" u-boot=> saveenv # Then simply run: u-boot=> run run_m4_image     关键参考文件 UG10163 — i.MX Linux 用户指南(4.7.4 节) — i.MX8M 四核处理器的官方 M4 启动步骤 AN5317 — 通过 U-Boot/Linux 在 i.MX 上向 Cortex-M 加载代码— TCM 与 DDR 加载深度解析 GS-MCIMX8M-EVK — MCIMX8M-EVK 入门指南 — 针对特定开发板的逐步指南 此致
View full article
MPC5775B – 应用程序到 RAppID 引导加载程序的转换 您好,NXP团队,我正在使用带有RAppID引导加载程序的MPC5775B进行CAN烧录。 我没有 RAppID FBL 源代码,因此无法修改现有的 FBL。 运行中的应用程序是否有支持的机制来请求现有的 RAppID FBL 进入编程模式? 如果需要,MPC5775B 的应用程序 → FBL 入口顺序是什么? 这是否需要特定的 RESET/启动机制,或者 RAppID 是否提供了其他方式从应用程序请求 FBL? Re: MPC5775B – Application to RAppID Bootloader transition 你好, RAppID FBL 中没有内置的、有文档记录的 API,供正在运行的应用程序以编程方式请求 FBL 条目。适用于 MPC57xx 的 RAppID 引导加载程序是一个闭源二进制的、驻留在闪存中的引导加载程序(以预编译的 .rbf 文件形式分发)。文件)未提供源代码,也无法修改。 触发该功能的标准机制是重置 + 启动时标志检查,而不是应用程序的运行时调用。 顺祝商祺! Peter Re: MPC5775B – Application to RAppID Bootloader transition 谢谢你,彼得。据了解,该机制是先进行RESET,然后进行启动时标志检查。由于我们没有 RAppID FBL 源代码,能否请您说明一下 MPC5775B 的 RAppID FBL 在启动时检查什么标志/条件,以及应用程序如何在 RESET 前设置/请求它? 这是特定的 RAM 地址/魔法值、复位原因条件、配置字段,还是其他机制?如果应用程序端有设置此标志的步骤或文档,能否分享一下? Re: MPC5775B – Application to RAppID Bootloader transition 如果您有解决此问题的方法,请务必告诉我。 谢谢你, Re: MPC5775B – Application to RAppID Bootloader transition @lukaszadrapa你能帮我解答一下这个问题吗? Re: MPC5775B – Application to RAppID Bootloader transition 您好@NXP_007 正如彼得所说,你不能从你的应用程序中请求运行引导加载程序。每次重置后,引导加载程序都会启动,如果收到 PC 上运行的 RAppidBL 应用程序的响应,它会等待预定的时间。否则,它将启动应用程序。 用户可以更改延迟时间。详情请参阅用户手册中的“2.7 RAppID启动加载程序闪存算法(RBF)”章节。 此致, Lukas
View full article
MPC5775B – Application to RAppID Bootloader transition Hello NXP Team, I am using MPC5775B with RAppID Bootloader for CAN flashing. I do not have the RAppID FBL source code, so I cannot modify the existing FBL. Is there a supported mechanism for the running application to request the existing RAppID FBL to enter programming mode? If yes, what is the required Application → FBL entry sequence for MPC5775B? Does this require a specific reset/boot mechanism, or does RAppID provide another way to request FBL from the application? Re: MPC5775B – Application to RAppID Bootloader transition Hello, There is no built-in, documented API in the RAppID FBL for the running application to programmatically request FBL entry. The RAppID bootloader for MPC57xx is a closed-binary, flash-resident bootloader (distributed as a pre-compiled .rbf file) with no source code provided and no modification possible. The standard mechanism to trigger it is a reset + boot-time flag check, not a runtime call from the application. Best regards, Peter Re: MPC5775B – Application to RAppID Bootloader transition Thanks Peter. Understood that the mechanism is a reset followed by a boot-time flag check. Since we do not have the RAppID FBL source code, could you please clarify what boot-time flag/condition the RAppID FBL for MPC5775B checks, and how the application can set/request it before reset? Is this a specific RAM address/magic value, reset-cause condition, configuration field, or another mechanism? If there is an application-side procedure or documentation for setting this flag, could you please share it? Re: MPC5775B – Application to RAppID Bootloader transition Please do let me know if you have any solution to the problem. Thank you, Re: MPC5775B – Application to RAppID Bootloader transition @lukaszadrapa Can you help me out on this topic? Re: MPC5775B – Application to RAppID Bootloader transition Hi @NXP_007  As Peter said, you can't request  to run the bootloader from your application. The bootloader starts after each reset and it waits pre-defined time if it gets a response from RAppidBL application running on PC. If not, it starts the application.  The delay can be changed by user. See "2.7 RAppID Boot Loader Flash Algorithm (RBF)" in the user manual for details.  Regards, Lukas
View full article
i.MX8MP ENET_RXC/A25 Pinmux MIIインターフェースの説明 PHYTEC phyCORE-i.MX8M Plus SOMを使用したカスタムボードを開発しており、既存のRGMIIインターフェースからMIIへのイーサネットピンマックス移行を検討しています。PHYTEC SOMのピンA25は、i.MX8M PlusのENET_RXC信号に関連付けられています。i.MX8MPピンマックスでは、ENET_RXC ALT0 = CCM_ENET_QOS_CLOCK_GENERATE_RX_CLKおよびALT1 = ENET_QOS_RX_ERをサポートしています。意図されたMII構成の正しいピン割り当てとインターフェース要件についての明確な説明が必要です。具体的には、MII受信インターフェースにENET_RXCが必要でしょうか?それとも必要なRX_ER機能は別の適切なi.MX8M Plusパッド/GPIOに割り当てられるのでしょうか?別のパッドが使える場合は、推奨されるピンマッピングをご提供ください。また、i.MX8M Plus ENET_QOSコントローラが意図されたMIIインターフェースをサポートしているか、IOMUX、MAC、デバイスツリー、GPR、PHYの設定変更が必要かどうかも確認する必要があります。i.MX8M PlusとPHYTEC phyCORE SOMの推奨イーサネットピンマッピングと設定についてアドバイスをお願いします。 Re: i.MX8MP ENET_RXC/A25 Pinmux Clarification for MII Interface こんにちは、 NXP Semiconductors製品にご関心いただきありがとうございます。 i.MX 8M PlusはMIIをサポートしていないため、RMからの以下の抜粋を参照してください。 以下のいずれかを通じて商用イーサネットPHYデバイスへのシームレスなインターフェースが可能です: 50MHzで動作する2ビット縮小MII(RMII)。 125 MHzで動作する、 1 つの (ダブル・データ・レート)4 ビットの縮小GMII (RGMII)。 信号マッピングについては、8M Plus DS i.MX を参照してください。 よろしくお願いします。
View full article
MPC5775B – アプリケーションからRAppIDへのブートローダー移行 こんにちは、NXPチームの皆さん。私はCANフラッシングに RAppIDブートローダーを組み合わせたCAN フラッシングをMPC5775Bしています。 RAppID FBLのソースコードは持っていないので、既存のFBLを修正することはできません。 実行中のアプリケーションが既存のRAppID FBLにプログラミングモードに入るよう要求するサポートされたメカニズムはありますか? もしそうなら、MPC5775Bに必要なアプリケーション→FBLエントリシーケンスは何ですか? これには特定のリセットや起動機構が必要なのでしょうか、それともRAppIDはアプリケーションからFBLを要求する別の方法を提供しているのでしょうか? Re: MPC5775B – Application to RAppID Bootloader transition こんにちは、 RAppID FBLには、実行中のアプリケーションがプログラム的にFBLエントリを要求するための組み込みかつ文書化されたAPIはありません。MPC57xx用のRAppIDブートローダーは、クローズドバイナリでフラッシュ常駐ブートローダー(事前コンパイル済みの.rbfとして配布)ですソースコードが提供されておらず、変更も不可能なファイル) これをトリガーする標準的なメカニズムは、アプリケーションからのランタイム呼び出しではなく、リセット+ブートタイムフラグチェックです。 よろしくお願いいたします。 ピーター Re: MPC5775B – Application to RAppID Bootloader transition ありがとう、ピーター。リセット処理に続いて起動時のフラグチェックが行われる仕組みだと理解しました。RAppID FBLのソースコードがない場合は、MPC5775BチェックのRAppID FBLにどのようなブートタイムフラグや条件があるのか、またアプリケーションがリセット前にどのように設定・要求できるのか、説明していただけますか? これは特定のRAMアドレス/マジック値、リセット原因条件、設定フィールド、または別のメカニズムでしょうか?もしこのフラグを設定するためのアプリケーション側の手順やドキュメントがあれば、ぜひ教えていただけませんか? Re: MPC5775B – Application to RAppID Bootloader transition この問題の解決策をご存知でしたら、ぜひ教えてください。 ありがとう、 Re: MPC5775B – Application to RAppID Bootloader transition @lukaszadrapaこの件について助けてもらえますか? Re: MPC5775B – Application to RAppID Bootloader transition こんにちは、 @NXP_007 ピーターが言ったように、アプリケーションからブートローダーの実行をリクエストすることはできません。ブートローダーはリセットごとに起動し、PC上で動作中のRAppidBLアプリケーションから応答が来た場合は、あらかじめ定められた時間を待ちます。そうでなければ、アプリケーションが始まります。 遅延はユーザーによって変更可能です。詳細はユーザーマニュアルの「2.7 RAppID Boot Loader Flash Algorithm (RBF)」をご覧ください。 よろしくお願いいたします。 ルーカス
View full article
Kinetis (../45/47/43;MCX W71/72/70) および MCX W23 電源プロファイルツール (ローカライズ機能を含む) このページは、Kinetis (KW35/KW38/KW45/KW47) および MCX Wx (MCX W71/72 および MCX W23) 電力プロファイル ツール専用です。 これにより、あなたのアプリケーション(オートモーティブ、IIoT、トラッカー/タグ、連続血糖モニタリング[CGM])の消費電力を推定し、ソリューションのバッテリー寿命を評価するのに役立ちます。 このページには、単独製品またはフルシステムアプリケーション向けの専用パワープロファイルツールを提供する4つのマーケットセグメントが含まれています:   1. オートモーティブ Kinetis(KW3x/4x)オートモーティブ用パワープロファイルツール - NXPコミュニティ KW35/36製品用のBluetooth LEをスタンドアロンで使用。 Bluetooth LEはKW37/38/39製品用のスタンドアロン対応です。 KW45/KW47製品用のBluetooth LEをスタンドアロンで使用。 スマートフォブアプリケーション(BLE/KW45;UWBレンジャー4位;SE;モーション・センサ) スマートフォブアプリケーション(BLE/KW47;UWBレンジャー5;SE;モーション・センサ) 2.IIoT Kinetis MCX Wxx(MCX W71/72 および MCX W23)IIoT用パワープロファイルツール - NXPコミュニティ Bluetooth LEは単体でMCX W71/MCX W72製品用です。 MCX W23製品のBluetooth LEをスタンドアロンで提供します。 スタンドアロン (IIoT) の MCX W71 および W72 マター製品用の 802.15.4 Matter ICD SIT & LIT および ZED。 Aliro Doorlockアプリケーション    3. オートモーティブおよび工業技術向けローカリゼーションアプリケーション(CCC CS) Kinetis MCX Wxx(KW47およびMCX W72)Bluetoothローカライゼーション用パワープロファイルツール - NXPコミュニティ 4.新しいツールが登場: Zephyr・ズボス Zephyr BLE KW45/MCX W71 または KW47/MCX W72 を使用して PCB を構築し、無線の性能と無線認証 (CE/FCC/IC) に関する情報をすべて得るには、次の重要なリンクを参照してください。 KW45(カーアクセサリ)を使ってPCBを構築する最良の方法 - NXPコミュニティ 電力および低電力アプリケーションノートについては、製品ページをご覧ください。便宜上、いくつかの直接リンクを次に示します。 MCXW71 - 電源管理ハードウェア KW45/K32W148 - 電源管理ハードウェア 異なる体験:ワンワイヤレス接続パワープロファイリングツール ワイヤレス・コネクティビティ電力プロファイリングツールをすべて一つにまとめています。 Kinetis(KW3x/4x、MCX W7xおよびMCX W23)One コネクティビティ Power Profile Tool - NXPコミュニティ 注:このツールはHTML形式で、使いやすく、以前のツール形式と比べて反応的(レイテンシなし)です。 製品: K32W0 製品: K32W1 製品: KW 34|35|36 製品: KW 37|38|39 製品: KW41Z |31Z | 21Z 製品: QN9080|SIP 製品: QN9090|30 Re: Kinetis (KW35/38/KW45 & K32W1/MCX W71) Power Profile Tools (including Localization) こんにちは、エベレット。 パスワードは、変更や競合他社のベンチマークの詳細が多すぎることを避けるために設定されています。 ご不便をおかけして申し訳ございませんが、それはCANません。 Re: Kinetis (KW35/38/KW45 & K32W1/MCX W71) Power Profile Tools (including Localization) こんにちは、christophe_menardさん。 @christophe_menardシート保護のパスワードを教えていただけますか。よろしくお願いします。 EverettRao_0-1729134009121.png Re: Kinetis (../45/47/43;MCX W71/72/70) & MCX W23 Power Profile Tools (including Localization) こんにちは 、 OneConnectivityPowerProfilingtool_SDK_26_03.zip を使用したいのですが、トロイの木馬が検出されました。 このツールの使い方。 サポートありがとうございます Re: Kinetis (../45/47/43;MCX W71/72/70) & MCX W23 Power Profile Tools (including Localization) こんにちは、 @pierre_demeyer この件を確認するため、社内のIT部門に問い合わせチケットを発行しました。 近いうちにまたご連絡します。 Re: Kinetis (../45/47/43;MCX W71/72/70) & MCX W23 Power Profile Tools (including Localization) こんにちは、 @pierre_demeyer IT認証の結果、CrowstrikeやDefenderのソフトウェアを使ってトロイの木馬ウイルスは検出されませんでした。
View full article