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が切り替えられず、MAT1/MAT2は問題なく動作します ボード/SDK: FRDM-RW612、NXP-Zephyr v4.3.0 搭載のRGB LED(GPIO0=青、GPIO1=赤、GPIO12=緑)をpwm-ledとしてCTIMER0、それぞれチャネル0/1/2として、IO_MUX_CT0_MAT0_OUT_IO0、IO_MUX_CT0_MAT1_OUT_IO1、IO_MUX_CT0_MAT2_OUT_IO12を共用pinctrl-0グループで構成しました。3チャネルすべてでテストアプリをサイクルサイクルで実行しました。 赤色および緑色のLEDは正しくPWM制御されています(Saleaeロジックアナライザで確認済み - GPIO1およびGPIO12の波形は正常です)。青色LED(GPIO0/MAT0)は完全に消灯したままで、ロジックアナライザは平坦な線を示し、デューティサイクル(0~100%)のいずれにおいてもトグルは発生しません。GPIO0のデジタルGPIO(非PWM)トグルは問題なく動作します。 CTIMER0 MAT0チャネルのみがPWM出力に失敗します。同じタイマーインスタンス上のMAT1/MAT2は動作します。 必要なもの: GPIO0/CT0_MAT0がZephyrのFRDM-RW612上で既知の動作PWM組み合わせであるかどうかの確認。 RW612のチャネル0 CTIMER0に関するエラタムや制限に関するガイダンスがあります。 動作する.overlay例として、CTIMER を介して GPIO0 を PWM する例を挙げ、それと比較します。 frdm_rw612.オーバーレイ 「`」 #include < zephyr/dt-bindings/pwm/pwm.h> / { 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>; }; }; エイリアス { pwm-gpio0 = &pwm_gpio0; pwm-gpio1 = &pwm_gpio1; pwm-gpio12 = &pwm_gpio12; }; }; ctimer0_pwm: &ctimer0 { compatible = "nxp,ctimer-pwm"; ステータス = "okay" clk-source = <5>; クロック = <&clkctl1 MCUX_CTIMER0_CLK>; #pwm-cells = <3>; モード = <0>; プリスケール = <0>; pinctrl-0 = <&pinmux_ctimer0_pwm>; pinctrl-names = "default"; }; &pinctrl { pinmux_ctimer0_pwm: pinmux_ctimer0_pwm { グループ0 { pinmux = < IO_MUX_CT0_MAT0_OUT_IO0 IO_MUX_CT0_MAT1_OUT_IO1 IO_MUX_CT0_MAT2_OUT_IO12 >; スルーレート = "通常"; }; }; }; 「`」 評価ボード Re: FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine こんにちは、 あなたの調子が良いといいのですが。どのアプリケーションを基準にしているのか、確認を手伝ってもらえますか? また、PWM信号をどのように測定しているのか、もう少し詳しく教えてもらえますか?各PWMに対応するFRDMの特定ピン。 よろしくお願いいたします。 リカルド Re: FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine @Ricardo_Zamora さん、 NXP-Zephyr v4.3.0を使ってzephyr/samples/basic/rgb_ledを基にカスタムプロジェクトを作成しました。 v4.3.0でプロジェクトをビルドすると、ctimer0_pwm 0 は動作しません。しかし、v4.4.1.1以降でビルドすると、ctimer0_pwm 0は期待どおりに動作します。 テスト中にSaleae社のロジックアナライザを使用してPWM信号をキャプチャし、2つのバージョンの違いを確認しました。 これはv4.3.0のバグでしょうか?
View full article
LPC55S06のHashcryptにバグがあります こんにちは、 Hashcryptのハードウェアアクセラレーションを使用しようとした際に、無限ループに陥ってしまいました。 Hashcryptのドライバーバージョンは2.2.17です。**マイクロコントローラ**はhashcrypt_sha_one_block()の679行で止まります: while (0U == (base->STATUS & HASHCRYPT_STATUS_WAITING_MASK))     { //ここで行き詰まる     } 驚くべきことに、90回の実行後でも動かなくなったようです(私たちのマイクロコントローラは89回も動作していますhashcrypt_sha_one_block閉じ込められずに)。 メインの呼び出しはembedTLS ssl_tls.cによって行われます。ファイル(err.pngを参照)。 こちらが、mbedTLS v3.6.7を構築する際にSHA256_ALTを定義して実装する必要があったmbedtls_sha256_finish()()の現在の実装です int mbedtls_sha256_finish ( mbedtls_sha256_context * ctx , unsigned char * output ) { status_tステータス; ステータス= HASHCRYPT_SHA_Finish ( ハッシュクリプト、 ( hashcrypt_hash_ctx_t * ) ctx -> hash 、 出力、 NULL ) ; ステータスを返します。 } 私たちのコードはベアメタルで動作しており、異なるプロセスは使用していません。 ご協力いただき、誠にありがとうございました。 よろしくお願いいたします。 ハロルド
View full article
RT1021 LPSPI DMA 四路模式 你好。有人知道如何在四路模式下使用LPSPI的DMA吗?我能明白我该怎么做。DMA 是否支持四通道模式?我这样问是因为我需要设置 LPSPI_TCR[TXMSK] 来进行接收,但是当我这样做时,模块开始发送数据,并在开始 DMA 之前自动重置 LPSPI_TCR[TXMSK]。 i.MX RT101x i.MX RT102x i.MX RT105x i.MX RT106x Re: RT1021 LPSPI DMA in Quad mode Hello 能否分享一下您使用DMA在四路模式下读取LPSPI数据的代码?我尝试按照您的建议(用 TCR 而不是 TDR 写入,……)进行操作,但我仍然无法使用 DMA 在 Quad 模式下读取数据。我只能通过中断来实现。 先谢谢了,此致敬礼,杰里米 Re: RT1021 LPSPI DMA in Quad mode 现在我可以回答这个问题了。LPSPI 可以在四路模式下与 DMA 配合使用。需要重写 LPSPI_MasterTransferEDMA,以配置 DMA 写入 TCR 而不是 TDR。别忘了将传输大小改为 4 字节,因为命令寄存器只能使用 32 位写入。CFGR1 也应相应更改。 然而,四通道模式并没有帮助我提高传输速率。最大吞吐量保持在每秒 30 兆比特的限制。如果我使用四路模式和 30MHz SPI 时钟,传输会有明显的延迟 :(。因此,四路模式有助于降低SPI的时钟频率,但并不能提高波特率。 Re: RT1021 LPSPI DMA in Quad mode 谢谢你的回复。 确认后,4 位半双工传输适用于与 QuadSPI 存储设备连接,并且至少需要一位(发送数据)。 掩码(TCR[TXMSK] 或接收数据掩码 TCR[RXMSK])必须 也需要设置。 但是,当设置 TCR[RXMSK] 时,接收数据不会存储在接收 FIFO 中,如表 47-10 所示。LPSPI 中断和 DMA 请求,该机制无法触发 DMA 请求。 很抱歉之前的回复给您带来了不便。 祝你有美好的一天, 信息通信技术 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 ------------------------------------------------------------------------------- Re: RT1021 LPSPI DMA in Quad mode 你好, jeremyzhou。 单数据SPI接收和四数据SPI接收有很大的区别。单数据SPI接收需要写入TDR寄存器来启动传输,而四数据SPI接收需要设置TCR[TXMSK](任何写入TDR的操作都会启动传输,而不是接收)。所以我的问题是:如何在四数据模式下使用DMA接收数据? Re: RT1021 LPSPI DMA in Quad mode 你好, 感谢您对恩智浦半导体产品的关注,并感谢您给我们提供服务的机会。 1)DMA 是否可以使用四通道模式? ——是的,而且在我看来,本质上,通过 DMA 方式进行的单数据 SPI 和四数据 SPI 传输之间没有区别。 祝你有美好的一天, 信息通信技术 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 -------------------------------------------------------------------------------
View full article
RT1021 LPSPI DMA(クワッドモード) こんにちは。LPSPIのクワッドモードでDMAを使用する方法を知っている人はいますか?自分がそうできる理由は理解できます。DMAとクワッドモードを併用することは可能ですか?私がこの質問をするのは、受信のためにLPSPI_TCR[TXMSK]を設定する必要があるのですが、設定するとモジュールが送信を開始し、DMAを開始する前にLPSPI_TCR[TXMSK]を自動的にリセットしてしまうからです。 i.MXRT 101x i.MXRT 102x i.MXRT 105x i.MXRT 106x Re: RT1021 LPSPI DMA in Quad mode Hello DMAとクアッドモードでLPSPIを読み取るためのコードを教えていただけますか?あなたのアドバイス(TDRではなくTCRで書き込むなど)に従ってみましたが、DMAを使用したQuadモードでのデータ読み取りがまだできません。割り込みを使うことでようやく実現できた。 よろしくお願いいたします。ジェレミー Re: RT1021 LPSPI DMA in Quad mode これで質問に答えられます。LPSPIはDMAと併用してクワッドモードで使用することが可能です。DMAがTDRではなくTCRに書き込むように設定するには、LPSPI_MasterTransferEDMAを書き換える必要があります。コマンドレジスタへの書き込みは32ビット書き込みのみで行う必要があるため、転送サイズを4バイトに変更することを忘れないでください。CFGR1も同様に変更する必要があります。 しかし、クアッドモードは転送速度の向上には役立ちませんでした。最大スループットは毎秒30メガビットに制限されます。クワッドモードと30MHz SPIクロックを使用すると、送信にかなりの遅延が発生します:(。つまり、クアッドモードはSPIのクロックを下げるのに役立ち、ボードレートを上げるにはあまり役立ちません。 Re: RT1021 LPSPI DMA in Quad mode ご返信ありがとうございます。 確認後、4ビット半二重転送はQuadSPIメモリデバイスとのインターフェースに有用であり、少なくとも1ビット(送信データ) マスク(TCR[TXMSK]または受信データマスクTCR[RXMSK])は 設定もされる。 ただし、TCR[RXMSK]が設定されている場合、受信データは受信FIFOに格納されず、表47-10に従います。LPSPI割り込みおよびDMA要求の場合、メカニズムはDMA要求をトリガーできません。 前回の返信でご迷惑をおかけして申し訳ありませんでした。 良い一日をお過ごしください。 TIC ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: RT1021 LPSPI DMA in Quad mode こんにちは、 ジェレミー・ジョウ。 シングルデータSPIとクアッドデータ受信には大きな違いがあります。シングルデータSPI受信の場合はTDRレジスタに書き込みをして送信を開始する必要がありますが、クアッドデータSPI受信ではTCR[TXMSK]を設定する必要があります(TDRへの書き込みは送信開始で、受信は開始しません)。そこで質問です - DMAをクアッドデータモードで使うデータをどのように!受信するのか!データ。 Re: RT1021 LPSPI DMA in Quad mode こんにちは、 NXP Semiconductors製品へのご関心と、皆様にお仕えできる機会をいただき、ありがとうございます。 1)DMAでクワッドモードを使用することは可能ですか? はい、そして私の意見では、基本的に、シングルデータSPIとDMA方式によるクワッドデータSPI転送に違いはありません。 良い一日をお過ごしください。 TIC ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
View full article
LPC55S06 上的 Hashcrypt 存在漏洞 你好, 我在尝试使用 Hashcrypt 硬件加速时遇到了无限循环。 Hashcrypt 驱动程序版本为2.2.17。微控制器卡在hashcrypt_sha_one_block () 函数的第 679 行: while (0U == (base->STATUS & HASHCRYPT_STATUS_WAITING_MASK))     { //卡在这里     } 令人惊讶的是,它在执行 90 次后似乎就卡住了(我们的微控制器能够执行 89 次hashcrypt_sha_one_block而不会卡住)。 主要调用由 embedTLS ssl_tls.c 完成。文件(参见 err.png)。 这是我目前对 mbedtls_sha256_finish() 的实现(在构建 mbedTLS v3.6.7 时,我需要通过定义 SHA256_ALT 来实现它)。 int mbedtls_sha256_finish ( mbedtls_sha256_context * ctx , unsigned char * output ) { status_t状态; 状态= HASHCRYPT_SHA_Finish ( HASHCRYPT , ( hashcrypt_hash_ctx_t * ) ctx -> hash , 输出, 无效的) ; 返回状态; } 我们的代码是裸机代码,没有不同的流程。 非常感谢您的帮助。 此致, 哈罗德
View full article
FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM 不切换,MAT1/MAT2 工作正常 开发板/SDK: FRDM-RW612,NXP-Zephyr v4.3.0 将板载 RGB LED(GPIO0=蓝色,GPIO1=红色,GPIO12=绿色)配置为 CTIMER0 上的 pwm-leds,通道分别为 0/1/2,使用共享 pinctrl-0 组中的 IO_MUX_CT0_MAT0_OUT_IO0、IO_MUX_CT0_MAT1_OUT_IO1、IO_MUX_CT0_MAT2_OUT_IO12。运行测试应用程序,对所有三个通道进行占空比循环测试。 红色和绿色 LED 的 PWM 工作正常(已使用 Saleae 逻辑分析仪确认——GPIO1 和 GPIO12 上的波形干净)。蓝色 LED (GPIO0/MAT0) 完全熄灭——逻辑分析仪显示一条直线,在任何占空比 (0–100%) 下都不会切换。数字GPIO(非PWM)切换GPIO0工作正常, 只有 CTIMER0 MAT0 通道无法输出 PWM;同一定时器实例上的 MAT1/MAT2 可以正常工作。 我们需要: 确认在 Zephyr 下,FRDM-RW612 上的 GPIO0/CT0_MAT0 是否为已知可用的 PWM 组合。 关于 RW612 上 CTIMER0 通道 0 的任何勘误/限制的指导。 任何可用的 .overlay例如,通过 CTIMER 对 GPIO0 进行 PWM 控制,以便我们进行比较。 frdm_rw612.overlay ``` #include / { pwm_outputs { 兼容 = "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>; }; }; 别名 { pwm-gpio0 = &pwm_gpio0; pwm-gpio1 = &pwm_gpio1; pwm-gpio12 = &pwm_gpio12; }; }; ctimer0_pwm: &ctimer0 { 兼容 = "nxp,ctimer-pwm"; 状态 = "好的" clk-source = <5>; clocks = <&clkctl1 MCUX_CTIMER0_CLK>; #pwm-cells = <3>; 模式 = <0>; 预缩放 = <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 >; 转换速率 = "正常"; }; }; }; ``` 评估板 Re: FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine 你好, 希望你一切都好。请问您能否帮我们确认一下,您是以哪个应用程序为基础的? 另外,您能否详细说明一下您是如何测量PWM信号的?FRDM 中每个 PWM 的特定引脚。 顺祝商祺! 里卡多 Re: FRDM-RW612 (Zephyr) — CTIMER0 MAT0/GPIO0 PWM not toggling, MAT1/MAT2 work fine @Ricardo_Zamora , 我使用 NXP-Zephyr v4.3.0 创建了一个基于 zephyr/samples/basic/rgb_led 的自定义项目。 当我使用 v4.3.0 构建项目时,ctimer0_pwm 0 不起作用。但是,当我使用 v4.4.1.1 或更高版本进行构建时,ctimer0_pwm 0 可以按预期工作。 我在测试过程中使用 Saleae 逻辑分析仪捕获 PWM 信号,并确认了两个版本之间的差异。 这会不会是 v4.3.0 版本的一个 bug?
View full article
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
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
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