Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
S32R45 SptEcsIsrCb エラー! アラームの原因を検索すると、「PDMA での AXI 読み取りエラー」が表示されます。このアラームが発生する原因は何でしょうか? SPT エラー キューがオーバーフローしました。最初の 10 件のエラーのみが報告されます。最後に実行されたカーネルを確認してください! SPT完了 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 SptEcsIsrCb エラー!、ステータス: 0x11005、エラー情報: 0x10000 RsdkSptRun が完了しました。SPT プロセッシングが完了しました。次のカーネルの準備ができました。 Re: S32R45 SptEcsIsrCb error! こんにちはピーター、 ご返信ありがとうございます。   あなたが挙げた理由に従い、私は特に以下の点に重点を置いてコードを注意深くチェックしました。   WR_5、問題は見つかりませんでした。さらに、SPT カーネル コードは変更していません。   コード初期リスト:   AppMemAllocBuffer ( pHeapMem 、 & gSdadcSampleBufferBufH [インデックス]、 sizeof ( uint16_t ) * RSDK_SPT_RANGE512_4CH_IN_BUF_SIZE 、                           RSDK_SPT_DATA_ADDR_ALIGN_BYTES 、 RSDK_OALMEM_CHUNK_ID_CBRAM );   RelocSptCode ( gSptModuleCodeRelocBufH . virtAddr 、 RsdkSptRange512smp128crp4ch 、 RSDK_SPT_GET_KERNEL_SIZE ( RsdkSptRange512smp128crp4ch ));   np = 0 ; sptContext . kernelParList [ np ]. paramType= RSDK_SPT_PARAM_TYPE_ADDR ; sptContext 。 kernelParList [ np ++ ]。 paramValue = ( uintptr_t ) gSdadcSampleBufferBufH [ 0 ]。 phyAddr ;   sptContext . kernelParList [ np ]. paramType= RSDK_SPT_PARAM_TYPE_ADDR ; sptContext 。 kernelParList [ np ++ ]。 paramValue = ( uintptr_t ) gRadarCubeResultsBufH 。 phyAddr ;   sptContext . kernelParList [ np ]. paramType= RSDK_SPT_PARAM_TYPE_ADDR ; sptContext 。 kernelParList [ np ++ ]。 paramValue = ( uintptr_t ( gFft512TwiddleFactorsBufH . phyAddr );    sprintf (ファイル名、 " %s% s " 、 FILE_IN_PATH 、 "fft512_twiddle_factors.dat" ); /* RSDKデータは、PPCアーキテクチャとの互換性のため、ビッグエンディアン形式でファイルに保存されます。エンディアンの変換は、ファイルへのデータの読み書き時にのみ行われます。プロセッシングフロー内での変換は必要ありません。*/   DbgReadFileConvert ( fileName 、 0 、 ( char * ) gFft512TwiddleFactorsBufH . virtAddr 、 gFft512TwiddleFactorsBufH . numBytes 、 ENDIAN_CHANGE 、 DATA_BUFF_IS_CACHED );           sptContext . kernelParList [ np ]. paramType= RSDK_SPT_PARAM_TYPE_ADDR ; sptContext 。 kernelParList [ np ++ ]。 paramValue = ( uintptr_t ) gFft512BlackmanWindowBufH 。 phyAddr ;   sprintf (ファイル名、 " %s% s " 、 FILE_IN_PATH 、 "fft512_win_blackman.dat" ); DbgReadFileConvert ( fileName 、 0 、 ( char * ) gFft512BlackmanWindowBufH . virtAddr 、 gFft512BlackmanWindowBufH . numBytes 、 ENDIAN_CHANGE 、 DATA_BUFF_IS_CACHED );   sptContext . kernelParList [ np ]. paramType= RSDK_SPT_PARAM_TYPE_VALUE ; sptContext . kernelParList [ np ++ ]. paramValue = 3 ; /* 出力シフトなし */ sptContext . kernelParList [ np ]. paramType= RSDK_SPT_PARAM_TYPE_LAST ;   印刷リスト: gSptModuleCodeRelocBufH.phyAddr: 0x34000000 gSdadcSampleBufferBufH[0].phyAddr: 0x28000000 gSdadcSampleBufferBufH[1].phyAddr: 0x28003000 gSdadcSampleBufferBufH[2].phyAddr: 0x28006000 gSdadcSampleBufferBufH[3].phyAddr: 0x28009000 gRadarCubeResultsBufH.phyAddr: 0x34002000 gFft512TwiddleFactorsBufH.phyAddr: 0x340bd000 gFft512BlackmanWindowBufH.phyAddr: 0x340bf000 Re: S32R45 SptEcsIsrCb error! こんにちは、 考えられる原因は次のとおりです: 1. SPT入力とS32DS入力の不一致 SPT カーネル入力が予期された S32DS 構成と一致しませんでした。 PDMA は、SPT カーネルの構成によって決定されたアドレスでメモリを読み取ります。バッファ サイズ、キューブ ベース アドレス、またはチャネル カウントが揃っていない場合、PDMA は無効または予期しないメモリ位置を読み取ろうとする可能性があります → AXI 読み取りエラー。   2. 作業レジスタ(WR_x)の設定が正しくないか破損している PDMA が無効または誤って構成されたバッファを指す作業レジスタを使用する場合、AXI ファブリックは不正な読み取り要求を受信し、バス エラーをトリガーします。 https://community.nxp.com/t5/Other-NXP-Products/SPT3-1-1024-128-16range-don-t-work/mp/1621567   3. 同期PDMA実行モードと非同期PDMA実行モード .sync → .async .syncでモードでは、PDMA は誤った構成 (バッファ ポインタ、依存関係など) により満たされない可能性のある条件を待機します。 これにより、エラー フラグが蓄積され、PDMA エンジンが無効な読み取りを繰り返し試行すると AXI エラーが発生する可能性があります。   4. データ幅またはフォーマットが間違っている(例:WR_16とWR_11) PDMA が 16 ビットの複合データを期待しているが、ターゲット レジスタ/バッファが異なる幅/レイアウトに設定されている場合、AXI 読み取りバーストが不整合になる可能性があり、プロトコル エラー → AXI 読み取りエラーが発生します。   5. AXIプロトコルレベルのエラー(一般的な原因) S32R45 に固有のものではありませんが、AXI 読み取りエラー メカニズムは普遍的に適用されます。 バースト長またはサイズが無効です マップされていないアドレスまたは保護されたアドレスからの読み取りの試み スレーブタイムアウトまたは応答しないターゲット アップストリームの問題による読み取り応答エラー(SLVERR または DECERR) PDMA が不正な AXI トランザクションを生成すると、AXI インターコネクトは SLVERR を返します。これは PDMA 読み取りエラーとして表示されます。 あなたのケースで最も可能性の高い原因 両方のログに基づくと、主な容疑者は次のとおりです。 間違ったWR_xレジスタ(特にWR_5 / WR_16の選択) 非常に一般的には誤って構成され、無効な AXI 読み取りにつながります。 SPTカーネル入力とS32DS入力の不一致 以前のケースでは、見落とされ、根本原因として検証されることがよくあります。 PDMA同期モードが依存関係のデッドロックを引き起こす .syncを切り替えてみる→ .asyncデバッグ用。 よろしくお願いいたします。 ピーター     Re: S32R45 SptEcsIsrCb error! こんにちはピーター、 レーダー フロントエンドの波形サンプリング ポイントの数を 2 倍にすると、エラーは発生しなくなりましたが、チャープ バッファのサイズは変更されていません。問題をさらに分析するのにご協力ください。どうもありがとうございます。 Re: S32R45 SptEcsIsrCb error! こんにちは、 シナリオにおける最も可能性の高い根本原因: カーネルの予想されるチャープピッチと実際のバッファレイアウト間のストライド/アライメントの不一致 - サンプルを 2 倍にするとバーストサイズが揃い、バグがマスクされます。 WR_x 選択 / データ幅の不一致 (実数 vs 複素数、16 ビット vs その他)。サンプル数が変化すると偶然に修正されます。 kernelParList 内のパラメータ順序/タイプの混同 (ADDR と VALUE) が、特定のサイズの場合にのみ発生します。ミラー スレッドには同様のパラメータ シーケンスが示されており、インデックスをスリップするのは簡単です。 WR 24ビットオフセットエッジは、2倍にすると異なるパッキング/レイアウトで消えます。 よろしくお願いいたします。 ピーター
記事全体を表示
S32N55:充当 GM 时 gPTP 桥接设备中的序列 ID 队员们好 我正在测试gpTP示例中的网桥设备行为。我使用的是 GrayVIP_1_0_22_0。 根据《用户手册》,如果网桥在 启动超时则应开始作为 GM 运行。但我观察到,在这种情况下,同步和同步跟进帧中的序列 ID 都保持在 1024,不会增加。 检查相关代码后,我发现当网桥转换到 GM 模式时,用于生成同步信息的序列 ID 取自 prSyncMachines[prDomain->u8SlaveMachineId].u16SequenceId 从端口的序列号。 如果从端口没有收到任何同步报文,则该值永不更新,这将导致主端口发送的同步报文中的序列 ID 保持不变。 这种行为表明,在这种机制下,桥梁无法正常发挥全球机制的作用。 能否请您解释一下,为什么大桥的设计会出现这种情况? BR, Bridget GPTP_STACK Re: S32N55: sequence ID in gPTP bridge device when acting as a GM 你好,@Bridget、 我们的团队已经受理了一个案件,并将尽快提供答复 ,致以最崇高的敬意, Radu Re: S32N55: sequence ID in gPTP bridge device when acting as a GM 嗨,@Bridget、 我们正在努力重现该问题,并将在团队中讨论进一步的步骤。我会再联系你的。 谢谢, Lukas Re: S32N55: sequence ID in gPTP bridge device when acting as a GM @Bridget、 事实证明,gPTP 网桥的这种行为是有意为之,符合 802.1as 标准。 网桥应转发主端口上接收到的序列 ID。如果Grand Master丢失,序列ID确实会停止更新——这是下游设备能够分辨GM何时丢失的方式之一。 对于本来就没有总经理的桥梁,序列 ID 按标准是随机的。我们对 "随机"的解释是,序列 ID 的任何内容都不能保证,也不应假设。硬编码的 1024 被认为符合这一要求(可以是任何其他数字)。 序列 ID 是否会导致应用程序出现问题?正如您所观察到的,无论序列 ID 如何,端点都完全能够与网桥同步。 抱歉花了这么长时间。如果有不清楚的地方,请告诉我。 BR, Lukas
記事全体を表示
i.MX 93プロセッサ: セキュアブートの署名と認証の仕組みを解説 (日本語ブログ) 昨今、サイバーレジリエンス法(EU)やJC-STAR(日本)等、世界各国で法規制が確立しつつあります。またそれらの技術要件の中には、セキュアブートの要件も入ってきており、みなさまもよく耳にする重要な機能の一つかと思います。 しかしながら、実際にはセキュアブートの仕組みを理解せず使用してるユーザーも多いです。そのため、今回はi.MX 93のセキュアブート(AHAB)を例に仕組みを解説していきたいと思います。 目次 i.MX 93 AHABの署名と認証の仕組み 1. イメージのコンテナ化 2. コンテナに公開鍵と署名を付加 3. 署名付きコンテナの認証 4. U-Bootでの署名付きコンテナの認証 i.MX 93 AHABの署名と認証の仕組み¶ i.MX 93プロセッサのAdvanced High Assurance Boot (AHAB)の署名と認証の仕組みを説明します。 i.MX 93の起動ファイルは固有のコンテナ形式になっています。 AHABを使用したセキュアブートでは、コンテナに公開鍵と署名を付加し、デバイス起動時にはコンテナに含まれている公開鍵を認証し、コンテナの内容が改変されていないか検証することで、不正なソフトウェアの起動を防ぐことができます。 1. イメージのコンテナ化¶ Fig. 1 イメージのコンテナ化¶ i.MX 93のBOOTROMやU-Bootがメモリにロードして使用するイメージは、あらかじめコンテナ形式に変換しておく必要があります。 Note ここでイメージと言っているのは、U-Boot-SPL, U-Boot, ATF, OPTEE, M-Core SW, Kernel, DTB, Ramdisk, その他メモリ上に配置したいデータ等のことです。 コンテナ形式の詳細は i.MX 93 Applications Processor Reference Manual のSystem Bootの章にに記載があります。 イメージをコンテナ化するには、 imx-mkimage と、それに含まれる mkimage_imx8 というツールを使用します。 コンテナを生成すると、コンテナファイルの先頭にはContainer Headerが付加されます。この中には各イメージのオフセット、サイズ、ハッシュ値などを集めたImageArray、セキュアブートのため公開鍵、署名を書き込むSignature Blockなどがあります。Signature Blockは、ほぼ空の状態で生成されます。 複数のイメージを一つのコンテナにすることができます。イメージのデータはコンテナファイルの一番後ろに連結されます。 2. コンテナに公開鍵と署名を付加¶ Fig. 2 コンテナに公開鍵と署名を付加¶ i.MX 93デバイスで意図しないコンテナを使用されないよう、また、コンテナの内容の改変を検知できるよう、Code Signing Tool(以下、CST)を使用して、コンテナに公開鍵と署名を付加します。 最初にSuper Root Key (以下、SRK)を生成します。 CSTに含まれるスクリプト ahab_pki_tree.sh でCAとSRK1~SRK4を生成します。SRKは公開鍵とプライベート鍵のペアとなっていて、プライベート鍵は秘匿しておく必要があります。 CSTに含まれる srktool を使用して、SRK1~SRK4の4つの公開鍵を連結したSRK Tableを生成します。同時にSRK TableのSHA-256であるSRK Hashも生成されます。 SRK Hashは、i.MX 93デバイスのSRK_HASHヒューズに書き込みます。 SRKはi.MX 93デバイスのライフサイクルが終了するまで長期にわたり保存しておく必要があります。 次に、CSTに含まれる cst でコンテナに公開鍵と署名を付加します。 先ほど生成したSRK Tableは、Signature BlockのSRK Tableフィールドに書き込まれます。 Container Headerの先頭からSRK Tableフィールドの末尾の領域に対して、SRKのプライベート鍵の一つを使用して署名されます。 署名データは、Signature BlockのSignatureフィールドに書き込まれます。 3. 署名付きコンテナの認証¶ Fig. 3 署名付きコンテナの認証¶ 最初に、コンテナ上のSRK TableのSHA-256を計算して、i.MX 93デバイスのSRK_HASHヒューズの内容が一致していれば、SRK Tableは署名に使用したSRKと同じ、ということを認証できます。 SRK Tableが認証されれば、次に、SRK Tableの中に含まれるSRK公開鍵と署名データを使用して、Container Headerの先頭からSRK Tableフィールドの末尾の領域が改変されていないかを検証できます。 最後に、Container Headerが改変されていないことが検証できれば、ImageArrayに書かれているHash値と各ImageのHash値を比較することで、イメージが改変されていないかを検証できます。 4. U-Bootでの署名付きコンテナの認証¶ U-Bootでの署名付きコンテナの認証には、U-Bootの auth_cntr コマンドが使用されています。 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L811-L815 auth_cntr コマンドが実行されると、do_authenticate関数がコールされ、そこからauthenticate_os_container関数がコールされます。 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L400-L416 authenticate_os_container関数から、ahab_auth_cntr_hdr関数とahab_verify_cntr_image関数がコールされます。 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L330-L398 ahab_auth_cntr_hdr関数からは、ele_auth_oem_ctnr関数がコールされます。 ahab_verify_cntr_image関数からは、ele_verify_image関数がコールされます。 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L261-L278 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/arch/arm/mach-imx/ele_ahab.c#L297-L309 ele_auth_oem_ctnr関数とele_verify_image関数からは、ELEに対してコマンドが送信され、ELEから結果を受信します。 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/drivers/misc/imx_ele/ele_api.c#L76-L104 https://github.com/nxp-imx/uboot-imx/blob/lf-6.6.36-2.1.0/drivers/misc/imx_ele/ele_api.c#L134-L161 U-Bootの ahab_status コマンドで認証の結果を確認することができます。主要なエラーコードは以下のとおりです。 Table 1 ahab_status コマンドの主要なエラーコード¶ エラーコード エラーの意味 エラーが発生する状況 ELE_NO_AUTHENTICATION_FAILURE_IND (0xEE) 認証は行われなかった。 署名していないコンテナを認証しようとした。 ELE_BAD_KEY_HASH_FAILURE_IND (0xFA) ヒューズSRK_HASHと、署名付きコンテナのSRK TableのHASHがが一致しない。 ・ヒューズSRK_HASHに何も書かれていないデバイスで署名付きコンテナを認証しようとした。 ・ヒューズSRK_HASH生成時に使用したSRK Tableには含まれないSRKで署名したコンテナを認証しようとした。 ・署名付きコンテナのSRK Tableが書き換えられている。 ・署名付きコンテナのSRK Tableが正しくロードできなかった。(メモリ上に正しく書かれていない。) ELE_BAD_SIGNATURE_FAILURE_IND (0xF0) 署名が正しくない。 ・署名付きコンテナのSigned regionが書き換えられている。 ・署名付きコンテナのSignatureが書き換えられている。 ・上記のいずれかが正しくロードできなかった。(メモリ上に正しく書かれていない。) ELE_BAD_HASH_FAILURE_IND (0xF1) ImageのHASHが、Image Arrayに書かれているHASHと異なる。 ・署名付きコンテナのImageが書き換えられている。 ・署名付きコンテナのImageが正しくロードできなかった。(メモリ上に正しく書かれていない。)   Note これらのエラーコードはOEM Openの場合に観測できます。OEM Closedの場合はエラー発生時にデバイスが停止するためエラーコードは表示されません。 本資料はNXP製品を活用していただくための参考資料です。 正式な仕様は製品マニュアル・アプリケーションノートを参照ください。 使用ソフトウェアのバージョンなど諸条件の差異により、記載内容と実際の動作が異なる場合があります。 すべての機能検証を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。 次回は、セキュアブート(AHAB)の実装・動作方法について、説明したいと思います。  記事:i.MX 93プロセッサ: セキュアブートの実装方法 - 実践編 (日本語ブログ)   =========================​ 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。​ お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。​ (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)​ 昨今、サイバーレジリエンス法(EU)やJC-STAR(日本)等、世界各国で法規制が確立しつつあります。またそれらの技術要件の中には、セキュアブートの要件も入ってきており、みなさまもよく耳にする重要な機能の一つかと思います。 しかしながら、実際にはセキュアブートの仕組みを理解せず使用してるユーザーも多いです。そのため、今回はi.MX 93のセキュアブート(AHAB)を例に仕組みを解説していきたいと思います。 i.MX Processors Security 日本語ブログ
記事全体を表示
中子转换后的 YOLOv8n 模型无法在 i.MX95 中正常输出 您好, ,我从 ultralytics 导出了完全量化的 int8 YOLOv8n 物体检测模型。我已经使用最新的 eIQ Toolkit 版本 1.17 中的中子变流器将其转换成在 NPU 上运行,我曾尝试在 i.MX95 硬件上执行它。 我用 NPU 委托试过转换模型和非转换模型,但似乎只有转换模型上的中子图才能在 NPU 上执行。 当我比较两个模型的原始输出时,转换后的模型给出了多个假阳性,得分超过 95% 。我对已转换和未转换的模型都使用了相同的脚本,但只对已转换的模型有问题。我用多种方法进行了验证,但每次的结果都一样。 当我用 netron 应用程序检查这两个模型时,我发现转换后的模型在结构上发生了重大变化。 在此,我想问几点: 1.eIQ Toolkit 版本 1.17 的 Neutron 变流器是否支持像 YOLOv8 和 YOLOv11 这样的最新物体检测架构? 2.您在 i.MX95 上使用 NPU 测试过 YOLOv8 和 YOLOv11 吗?如果回答为 "是",请将模型和后处理步骤一并发送到 3.如果我们要在 i.MX95 中的 Neutron NPU 上执行 Neutron Graph 以外的操作,流程是什么? 4. 如果我们要在 i.MX95 中的 GPU 上执行上述模型,流程是什么? 我也翻阅了《机器学习用户指南》,但没有找到相关细节。 谢谢, Vatsal。 Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95 你好 您遇到的 Neutron 转换 YOLOv8n 模型误报问题是一个已知的难题。目前 i.MX95 NPU 对 YOLOv8 模型的支持仍在优化中,转换过程中的架构变化可能会影响性能。 关于您的具体问题: 1. eIQ 工具包 1.17 中的 YOLOv8 架构支持仍在改进中。推荐的转换工作流程是: - 在导出模型时确保正确的 int8 量化 - 使用最新的 eIQ 工具包 (v1.17) 使用变流器进行转换 - 命令:`./变流器 --input [你的模型].tflite`--target imx95 --use-python-prototype` 2.虽然支持 YOLOv8,但可能尚未完全优化。YOLOv5 与当前的 NPU 实现具有更好的兼容性。恩智浦团队正在积极改进对 YOLOv8/YOLOv11 的支持。 3. 要在 NPU 上执行 Neutron Graph 以外的操作,需要使用 eIQ 或 netron 工具分析模型,以确定哪些运算符已成功转换为在 NPU 上运行(显示为 neutronop 内容)。未转换的运算符将在 CPU 上运行。 4.在 i.MX95 上执行 GPU 运算时,应使用 TensorFlow Lite GPU 委托而不是 NPU 委托。这需要修改推理代码以使用 GPU 委托。 您可以通过在 netron 中检查转换后的模型来验证模型操作的分布情况--任何含有"neutronop" 内容的运算符都在 NPU 上执行,而其他运算符仍在 CPU 上执行。 此致 Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95 我们再次使用带有自定义数据集的YOLOv5s进行了训练,并尝试进行推断,因为您在之前的聊天中声称YOLOv5使用中子变流器取得了不错的结果。YOLOv5 也仍然存在这个问题。我也附上结果以供参考。在这里,我们尝试了已转换和未转换的 int8 tflite YOLOv5s 模型。 现在,如果你声称 YOLOv5 能够带来良好的效果,那么为什么不与我们分享经过验证的模型呢?请分享从导出、量化到转换的所有步骤,以及后期处理的步骤。这样我们就可以验证您的模型,并在我们这里复制您所遵循的步骤。 如果可以的话,也请与i.MX95共享您的基准测试和我的数据。 Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95 你好,@Bio_TICFSL! 我注意到恩智浦团队建议使用 --use-python-prototype 标志,但是我的中子变流器无法识别它。它是在 Windows 上支持的,还是只与 Linux eIQ 版本兼容? Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95 这对我来说也是一个问题。我使用过 Linux eIQ,但效果不佳。因此我跳过了它,尝试只通过目标 arg 转换模型。 Re: Neutron Converted YOLOv8n model is not giving proper output in i.MX95 您好@Bio_TICFSL, 由于时间已久,我仍在等待您的回复。我们被困在这里,我们也有一些紧迫感。请尽快回复。 谨致 Vatsal [i.MX95 NPU] YOLOv5n/v8n/v11n Neutron-converted Models Run but Return No Detections (Zero Output) 问题描述 我正在使用 Neutron 变流器在 i.MX95 NPU 上评估 YOLO 目标检测模型。 虽然 INT8 量化的 TFLite 模型在 Cortex-A55 CPU 上运行成功并能检测到物体,但编译后的 neutron.tflite 版本在卸载到 NPU 时,尽管执行推理时没有崩溃,却产生了零检测结果(空/无输出)。 环境及硬件设置   硬件: i.MX95 19x19 LPDDR5 EVK(A1 版本) 操作系统/内核: Linux 6.12.34-lts-next-gbe78e49cb433 #1 SMP PREEMPT (aarch64) NXP 工具链: MCU-SDK v25.09.00 + Linux 6.12.34_2.1.0 测试型号: YOLOv5nu、YOLOv8n、YOLOv11n(Ultralytics) 工作流程步骤和使用的命令 1. 量化(Ultralytics 导出) 模型导出为 INT8 全整数量化格式,分辨率为 320x320: yolo export model=yolov8n.pt format=tflite int8=True imgsz=320# (Repeated identically for yolov11n.pt and yolov5nu.pt)   状态:在CPU上运行完美。yolovXn_full_integer_quant.tflite 在 A55 内核上能够正确检测对象。 2. 中子汇编 TFLite 模型是使用 MCU_SDK_25.09.00+Linux_6.12.34_2.1.0 中的 Neutron 转换器为 i.MX95 NPU 编译的: ./neutron-converter --input yolov8n_full_integer_quant.tflite --target imx95 --output yolov8n_full_integer_quant_neutron.tflite   状态:无法在 NPU 上检测到对象。编译后的模型可以加载并运行推理,不会抛出语法或执行错误,但对于完全相同的测试图像,输出张量返回零检测结果。 观察到的症状和疑似根本原因   操作回退:变流器是否会针对特定的 YOLO 层(如自定义锚点、SiLU/Swin 激活或非最大值抑制)回退到 CPU? 量化缩放/不对称性:通过 Ultralytics 导出的 YOLO 模型通常使用不对称量化或具有 Neutron NPU 驱动程序可能误解的特定输出张量缩放。 输出张量格式:推理运行正常,这表明输入管道没有问题,但输出边界框/分数要么为空白,要么完全是垃圾值。 向恩智浦专家提问   中子变流器是否存在针对 Ultralytics YOLO 架构的已知限制或必需的优化标志? 在将 TFLite 模型传递给 Neutron 转换器之前,是否应该去除 NMS(非极大值抑制)层? i.MX95 Neutron SDK 是否需要对称量化(per_channel=True 或 False)才能正确解析输出层? 任何关于 i.MX95 NPU 的指导、参考脚本或 YOLO 部署说明都将不胜感激。        
記事全体を表示
i.MX6ULLのセカンダリブートがリセット後にハングする 私はeMMCを搭載したi.MX6ULLを持っており、AN13872ガイドのセクション13.2.2に従ってセカンダリブートをテストしようとしています。「セカンダリ ブートを使用したブート イメージの作成」 。 次のコマンドを使用してヘッダーを作成しました。 dd if=/dev/zero of=./header.bin bs=1K count=1 次に、 hexeditツールを使用して、オフセット0x208を0x00112233に変更し、 0x20Cを0に設定して、元の U-Boot がテスト目的でセカンダリ ブート イメージとして起動するSOにしました。 これは 16 進ダンプです: $ hexdump -C header.bin 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 00 00 00 00 00 00 00 00 33 22 11 00 00 00 00 00 |........3"......| 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 次に、ヘッダーをシステムの U-Boot と連結しました。 cat header.bin u-boot-tagged.imx > u-boot-primary-secondary.imx 結果のファイルを SCP 経由でボードにコピーしました。 最後に、i.MX6 内部から、次のコマンドを使用してイメージを eMMC にフラッシュしました。 root@imx6ull:~# dd if=./u-boot-primary-secondary.imx of=/dev/mmcblk1 bs=512 skip=1 seek=1 結果の 16 進ダンプは次のとおりです。 root@imx6ull:~# hexdump -C /dev/mmcblk1 -n 1088 00000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |................| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..| 00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 2a 4a 6c 07 00 00 80 00 |........*Jl.....| 000001c0 01 40 0c 03 42 9f 00 20 00 00 e2 af 00 00 00 00 |[email protected].. ........| 000001d0 41 c0 83 03 e0 ff 00 e0 00 00 3e 70 1a 00 00 00 |A.........>p....| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 00 00 00 00 00 00 00 00 33 22 11 00 00 00 00 00 |........3"......| 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 d1 00 20 40 00 00 80 87 00 00 00 00 2c f4 7f 87 |.. @........,...| 00000410 20 f4 7f 87 00 f4 7f 87 00 00 00 00 00 00 00 00 | ...............| 00000420 00 f0 7f 87 00 f0 09 00 00 00 00 00 d2 01 f0 40 |...............@| 00000430 cc 01 ec 04 02 0c 40 04 00 00 00 00 02 0c 40 68 |......@.......@h| 00000440 13.2.3節で説明したように、U-Bootからのセカンダリブートをテストするコマンドを実行すると、次のような結果が出ます: Hit any key to stop autoboot: 0 => mw.l 20D8044 40000000 => md.l 20D8044 1 020d8044: 40000000 ...@ => reset resetting ... しかし、この時点でシステムはハングします。 同じ U-Boot を 2 回連結し、それに応じてオフセット0x20Cの値を調整してみましたが、結果は変わりませんでした。これはこのテストの結果の 16 進ダンプです。 user@machine:~/linux-maker$ hexdump -C swu_singlecopy_rescue_imx6ull_emmc_20251128.sdcard -n 1072 00000000 fa b8 00 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |................| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..| 00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 4e 58 99 cc 00 00 00 03 |........NX......| 000001c0 e0 ff 0c 03 e0 ff 00 20 03 00 00 c0 03 00 00 03 |....... ........| 000001d0 e0 ff 83 03 e0 ff 00 e0 06 00 00 40 1f 00 00 00 |...........@....| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 00 00 00 00 00 00 00 00 33 22 11 00 00 20 00 00 |........3"... ..| 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 d1 00 20 40 00 00 80 87 00 00 00 00 2c f4 7f 87 |.. @........,...| 00000410 20 f4 7f 87 00 f4 7f 87 00 00 00 00 00 00 00 00 | ...............| 00000420 00 f0 7f 87 00 f0 09 00 00 00 00 00 d2 01 e8 40 |...............@| 00000430 user@machine:~/linux-maker$ hexdump -C swu_singlecopy_rescue_imx6ull_emmc_20251128.sdcard -n 1072 -s 0x400000 00400000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00400400 d1 00 20 40 00 00 80 87 00 00 00 00 2c f4 7f 87 |.. @........,...| 00400410 20 f4 7f 87 00 f4 7f 87 00 00 00 00 00 00 00 00 | ...............| 00400420 00 f0 7f 87 00 f0 09 00 00 00 00 00 d2 01 e8 40 |...............@| 00400430 以下の投稿を検索して読みました。 https://community.nxp.com/t5/i-MX-Processors/iMX6SX-Redundant-Boot/mp/715959 https://community.nxp.com/t5/i-MX-Security/Secondary-Redundant-boot-in-i-MX-6-7-8M-Family-of-Applica... https://community.nxp.com/t5/i-MX-Security/BootROM-HABv4-Redundant-boot-support-is-not-triggered-whe... しかし、解決策は見つかりませんでした。 何が間違っているのでしょうか? Re: Secondary Boot on i.MX6ULL Hangs After Reset さらにいくつかのテストを実行したところ、i.MX6ULL が mmcblk1boot0 をプライマリ ブート パーティションとして使用していることがわかりました。実際、このパーティションを破損させようとすると、システムは起動に失敗します。 パーティションの内容は次のとおりです。 root@imx6ull:~# hexdump -C /dev/mmcblk1boot0 -n 4096 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 d1 00 20 40 00 00 80 87 00 00 00 00 2c f4 7f 87 |.. @........,...| 00000410 20 f4 7f 87 00 f4 7f 87 00 00 00 00 00 00 00 00 | ...............| 00000420 00 f0 7f 87 00 f0 09 00 00 00 00 00 d2 01 e8 40 |...............@| 00000430 cc 01 e4 04 02 0c 40 68 ff ff ff ff 02 0c 40 6c |......@h......@l| 00000440 ff ff ff ff 02 0c 40 70 ff ff ff ff 02 0c 40 74 |......@p......@t| 00000450 ff ff ff ff 02 0c 40 78 ff ff ff ff 02 0c 40 7c |......@x......@|| 00000460 ff ff ff ff 02 0c 40 80 ff ff ff ff 02 0e 04 b4 |......@.........| 00000470 00 0c 00 00 02 0e 04 ac 00 00 00 00 02 0e 02 7c |...............|| 00000480 00 00 00 30 02 0e 02 50 00 00 00 30 02 0e 02 4c |...0...P...0...L| 00000490 00 00 00 30 02 0e 04 90 00 00 00 30 02 0e 02 88 |...0.......0....| この領域にセカンダリベクターテーブル (SVT) を書き込もうとすると、システムが起動しなくなります。SO、SVT はどこに記述すればよいのでしょうか? 私はいつも uuu を使用してシステムをフラッシュしてきました。特に、イメージ全体をフラッシュする必要がある場合は、次のようにします。 uuu -b emmc_all U-Boot のみを更新する必要がある場合は、次のようにします。 uuu -b emmc mmcblk1boot0 パーティションを作成して書き込むのは uuu だと思います。ブート手順の他の部分も変更されている可能性がありますか? Re: Secondary Boot on i.MX6ULL Hangs After Reset あなたの説明と投稿された画像に基づくと、eMMC ユーザー パーティションが破損していますが、システムは引き続き起動できます。これは、i.MX6ULL のセカンダリ ブートに eMMC ブート パーティション (boot1 または boot 2) を使用していることを示します。専用のブート パーティションが必要な場合は、準備したイメージをそこに書き込む必要があります。もちろん、eMMC ブート パーティションは十分な大きさである必要があります。あるいは、Linux の u-boot コマンドまたは mmc ツールを使用して、ブート パーティションをユーザー パーティションに切り替えることもできます。 こちらはセカンダリブート用のコレクションです。 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/iMX-secondary-boot-collection/ta-p/1916915 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8MM-SDCARD-Secondary-Boot-Demo/ta-p/1500011で Windows と Linux の両方で実行できるスクリプトがあり、セカンダリ ブート イメージの作成に役立ちます。 試してみましたが、とても良いです。 soc_name: imx6(imx6ファミリ全体)、imx8mq、imx8mm Re: Secondary Boot on i.MX6ULL Hangs After Reset 奇妙なことに気付きました。次のコマンドでプライマリ イメージの IVT を破損させようとすると、 sudo dd if=/dev/zero of=/dev/mmcblk1 bs=1 seek=1024 count=32 && sync‍‍‍‍‍‍‍‍‍‍ セカンダリ U-Boot がなくてもシステムは起動します。 私が持っている mmc パーティションは次のとおりです。 root@imx6ull:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mmcblk1 179:0 0 58.2G 0 disk |-mmcblk1p1 179:1 0 120M 0 part /boot `-mmcblk1p2 179:2 0 1000M 0 part / mmcblk1boot0 179:8 0 4M 1 disk mmcblk1boot1 179:16 0 4M 1 disk U-Boot バイナリも mmcblk1boot0 に書き込まれているようです。 システムが実際に mmcblk1boot0 に保存されている U-Boot を使用していて、そこに SIT とセカンダリ U-Boot を書き込む必要がある可能性はありますか? @Bio_TICFSL 、この点について明確にしていただけますか? Re: Secondary Boot on i.MX6ULL Hangs After Reset 16 進ダンプを見ると、オフセット 0x208 を 0x00112233 に変更し、0x20C を 0 に設定していることがわかりますが、firstSectorNumber フィールドが正しくない可能性があります。このフィールドは、セカンダリ イメージが始まるセクターを指す必要があります。 このテストでは、手順全体を検証するために、プライマリ U-Boot をセカンダリ U-Boot として使用しようとしていたため、 firstSectorNumber を0 に設定しました。 私の投稿の最後の 16 進ダンプでは、代わりに 2 つの異なる U-Boot イメージ (プライマリとセカンダリ) を使用して、より標準的なテストを実行しました。そのCASE、 firstSectorNumberは0x2000に設定されました。これは、セカンダリ U-Boot が実際に始まるオフセットに対応します: 0x2000 * 512 (つまり、ブロック サイズ) + 1024 (つまり、MBR サイズ) = 0x400400 、投稿したリンクで説明されているとおりですが、システムはリセット後もハングしたままになります。 何か見逃しているのでしょうか? Ps: あなたが投稿したこのコマンドは imx8 専用であり、imx6 には対応していないと思います。 mw.l 0x30390098 0x40000000 Re: Secondary Boot on i.MX6ULL Hangs After Reset Hello この問題は、セカンダリ イメージ テーブル (SIT) 構成に関係しているようです。eMMC を使用して i.MX6ULL の冗長ブートを実装する場合、SIT の firstSectorNumber フィールドをプライマリ ブート イメージのサイズに応じて正しく設定する必要があります。 適切なセカンダリブートの実装: 1. SIT に以下の重要な値があることを確認します。 - タグ = 0x00112233 (正しく設定されています) - firstSectorNumber = プライマリイメージのアラインサイズ/512バイト - すべての予約フィールドが適切に設定されていることを確認する 2. セカンダリ イメージが 0x1000 境界でプライマリ イメージの後に正しく配置されていることを確認します。 3.イメージをフラッシュした後、次のコマンドを使用して PERSIST_SECONDARY_BOOT フラグを設定します。 「」 mw.l 0x30390098 0x40000000 「」 16 進ダンプを見ると、オフセット 0x208 を 0x00112233 に変更し、0x20C を 0 に設定していることがわかりますが、firstSectorNumber フィールドが正しくない可能性があります。このフィールドは、セカンダリ イメージが始まるセクターを指す必要があります。 プライマリ U-Boot イメージのサイズ (適切に調整) に基づいて firstSectorNumber を再計算し、セカンダリ ブート イメージが正しいオフセットに配置されていることを確認してください。セカンダリ イメージは、プライマリ イメージが終了した後のセクター境界から開始する必要があります。 冗長ブートの実装に関する詳細は、次のコミュニティドキュメントを参照してください。 https://community.nxp.com/t5/i-MX-Security/Secondary-Redundant-boot-in-i-MX-6-7-8M-Family-of-Application/ta-p/1117103 よろしくお願いします。 Re: Secondary Boot on i.MX6ULL Hangs After Reset   前述したように、セカンダリ ブートは使用パーティションだけでなくブート パーティションでも機能する必要があります。   eMMC ブート パーティションが十分な大きさの場合は、次の 2 つのコマンドを試して、セカンダリ ブートの flash.bin (flash_secondary_boot.bin) をブート パーティションに書き込むことができます。   uuu emmc uuu emmc [flash_secondary_boot.bin] 注: ここでのflash.binは通常使用するプライマリブートイメージのみです。uuuヘルプを確認してください。 uuu [-d -m -v -bmap -no-bmap] -b[run] arg... Run Built-in scripts emmc burn boot loader to eMMC boot partition arg0: _flash.bin bootloader arg1: _image[Optional] image burn to emmc, default is the same as bootloader   前に提供したリンクのスクリプトを使用して、セカンダリ ブート イメージを作成CAN。   プライマリ イメージを完全にゼロで構成されたファイルに置き換えることで、プライマリ イメージの破損をシミュレートCANできます。   https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8MM-SDCARD-Secondary-Boot-Demo/ta-p/ ...   https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/iMX-secondary-boot-collection/ta-p/19169 ... Re: Secondary Boot on i.MX6ULL Hangs After Reset @kawateb265 さんのご回答のおかげで、ようやく問題を解決できました。imx6 は boot0 パーティションから起動していました。ユーザー パーティションから起動するには、u-boot で次のコマンドを実行する必要がありました。 => mmc partconf 1 1 7 0 EXT_CSD[179], PARTITION_CONFIG: BOOT_ACK: 0x1 BOOT_PARTITION_ENABLE: 0x7 PARTITION_ACCESS: 0x0 ここで '0x7' はユーザー パーティションを有効にします。説明は次のとおりです: https://docs.u-boot.org/en/v2025.01/usage/cmd/mmc.html#:~:text=0x7,boot この変更を適用すると、「md.l 20D8044 1」によるテストは正常に動作し、リセット コマンド後にセカンダリ U-Boot が起動します。 Re: Secondary Boot on i.MX6ULL Hangs After Reset ご説明ありがとうございます。 私の場合、前のメッセージの lsblk 出力に示されているように、Yocto が自動的に作成したと思われる 2 つのブート パーティション、「mmcblk1boot0」と「mmcblk1boot1」があります。 スクリプトによって生成されたバイナリを mmcblk1boot0 に配置する必要がありますか? もしSOなら、mmcblk1boot1 の目的は何ですか? Re: Secondary Boot on i.MX6ULL Hangs After Reset コレクション全体を読むと、i.MX8QXP eMMC セカンダリ ブートの 2 つのブート パーティションが相互にバックアップされていることがわかります。ただし、i.MX8MM と iMX6 のブート パーティションは相互にバックアップされておらず、一方が独立しています。 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/iMX-secondary-boot-collection/ta-p/1916915 https://community.nxp.com/t5/NXP-Tech-Blog/i-MX8QXP-eMMC-セカンダリブート/ba-p/1257704#M45
記事全体を表示
How to use a GPIO(libgpiod) with gpioget/gpioset, on i.MX8Q as an example difference between gpioget and "cat /sys/class/gpio" in GPIO control: gpioget : This is a command-line utility provided by the  libgpiod  library. It is designed to interact with GPIO lines through the modern Linux GPIO character device interface ( /dev/gpiochipN ). /sys/class/gpio : This refers to the legacy sysfs interface for GPIO control in Linux. While widely used in the past, this interface has been officially deprecated in favor of the  libgpiod  character device interface since Linux kernel version 6.0 and later. Below is an example of libgpiod tested on i.MX8Q-MEK, L6.12.3 BSP. Device tree settings: We use GPIO1-05 and GPIO1-06 in this example. can put GPIO pinctrls in a specific group like “gpio_test”, or under certain driver like “gpio-keys” gpio_test: gpio-test { pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_gpio_test_default>; pinctrl-1 = <&pinctrl_gpio_test_sleep>; status = "okay"; }; gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_gpio_example_default>; pinctrl-1 = <&pinctrl_gpio_example_sleep>; key_wakeup2{ label = "wakeup_key"; gpios = <&lsio_gpio2 1 GPIO_ACTIVE_LOW>; linux,code = ; wakeup-source; }; pinctrl_gpio_test_default: gpiotestgrp_default { fsl,pins = < IMX8QM_LVDS0_I2C0_SDA_LSIO_GPIO1_IO07 0x06000061 IMX8QM_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x06000041 IMX8QM_MIPI_CSI1_I2C0_SCL_LSIO_GPIO2_IO00 0x06000021 IMX8QM_LVDS0_I2C0_SCL_LSIO_GPIO1_IO06 0x06000021 >; }; pinctrl_gpio_test_sleep: gpiotestgrp_sleep { fsl,pins = < IMX8QM_LVDS0_I2C0_SDA_LSIO_GPIO1_IO07 0x07800061 IMX8QM_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x07800041 IMX8QM_MIPI_CSI1_I2C0_SCL_LSIO_GPIO2_IO00 0x07800021 IMX8QM_LVDS0_I2C0_SCL_LSIO_GPIO1_IO06 0x07800021 >; }; pinctrl_gpio_example_default: gpioexamplegrp_default { fsl,pins = < IMX8QM_LVDS0_GPIO01_LSIO_GPIO1_IO05 0x06000021 IMX8QM_MIPI_CSI1_I2C0_SDA_LSIO_GPIO2_IO01 0x06000021 >; }; pinctrl_gpio_example_sleep: gpioexamplegrp_sleep { fsl,pins = < IMX8QM_LVDS0_GPIO01_LSIO_GPIO1_IO05 0x07800021 IMX8QM_MIPI_CSI1_I2C0_SDA_LSIO_GPIO2_IO01 0x07800021 >; }; Kernel commands to test GPIO function: gpiodetect and gpioinfo command: root@imx8qmmek:~# gpiodetect gpiochip0 [5d080000.gpio] (32 lines) gpiochip1 [5d090000.gpio] (32 lines) gpiochip2 [5d0a0000.gpio] (32 lines) gpiochip3 [5d0b0000.gpio] (32 lines) gpiochip4 [5d0c0000.gpio] (32 lines) gpiochip5 [5d0d0000.gpio] (32 lines) gpiochip6 [5d0e0000.gpio] (32 lines) gpiochip7 [5d0f0000.gpio] (32 lines) root@imx8qmmek:~# gpioinfo -c 1 gpiochip1 - 32 lines: line 0: unnamed input line 1: unnamed input line 2: unnamed input line 3: unnamed input line 4: unnamed input line 5: unnamed input line 6: unnamed output line 7: unnamed output line 8: unnamed input line 9: unnamed input line 10: unnamed input line 11: unnamed input line 12: unnamed input line 13: unnamed output consumer=regulator-pcie line 14: unnamed input line 15: unnamed input line 16: unnamed input line 17: unnamed input line 18: unnamed input line 19: unnamed input line 20: unnamed input line 21: unnamed input line 22: unnamed input line 23: unnamed input line 24: unnamed input line 25: unnamed input line 26: unnamed input line 27: unnamed input line 28: unnamed input line 29: unnamed input line 30: unnamed input line 31: unnamed input use cat /sys/kernel/debug/gpio to show current GPIO settings before GPIO1-05 and GPIO1-06 are set: root@imx8qmmek:~# cat /sys/kernel/debug/gpio gpiochip0: GPIOs 512-543, parent: platform/5d080000.gpio, 5d080000.gpio: gpio-526 ( |scl ) out lo gpio-527 ( |sda ) in lo gpiochip1: GPIOs 544-575, parent: platform/5d090000.gpio, 5d090000.gpio: gpio-557 ( |regulator-pcie ) out hi gpiochip2: GPIOs 576-607, parent: platform/5d0a0000.gpio, 5d0a0000.gpio: gpio-577 ( |wakeup_key ) in hi ACTIVE LOW gpiochip3: GPIOs 608-639, parent: platform/5d0b0000.gpio, 5d0b0000.gpio: gpio-618 ( |spi1 CS0 ) out hi ACTIVE LOW gpiochip4: GPIOs 640-671, parent: platform/5d0c0000.gpio, 5d0c0000.gpio: gpio-641 ( |enable ) out hi ACTIVE LOW gpio-643 ( |regulator-usbotg1-vb) out lo gpio-647 ( |usdhc2-vmmc ) out hi gpio-667 ( |enable ) out lo ACTIVE LOW gpio-668 ( |host-wake ) in hi ACTIVE LOW gpio-669 ( |PCIe reset ) out hi ACTIVE LOW gpiochip5: GPIOs 672-703, parent: platform/5d0d0000.gpio, 5d0d0000.gpio: gpio-673 ( |mux ) out hi gpio-693 ( |wp ) in lo gpio-694 ( |cd ) in lo ACTIVE LOW gpiochip6: GPIOs 704-735, parent: platform/5d0e0000.gpio, 5d0e0000.gpio: gpiochip7: GPIOs 736-767, parent: platform/5d0f0000.gpio, 5d0f0000.gpio: use gpioset command to set GPIO output, can also change GPIO direction(input → output) #set gpiochip1-5 and 1-6 root@imx8qmmek:~# gpioset -c gpiochip1 6=1 & [1] 700 root@imx8qmmek:~# gpioset -c gpiochip1 5=1 & [2] 702 check the changes from the commands above with cat /sys/kernel/debug/gpio and gpioinfo -c 1 : root@imx8qmmek:~# cat /sys/kernel/debug/gpio gpiochip0: GPIOs 512-543, parent: platform/5d080000.gpio, 5d080000.gpio: gpio-526 ( |scl ) out lo gpio-527 ( |sda ) in lo gpiochip1: GPIOs 544-575, parent: platform/5d090000.gpio, 5d090000.gpio: gpio-549 ( |gpioset ) out hi gpio-550 ( |gpioset ) out hi gpio-557 ( |regulator-pcie ) out hi gpiochip2: GPIOs 576-607, parent: platform/5d0a0000.gpio, 5d0a0000.gpio: gpio-577 ( |wakeup_key ) in hi ACTIVE LOW gpiochip3: GPIOs 608-639, parent: platform/5d0b0000.gpio, 5d0b0000.gpio: gpio-618 ( |spi1 CS0 ) out hi ACTIVE LOW gpiochip4: GPIOs 640-671, parent: platform/5d0c0000.gpio, 5d0c0000.gpio: gpio-641 ( |enable ) out hi ACTIVE LOW gpio-643 ( |regulator-usbotg1-vb) out lo gpio-647 ( |usdhc2-vmmc ) out hi gpio-667 ( |enable ) out lo ACTIVE LOW gpio-668 ( |host-wake ) in hi ACTIVE LOW gpio-669 ( |PCIe reset ) out hi ACTIVE LOW gpiochip5: GPIOs 672-703, parent: platform/5d0d0000.gpio, 5d0d0000.gpio: gpio-673 ( |mux ) out hi gpio-693 ( |wp ) in lo gpio-694 ( |cd ) in lo ACTIVE LOW gpiochip6: GPIOs 704-735, parent: platform/5d0e0000.gpio, 5d0e0000.gpio: gpiochip7: GPIOs 736-767, parent: platform/5d0f0000.gpio, 5d0f0000.gpio: root@imx8qmmek:~# gpioinfo -c 1 gpiochip1 - 32 lines: line 0: unnamed input line 1: unnamed input line 2: unnamed input line 3: unnamed input line 4: unnamed input line 5: unnamed output consumer=gpioset line 6: unnamed output consumer=gpioset line 7: unnamed output line 8: unnamed input line 9: unnamed input line 10: unnamed input line 11: unnamed input line 12: unnamed input line 13: unnamed output consumer=regulator-pcie   How to enable legacy GPIO SYSFS(default disabled on L6 kernel and above) refer to the comment of this commit: https://github.com/nxp-imx/linux-imx/commit/3b4feb21158f873269ff3fbe2fe8d23a88d64b24 commit 3b4feb21158f873269ff3fbe2fe8d23a88d64b24 Author: Linus Walleij Date: Tue Nov 10 15:27:24 2020 +0100 gpio: sysfs: Enforce character device If users select sysfs support they get the character device as well so that end-users cannot complain that they "only have sysfs on my system". They should have the character device at all times. If someone is in so dire need of stripping out the character device while still enabling the sysfs ABI they can very well patch the kernel. Also only show this obsolete option to expert users. Signed-off-by: Linus Walleij Link: <> diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 5d4de5cd6759..4dd566f7ea39 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -59,8 +59,9 @@ config DEBUG_GPIO that are most common when setting up new platforms or boards. config GPIO_SYSFS - bool "/sys/class/gpio/... (sysfs interface)" + bool "/sys/class/gpio/... (sysfs interface)" if EXPERT depends on SYSFS + select GPIO_CDEV # We need to encourage the new ABI help Say Y here to add the legacy sysfs interface for GPIOs. To enable GPIO_SYSFS, from the patch. The best way is CONFIG_EXPERT = y, then enable CONFIG_GPIO_SYSFS=Y. not need to revert the patch. SYSFS, as legacy interface for GPIO control in Linux. While widely used in the past, this interface has been officially deprecated in favor of the libgpiod character device interface since Linux kernel version 6.0 and later. i.MX Processors
記事全体を表示
咨询S32E板子使用方法 你好, 我有2块板子,型号分别是2023 NXP B.V.S32SE28X-DC和2022 NXP B.V.X-S32X-MB。请问下这2块板子的软硬件使用方法,能否提供相应的一些资料。 谢谢
記事全体を表示
S32Kの例 S32K1xx S32K144 例:S32K144 CMPラウンド・ロビンS32DS2.0  例:S32K144バックドア・アクセス・キー検証S32DS1.3  例:S32K144 FlexCAN0 RXFIFO DMA非SDK S32DS13  例:S32K144 PDB ADCトリガDMA ISR S32DS  例:S32K144 Flash RWシンプルS32DS  例:S32K144 DMAメモリ・コピー・テストS32DS  例:S32K144 EEEPROMの使用方法 例:S32K144 EEEPROMの使用方法 - 非SDK  例:S32K144 RTC VLPS  例:S32K144 WDOG RCM割り込み  例:S32K144 SRAM ECC注入  例 S32K144 RAM 保持 S32DS.R1 例:S32K144 I2CマスタMPL3115A2 S32DSR1_v3  例:S32K144 FlexCAN RXFIFO DMA S32DS.ARM.2018.R1  例:S32K144_printf_implementation - S32DS_1.0  例:FreeRTOS環境でのS32k144 UART printf/scanf - S32DS 例:S32K144 LPITタイマを使用した構成可能期間に対するSDK関数の呼び出し  例:S32K144 .noinitセクションの使用方法 例:S32K144 PDB ADC DMA S32DS.ARM.2018.R1   例:S32K144 RAMセルフテスト・シンプルS32DS 2018.R1  例:S32K144ポジショニング独立コード 例:S32K144 FlexCAN疑似ネットワーキングSTOPモードのテストS32DS.ARM.2.2  例:S32K144 LPIT DMA LPSPI  例:S32K144 FlexCAN TX/RX/エラーISRテストS32DS2.2  例:S32K144 FlexIOアイドル検出S32DS2.2 S32K146 S32K146 Set_whole_FlexRAM-as_RAM S32DS.ARM.2.2の例 S32K148 例:S32K148 PDB0-PDB1リングS32DS3.4 RTM4.0.3  例:S32K148 PDB0-PDB1 ring DMA S32DS3.4 RTM4.0.3  例:S32K148 GPIO割り込み  S32K116 例:S32K116 WDOG高速テスト  例:S32K116 LPUART LINスレーブTXRX ISR S32DS.ARM.2.2  例 S32K116 FlexCAN PN STOP S32DS.ARM.2.2 例:S32K116 FlexCAN VLPRテストS32DS.ARM.2.2 S32K118 例 S32K118-SRAM-keep_data_over_SW_reset v0_1 S32DS.ARM.2.2 S32K3XXシリーズ S32K344 例:S32K344 PIT BTCU ADC DMA DS3.4 RTD100   例:S32K344 FlexCAN_Ip TX/RX/EnhanceRXFIFOテストS32DS3.4 RTD200     例Siul2_Port_Ip_Example_S32K344_ITCM_DTCM S32DS3.4RTD300   例:S32K358 FlexCAN TXRX ISR S32DS35 RTD400/500     
記事全体を表示
[S32K324 / 定制板] HSE 固件已安装 (0x4039C028=1) 但初始化失败 (0x4038C107=0) 大家好, 我正在寻求有关 S32K324 定制板上 HSE 固件初始化无法完成的问题的建议。 1. 开发环境 MCU:S32K324(定制板) HSE固件:s32k3x4_hse_fw_1.5.0_2.55.0_pb250130.bin.pink 调试器:S32DS + T32 (Trace32) 2. 进度和状态登记册 已成功在 UTEST 区域 (0x1B000000) 中编程 HSE FW 使用标志。 已将粉色图像二进制文件下载到闪存中。 执行上电复位(POR)后,状态寄存器如下: 0x4039C028 (HSE GPR): 0x01 (安装已确认) 0x4038C107 (HSE_STATUS_INIT_OK): 0x00 (启动过程中停止) 3. 问题 我想请教各位专家以下问题: 我首先应该检查什么? 由于安装成功但初始化失败,是否有任何特定的寄存器(例如,故障状态)或硬件信号需要检查以找出确切的原因? 自定义板环境是否会影响初始化失败? 由于我使用的是定制板,我怀疑硬件差异(例如,初始晶振频率)或主核心(M7)的早期时钟(PLL)配置代码可能会干扰 HSE 启动序列。如果这是一个已知问题,能否指导我推荐的启动顺序(例如,在进行任何时钟设置之前轮询 INIT_OK 标志)或可能的解决方案? 任何线索都将对我们大有帮助。感谢您的支持! Re: [S32K324 / Custom Board] HSE FW Installed (0x4039C028=1) but Init Failed (0x4038C107=0) 您好, 非常感谢您提供的清晰指导。 首先,我使用演示应用程序进行固件安装,然后在系统启动状态下转储 MU 和 HSE GPR 寄存器值。如果这些注册地址有任何错误,请告知我。 结果如下: 1. MU0 寄存器(基地址:0x4038C000)     2. HSE GPR 寄存器(基地址:0x4039C000)   请您审核一下这些数值好吗?我非常希望您能提供专业意见,帮我判断这些是否表明存在具体的错误原因,例如时钟配置冲突或固件认证失败。 再次感谢您的时间和支持! Re: [S32K324 / Custom Board] HSE FW Installed (0x4039C028=1) but Init Failed (0x4038C107=0) 请问您能否提供以下信息? MU寄存器、FSR、GSR等: HSE GPR3: Re: [S32K324 / Custom Board] HSE FW Installed (0x4039C028=1) but Init Failed (0x4038C107=0) 谢谢。但我需要看到 HSE 核心处于 WFI 状态时的屏幕截图,而不是 RESET 后立即显示的屏幕截图。
記事全体を表示
使用 Jlink-Segger 脚本下载 HSE 固件 你好 我需要将 FW 下载到 S32k310 中 目前,我使用的是移植到 s32k310 上的恩智浦演示程序 HSE_FW_INSTALL。 我注意到 Trace32 练习脚本可用于此目的。 有可能为此创建一个 Segger Jlink 脚本吗? 需要采取哪些步骤? 我需要一个更快的批量生产流程。 顺祝商祺! 法比奥 Re: Download HSE Firmware using a Jlink-Segger Script 目前,我们没有使用SEGGER J-Link安装HSE固件的现成解决方案或参考流程。 可用且经过验证的方法有 TRACE32 Practice 脚本(官方支持用于此目的)和 HSE Demo 应用程序(独立于调试器,可以移植并用于执行安装)。 如果您计划使用J-Link,则需要根据通用HSE安装顺序(UTEST标志编程、固件映像下载、RESET)自行开发自定义脚本解决方案,因为恩智浦目前不为该用例提供专用的J-Link脚本。 有关 SEGGER 的具体指导,请参阅其文档或联系其支持人员: https://www.segger.com/support/。
記事全体を表示
只有 VDD(INTF)存在时 TDA8035 的行为,没有 VDDP 供电 我想知道 TDA8035 在下列情况下的表现: VDD(INTF)=3.3V VDDP= 0V(未通电) 看来 TDA8035 处于 RESET 模式但我不确定...你能确认一下吗? 这种情况是否可以持续很长时间(> 数小时)? 在这种情况下,VDD(INTF)消耗量是多少? 顺祝商祺! 顺祝商祺! 西尔万 接触式智能卡读卡器芯片 Re: TDA8035 behaviour when only VDD(INTF)is present, not powered VDDP 你好@sylvainbouriot 在 VDD (INTF) = 3.3V 和 VDDP = 0V 的情况下开机时: TDA8035 将保持重置状态,不会尝试启动智能卡。 允许这种状态持续较长时间而不会损坏芯片或导致异常行为。 当 VDDP = 0 且芯片处于 RESET/掉电模式时: VDD (INTF) 的典型电流非常小,通常在几微安到几十微安之间。目前的消耗量主要用于数字控股。 Re: TDA8035 behaviour when only VDD(INTF)is present, not powered VDDP 谢谢你,Kaily,非常准确的回答。 当 TDA8035 处于运行模式时,VDD (INTF) = 3.3 V 时 VDD (INTF) 的近似功耗是多少? 顺祝商祺! 西尔万 Re: TDA8035 behaviour when only VDD(INTF)is present, not powered VDDP VDDP = 3.3V 或 5V ...
記事全体を表示
[过滤器:垃圾邮件] evelynteddy 的帖子正文与 " *telegram* " 相符,板 " imx-processors "。 [过滤器:垃圾邮件] evelynteddy 的帖子正文与 " *telegram* " 相符,板 " imx-processors "。 帖子主题:回复:IMX7ULPEVK-等待根设备 /dev/mmcblk0p2... 职位机构: 如何从骗子手中找回丢失或被骗的加密货币,请访问 OPTIMISTIC HACKER GAIUS。 上周我的加密货币被骗后,我感到很无助,不知道该怎么办。我与乐观黑客盖乌斯取得了联系,他一直都很专业,有良好的沟通,并设定了合理的期望值。他细心地处理问题,经常提供最新信息,并描述了每一个步骤。通过坚持不懈的努力和专业技术,我被盗的加密货币被找到并追回。我吸取了重要的网络安全教训,并通过这次遭遇恢复了信心。我感谢你们在这段艰难时期给予我的帮助和指导。强烈建议 网站:optimistichackargaius.co m 电子邮件:support @ optimistichackargaius.com。 WhatsApp number:+44 737 674 0569 电报:t.me /OPTIMISTICHACKERGAIUSS 正文"电报" 匹配的过滤模式"*telegram*" 。 用户[id=259418,login=evelynteddy]的发帖因以下最终用户面临的错误而被拒绝: 信息正文中包含 Telegram,这在本社区是不允许的。请在发送您的帖子前删除这些内容。
記事全体を表示
KW45 FlexCAN 可以触发接收中断并接收自己发送的消息 我正在调试 KW45 芯片的 FlexCan 驱动程序,发现当未配置接收过滤器掩码时,FlexCan 模块可以触发信号自己的接收中断并接收自己发送的消息。这种行为正常吗?如果是,根本原因是什么?例如,修改 SDK 中的flexcan_interrupt_transfer代码,如附件所示。 uart log : ********* FLEXCAN 中断示例 ********* 报文格式: 信息缓冲区 0 用于 Rx。 信息缓冲区 1 用于 Tx。 中断模式:启用 运行模式:TX 和 RX --> 正常 ********************************************* 请选择本地节点 A 或 B: 注:节点 B 应先启动。 节点:A 按任意键触发单发传输 Rx MB ID:0x321,Rx MB 数据:0x0,时间戳:60127 按任意键触发下一次传输! Rx MB ID:0x321,Rx MB 数据:0x1,时间戳:3624 按任意键触发下一次传输! Rx MB ID:0x321,Rx MB 数据:0x2,时间戳:18344 按任意键触发信号下一次传输! Rx MB ID:0x321,Rx MB 数据:0x3,时间戳:56722 按任意键发送下一个触发信号! Rx MB ID:0x321,Rx MB 数据:0x4,时间戳:55297 按任意键触发下一次传输! Rx MB ID:0x321,Rx MB 数据:0x5,时间戳:53656 按任意键触发下一次传输! Rx MB ID:0x321,Rx MB 数据:0x6,时间戳:30470 按任意键触发下一次传输! Rx MB ID:0x321,Rx MB 数据:0x7,时间戳:22438 按任意键触发下一次传输! Rx MB ID:0x321,Rx MB 数据:0x8,时间戳:1009 按任意键触发下一次传输! Re: The KW45 FlexCAN can trigger a receive interrupt and receive the messages sent by itself 你好,我已经解决了问题,需要设置:   flexcanConfig.disableSelfReception = TRUE;
記事全体を表示
S32N55: RTD API 可禁用流闸门 队员们好 根据 S32N55 参考手册,必须先禁用 Stream Gate 实例,然后才能在 1588 计时器中更改 TMROFF_H/L。 请问目前是否有禁用 RTD 中流门功能的 API? BR, Bridget RTD Re: S32N55: RTD API to disable the Stream Gate 您好, ,我将再次查看用户手册并向您确认。 Re: S32N55: RTD API to disable the Stream Gate 你好@Bridget 根据 S32N_RTD_R21-11_1.8.0_CD07 的用户手册,要启用/禁用流闸门,可以在配置工具(EB Tresos)上进行设置: 设置 EthCtrlConfigEnableStreamGating = FALSE Re: S32N55: RTD API to disable the Stream Gate HiCuong、 在某些情况下,例如在 gPTP 同步期间,可能需要在运行时更新 TMROFF_H/L 的值。根据 S32N55 参考手册,必须先禁用 Stream Gate 实例,然后才能在 1588 计时器中修改 TMROFF_H/L。 在这种情况下,我认为需要一个 API 来禁用/启用流门功能。您提到的 EB 配置似乎无法处理这种情况。 请问 RTD 目前是否有禁用/启用流闸门功能的 API? BR, Bridget
記事全体を表示
S32E288-975EVB 官方 DIO LED 示例失败 您好, ,我正试图将 S32E288-975EVB 与 S32 调试探针配合使用。我已经逐步遵循了基本的用户设置(S32E288-975EVB 入门 | 恩智浦半导体),但它没有按描述运行。Dio_Example_s32E2XX_R52 是恩智浦的官方示例,用于在初始化过程中让 LED 闪烁 10 次...... Siul2 示例运行正常,但据我了解,它也使用低级访问。 到目前为止,我已将问题追溯到 Mcu_SetMode(McuModeSettingConf_0);函数。在调用 void Power_Ip_SetMode(const Power_Ip_ModeConfigType * ModeConfigPtr) 函数时,似乎有时会失败。我还可以注意到,只需注释掉 Mcu_SetMode 就能使 LED 正常闪烁,但一个基本的 LED 闪烁示例在开箱后无法正常工作,这似乎很愚蠢 Mcu_SetMode 函数的作用是什么?我怎样才能让示例使用该函数? 我还尝试浏览 .mex->Peripherals->MCAL->Mcu配置,但无法找到/理解任何重要内容。 Re: S32E288-975EVB official DIO LED example fails 谢谢您的答复。 问题仍然部分存在。我已经上传了我的示例,但我不太明白可能有什么不同,因为我没有更改官方示例的任何内容,跳线也都在默认位置。 我所做的是将所有 BOOT_CFG 引脚 RESET 为零位置。我注意到,我将以下引脚设置为 ON: BOOT_CFG[2] BOOT_CFG[3] BOOT_CFG[6] BOOT_CFG[28] BOOT_CFG[30] 这样做之后,我仍然运行了几次 DataAbort_Handler,但试了几次之后,它又神奇地开始工作了... 这可能是问题所在吗?我怎样才能确保示例现在能够可靠地运行?你能解释一下更改 BOOT_CFG 开关后会发生哪些变化吗? 另一个有趣的是,我安装了两个 RTD 软件包: S32ZE 实时驱动 AUTOSAR R21-11 版本 2.0.1 S32ZE2xx 实时驱动 AUTOSAR R21-11 版本 2.0.1 我相信我使用的是: S32Design Studio 3.6.4   Re: S32E288-975EVB official DIO LED example fails 你好,@HiddenSquid、 感谢您联系我们。关于您的问题,我可以顺利运行 Dio_Example_S32E2XX_R52 示例项目,我只是生成了代码,编译并调试了示例。我的设置如下 S32 设计工作室 3.6.1 S32Z/E Rtd 2.0.1 板的开关和跳线: 如果您仍有问题,可以使用社区的消息功能将您的项目发送给我,以便我检查其中的差异。 如果有帮助,请告诉我 Re: S32E288-975EVB official DIO LED example fails 更新: 一段时间后,我再次尝试运行该示例,但现在在没有任何更改的情况下,它又神奇地失效了(在启动过程中运行到 DataAbort_Handler),因此很可能不是 BOOT_CFG 的问题。 Re: S32E288-975EVB official DIO LED example fails 你好,@HiddenSquid、 感谢您提供的信息。我重复了你在帖子中提到的指南中的步骤,似乎有一些步骤,但是在 S32ZE RTD 2.0.1 中,在我使用旧安装进行测试之前,Dio 示例没有出现问题,现在我创建了一个新的 S32DS 实例并安装了 RTD 软件包,我发现了同样的问题,我需要向 S32DS 团队报告这个问题。目前我只能建议你遵循这些替代安装步骤,最好使用 S32DS 3.6.1,这是 S32ZE RTD 2.0.1 的测试版本: - 如果使用以前的 S32DS 实例,请先卸载所有 S32ZE RTD。 - 像之前一样下载更新网站文件,这里是SW32ZE_RTD_R21-11_2.0.1_D2505_DesignStudio_updatesite.zip。 - 打开 S32DS> 帮助> 安装新软件> 添加> 存档,选择下载的文件并按照安装步骤进行操作: 您可以在左下角看到进度: 系统会多次提示您接受部分安装内容,请全部接受: 完成后,您需要重新启动 S32DS。 现在按照之前的步骤导入示例。 请告诉我这是否改变了行为 谢谢! Re: S32E288-975EVB official DIO LED example fails 你好,@HiddenSquid、 感谢您的耐心等待,我收到了来自内部团队的最新消息,他们分享了以下解决方法: ” 根本原因是 S32 调试探针初始化脚本中 SMU 和 CE 的SRAM 初始化不正确,导致Mcu_SetMode函数启动其内核时出现硬故障。 简单的解决方法是在配置工具中修改 Mcu 模块配置,禁用 SMU 和 CE 内核。具体如下 Mcu → McuModuleConfiguration → McuModeSettingConf → McuPartitionConfiguration → McuPartition0Config、 并将三个已配置的SMU 和 CE 项更改为跳过,如下图中三个红框所示。 “ 我进行了测试,应用这些更改后,它就能正常工作了。 如果您需要更多支持,请告诉我。
記事全体を表示
高级声明式用户界面框架 是否有适用于 i.MX RT 跨界 MCU 的高级声明式用户界面框架?我希望能用 Swift 或 JavaScript 等高级语言编写代码,然后使用类似 SwiftUI 或 React 的东西创建用户界面。 Re: High level declarative UI framework 你好@MatthewRuzzi、 感谢您关注恩智浦 MIMXRT 系列! 恩智浦正式提供 GuiGuider 工具,以 LVGL 作为底层框架,帮助客户快速开发用户界面软件。此外,SDK 还包括 emWin 和 VGLite 的示例项目。虽然目前官方并不支持高级语言的实现,但我建议探索以下方法: 1.https://doc.qt.io/QtForMCUs/qtul-zephyr-mimx1060-evk.html https://www.embeddedartists.com/wp-content/uploads/2023/06/QtMCUs_ProgramDevelopment.pdf 2https://www.nxp.com/design/design-center/training/TIP-CREATE-USER-INTERFACE-QT 3.https://docs.microej.com/en/latest/GettingStarted/gettingStartedIMXRT1170.html 4.https://github.com/lvgl/lv_micropython 5.https://www.swift.org/blog/embedded-swift-examples/ 我希望这些资源能对您的发展有所启发。 致以最诚挚的问候, Gavin Re: High level declarative UI framework 目前是否有任何项目正在开展这方面的工作?我非常希望能够使用 Swift 或 JavaScript 这样的语言。有什么办法能让我今后更有可能这样做吗?我应该在哪些地方提交或投票表决功能请求,或者在哪些地方发布此信息?
記事全体を表示
MCX W71 Knowledge Hub MCX W71 无线微控制器采用 96 MHz Arm® Cortex®-M33 内核,搭配支持 Matter™、Thread®、Zigbee® 和 Bluetooth® 低功耗的多协议无线电子系统。独立的无线电子系统拥有专用内核和内存,可减轻主 CPU 的负担,使其专注于主要应用,并支持固件更新以适配未来的无线标准。MCX W71x 还通过集成的 EdgeLock® 安全飞地核心配置文件提供高级安全性,并将由 NXP 的 EdgeLock 2GO 云服务支持凭证共享。 MCX W71x 系列可作为单芯片解决方案支持工业和物联网设备,也可在托管架构中用作协处理器。   MCX W71 Block DiagramMCX W71 框图 文件 MCX W71 参考手册 MCX W71 数据表 Errata Secure Reference 手册** 认证 评估板 FRDM-MCXW71页面 FRDM-MCXW71 原理图 FRDM-MCXW71设计文件 FRDM-MCXW71 用户手册 FRDM-MCXW71 入门指南 应用笔记 AN14398:如何在 FRDM-MCXW71 上使用 RTC 本应用笔记介绍了如何在 BLE 演示中配置和使用 RTC 外设。 AN14416:在 FRDM-MCXW71 蓝牙低功耗连接协议栈上启用看门狗定时器模块 本应用笔记介绍了在连接协议栈演示中实现 WDOG 定时器的过程。 AN14396:MCX W71 将 OTAP 客户端服务集成到蓝牙低功耗外设设备中 本应用笔记提供了将空中编程客户端服务集成到 BLE 外设设备中的步骤和流程。 AN14391:MCX W71 负载牵引报告 本应用笔记介绍了负载牵引特性的测量方法和相关结果。 AN14394:使用 OTAP 工具为 MCX W71 创建固件更新镜像 本应用笔记提供了通过 OTAP 在 MCX W71 板上创建和升级镜像的步骤。  AN14389:MCXW71 蓝牙低功耗功耗分析 本应用笔记提供了有关 MCXW71 无线微控制器的功耗、硬件设计以及低功耗运行优化的信息。  AN14387:MCXW71 电源管理硬件 本应用笔记介绍了 MCXW71 微控制器中专门用于电源管理的不同模块的使用方法。 AN14399:MCXW71 针对 802.15.4 应用的连接测试本应用笔记介绍了如何使用连接测试工具执行 MCXW71 802.15.4 射频性能测试。 AN14374:用于蓝牙低功耗和 IEEE 802.15.4 应用的 FRDM-MCXW71 射频系统评估报告 本应用笔记提供了 FRDM-MCXW71 板在 BLE(2FSK 调制)和 IEEE 802.15.4(OQPSK 调制)应用中的射频评估测试结果,还介绍了可用于执行测试的设置和工具。  AN14427:MCXW71 在线编程工具 本应用笔记提供了将 MCXW71 微控制器引导至 ISP 模式并建立各种串行连接以与微控制器通信的步骤。 AN14397:量产期间通过串行线调试为应用程序和无线电固件编程 MCXW71 闪存本应用笔记介绍了在量产中通过 SWD 编写、烧录和编程所有必要设置的步骤。 Zigbee 协议 Zigbee 3.0 入门:本应用笔记为开发你自己的 Zigbee 3.0 设备固件提供了最佳起点指导。 Zigbee 3.0 基础设备模板:本应用笔记提供了示例应用程序,以演示采用恩智浦 DK006 Zigbee 3.0 微控制器的 Zigbee 3.0 网络中基础设备的特性和操作。 Zigbee 3.0 设备开发:本应用笔记介绍了如何以基础设备模板终端设备应用程序为起点开发 Zigbee 3.0 开关传感器。本应用笔记中描述的开关传感器基于 Zigbee 照明和占用(ZLO)设备规范中的 Zigbee 设备类型。 Zigbee 3.0 灯泡:本应用笔记为采用 NXP DK006 无线微控制器的 Zigbee 3.0 网络中的灯泡提供了示例应用程序。 Zigbee 3.0 物联网控制桥:本指南提供了允许用户使用图形用户界面(GUI)连接到控制桥的信息,该界面模拟主机来操作 Zigbee 网络。它还描述了用于与控制桥接口的串行协议,以及所有相关命令和响应的有效负载。 Zigbee 3.0 绿色功率设备:本应用笔记为开发你自己的 Zigbee 3.0 设备固件提供了最佳起点指导。 Zigbee 3.0 传感器:本应用笔记为采用恩智浦 DK006 Zigbee 3.0 无线微控制器的 Zigbee 3.0 网络中的传感器提供了示例应用程序。 Zigbee 3.0 控制器和开关:本应用笔记为采用恩智浦 DK006 无线微控制器的 Zigbee 3.0 网络中的控制器和开关提供了示例应用程序。本应用笔记还包括 Zigbee 3.0 网络中典型的 Zigbee 绿色功率 (GP) 能量收集开关的示例。 Zigbee 3.0 集群开发:本应用笔记介绍了如何以基础设备模板路由器设备应用程序为起点开发 Zigbee 3.0 窗帘设备。本应用笔记有两种使用方式: 作为使用最终步骤中创建的功能示例创建窗帘设备的起点。 作为创建 NXP ZCL 实现中未包含的设备和集群(包括制造商特定设备和集群)的指南。 支持 如果你有关于 MCX W71 的问题,请在我们的无线微控制器社区中提出你的问题!此处 有用链接 使用 KW45/KW47/MCXW71/MCXW72 的信号频率分析仪 (SFA) 模块进行时钟测量 - NXP 社区:该社区提供了如何使用信号频率分析仪的步骤 首次正确构建 KW45(汽车)或 K32W1/MCXW71(物联网 / 工业)PCB 的最佳方法 - NXP 社区:在该社区中提供了使用 KW45 或 K32W148 和 MCXW71 构建 PCB 的重要链接,以及所有与无线电性能、低功耗和无线电认证 (CE/FCC/ICC) 相关的内容。 如何在 Kinetis 系列产品上使用 HCI_bb 并进入 DTM 模式:本文分为两部分: 如何将HCI_bb二进制文件烧录到Kinetis产品中。 使用 R&S CMW270 进行射频测量 BLE HCI 应用程序设置发射机/接收机测试命令:本文提供了相关步骤,展示用户如何向设备发送串行命令。 Bluetooth LE HCI 黑盒快速入门指南:本文介绍了一个简单流程,能让用户通过串行命令控制无线电。 培训 MCX W71培训,安全MCU用于Matter、Zigbee、BLE MCX W系列培训 - NXP社区 设备 无线设备:本文提供了有助于项目开发的设备链接。 开发工具 NXP MCUXpresso:MCUXpresso IDE 提供高级编辑、编译和调试功能,此外还有针对微控制器的特定调试功能。支持与所有通用 Arm Cortex-M 的连接。 VSCode: MCUXpresso for Visual Studio Code (VS Code) 为嵌入式开发人员优化了代码编辑和开发体验。 Zephyr RTOs  NXP Application Code Hub:应用代码中心 (ACH) 存储库使工程师能够轻松找到由我们内部专家开发的微控制器软件示例、代码片段、应用软件包和演示。该平台提供了一种快速、简便且一致的方式来查找微控制器应用。 NXP SPSDK:是一个统一、可靠且易于使用的Python SDK库,适用于 NXP MCU 产品组合,为客户快速制作原型到生产部署提供坚实的基础。 NXP SEC工具: MCUXpresso安全配置工具是一款基于 GUI 的应用程序,用于简化在 NCP MCU 设备上生成和配置可启动的可执行文件。 NXP OTAP Tool: 是一款帮助用户对 NXP 开发板执行空中固件更新的应用程序。 ** 获取安全文件需要申请额外访问权限。 FRDM 培训 动手实践培训 协议:802.15.4 协议:BLE -> 连接性 协议:蓝牙 协议:Matter 协议:Thread 协议:Zigbee
記事全体を表示
S32K364:使用 EMIOS、BCTU 和 DMA 进行 ADC 转换 您好, 我正在尝试将 EMIOS0 ch 8 配置为触发扫描 ADC3 和 DMA 的 8 个通道的 BCTU,将转换结果移动到名为 ADC_3_RAW [] 的变量中。 转换似乎已经开始: 但该值不会通过 DMA 传输,也不会刷新 我正在使用这个 SDK: 每次使用 ConfigTool 生成代码时,我都需要修改以下代码: #define ADC_SAR_IP_PRESAMPLING_AVAILABLE ((1U)) 至 #define ADC_SAR_IP_PRESAMPLING_AVAILABLE ((0U)) 这正常吗? 项目附在这里。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 我检查了你的代码,你的配置和用法都不正确。 1。DMA 的触发信号来源是什么?我没有看到您在配置中配置了"Rm" 模块。 2。既然你在使用 BCTU 来产生 ADC 的触发信号,为什么不使用它提供的 FIFO?这与 DMA 的功能完全一致。 https://community.nxp.com/t5/S32K-Knowledge-Base/RTD400-LLD-K344-Center-Aligned-PWM-Trigger-ADC-BCTU/ta-p/2034211 3.此外,BCTU 驱动程序已经支持 DMA。 https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-PIT-BTCU-parallel-ADC-FIFO-DMA-DS3-5-RTD300/ta-p/1732444 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 我同意你的看法,我已经忘记了 Rm 模块,现在它出现了。 我很难理解 S32K364 的配置(只有 ADC3、ADC4、ADC5、ADC6 和 BCTU1),类似的配置使用 S32K324 在我的办公桌上也能正常工作 我想: - 触发信号 BCTU1 使用 EMIOS0 CH 8 扫描 ADC3 频道 - 触发信号 BCTU1 使用 EMIOS0 CH 9 扫描 ADC4 频道 而使用 DMA 会在变量 ADC_X_Raw[] 中产生结果。 我的配置工具设置是 EMIOS: RM: BCTU (红色字段不清楚): ADC: 附上项目。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 我很难理解 S32K364 的配置(只有 ADC3、ADC4、ADC5、ADC6 和 BCTU1),类似的配置使用 S32K324 在我的办公桌上也能正常工作 也请分享您在 S32K324 上的项目,我会抽时间帮您检查。 我们的团队目前工作过度繁忙,我需要更多时间来处理您的问题。请耐心等待。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 非常感谢您的帮助! 您可以在附件中找到使用 S32K324 的项目(运行正常)。 使用 trgmux 的 PIT 计时器触发信号扫描 ADC0 和 ADC1 通道的 BCTU。 变量ADC_0_Raw[] 和 ADC_1_Raw[] 的DMA 传输转换结果。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 我们没有 S32K36x 评估版,因此无法直接测试您的代码。 不过,我也发现了一些问题: 这里,关于 Adc 目标掩码: 对于 ADC0,应将其设置为 0b001。 对于 ADC1,应将其设置为 0b010。 如果你需要同时触发信号 ADC0 和 ADC1,那么你应该将其设置为 0b011,依此类推。 在您的项目中,您使用的是 ADC3 和 ADC4,因此相应值应设置为 0b0100 和 0b1000。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 此外,"Adc index" 也是错误的。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 我已经解决了这个问题。 随函附上使用ADC3、ADC4和ADC5转换27个模拟通道的项目。   问题在于,要初始化 ADC3,必须在实例中使用 0 调用 init 函数:   /* 启动 ADC3*/ Adc_Sar_Ip_Init(0,&AdcHwUnit_0);   在 ConfigTool 中,要初始化 BCTU 以触发信号 ADC3,必须设置 Adc 目标掩码,如下所示: ADC4 和 ADC5 也是如此。 关于 ADC6,ConfigTool 没有生成初始化结构,手动输入该结构后,ADC6 仍然无法工作... 幸运的是,在我的应用中无法使用 ADC6... 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 好 感谢您的帮助! 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 这是完全错误的! 在您之前提供的示例程序"ADC_S32K324.rar" 中、使用 ADC0 和 ADC1,BCTU 的"Adc Target Mask" 分别设置为"1" 和"2" 即0b0 和 0b10,分别对应 ADC0 和 ADC1。 您的初始化代码也对应于 ADC0 和 ADC1。 Adc_Sar_Ip_Init(ADCHWUNIT_0_BOARD_INITPERIPHERALS_INSTANCE,&AdcHwUnit_0_BOARD_InitPeripherals); Adc_Sar_Ip_Init(ADCHWUNIT_1_BOARD_INITPERIPHERALS_INSTANCE,&AdcHwUnit_1_BOARD_InitPeripherals);   adchwunit_0_board_initperipherals_instance = 0; adchwunit_1_board_initperipherals_instance = 1; ” 问题在于,要初始化 ADC3,必须在实例中使用 0 调用 init 函数:   /* 启动 ADC3*/ Adc_Sar_Ip_Init(0,&AdcHwUnit_0);   ” 这完全是错误的,我之前的回答是正确的。 应设置"Adc 目标掩码" = 0b100,即 adc3,然后调用"Adc_Sar_Ip_Init(3,&AdcHwUnit_0);" Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@Senlent、 我同意你的看法,我的解决方案虽然不明确,但很有效。 我提醒你,微控制器是 S32K364,只有下面的红色: 附上两份记录,一份是我的解决方案,一份是您的建议。 我的建议是它可以工作(矢量 ADC_3_Raw[]...ADC_5_Raw[] 的值是正确的)。 根据您的建议,执行将在HardFault_Handler中进行。 敬请期待,弗朗切斯科。 Re: S32K364: ADC conversions using EMIOS, BCTU and DMA 你好@francescovico 你的解决方案是正确的。 这是我的误解;我不知道 S32K36x 采用了不同的架构。
記事全体を表示
MCXW716C 在高温下运行 你好 我使用的是 #mcxw71,根据数据表,其工作温度范围为 -40 °C 至 +125 °C。我对无线电和 CAN PHY 都进行了测试,但无法在大约 85 °C 以上实现稳定运行。微控制器似乎进入保护模式,或以其他方式限制其功能。 我还注意到,在 SDK 应用程序接口中有向 NBU 发送内部温度的函数。 我的问题是:NBU 是否需要温度信息来进行热调节或维持系统正常运行? 一般来说,是否需要任何特定的程序(配置、校准、所需的 API 调用等)来确保 MCXW716C 在最高额定温度下正常运行? 提前感谢您的帮助。 开发板 Re: MCXW716C operation at high temperature 你好,希望你一切都好。 您使用的是 FRDM 板还是自定义板?您进行了哪些测试,观察到的行为是什么? 能否请您分享一下您所指的是哪些 SDK API?您是否正在研究一个具体的示例或应用? 致以最诚挚的问候, Ana Sofia。 Re: MCXW716C operation at high temperature 你好,@sofiaurueta、 我正在使用参考编号为 #MCXW716CMFTAT 的自定义板。我将解释我的测试和配置 我使用 MCXW716CMFTAT 为无线应用设计了 PCB。我已创建了软件,并使用名为"connectivity_test" 的示例程序中的逻辑来使用无线电协议。 我使用的是 SDK SDK_2.X_MCXW716CxxxA 版本 25.09.00。 两个董事会正在一起工作。我已经实施了所有模块。测试时,我使用了热风枪,温度为 80 °C。15 秒后,微控制器停止工作;它似乎被阻塞了,GPIO 被锁定,通信总线停止发送数据,30 秒后,温度下降后,微控制器恢复正常运行。 因此,我研究了监测温度的功能,以了解问题所在。我使用了 SDK 中 fwk_platform_sensors 文件中的 PLATFORM_StartTemperatureMonitor() 函数。 我的目标是知道微控制器堵塞的确切温度,而令人惊讶的是,这解决了问题。现在,我可以在 +120 °C 的温度下进行测试,微控制器工作正常。我甚至尝试删除该功能,以确保问题是否与软件有关,结果问题又出现了。 您能给我更多的解释吗?使用该功能读取温度是否会将数据分发到不同的内核并调整某些参数? Re: MCXW716C operation at high temperature 你好 您能否确认使用 FRDM 板时是否也会出现这种行为?在未作任何修改的情况下运行 connectivity_test 示例时是否会出现问题,调用 PLATFORM_StartTemperatureMonitor 函数后问题是否会改变? Ana Sofia。
記事全体を表示
MIMXRT1180-EVK の EtherCAT デモ こんにちは、 UG10322 UG10322: ICEツールを使用したEtherCATのOOBEガイド | NXP Semiconductorsに記載されているEtherCATデモを試すために、MIMXRT1180-EVK評価ボードを使用しています。 i.MX RT1180 評価キット | NXP Semiconductorsから Ethercat 評価バイナリをダウンロードしました。 私はすべての手順を注意深く実行しました。上記のドキュメントに記載されている構成でバイナリを正常にフラッシュし、ICE ツールを起動できました。 ただし、GUI でネットワーク インターフェースを選択し、Ethercat を有効にしようとすると、「有効にできませんでした」というメッセージが表示されます。インターフェースをスキャンすると、「デバイスが見つかりません」と表示されます 私は Windows ノートPCを使用しており、USB 3-ギガビット イーサネット アダプターを使用して ETH0 と ETH4 にコネクテッドしていますが、それ以外は問題なく動作しています (他の作業にも使用しています)。 この問題を解決するためにご協力いただければ幸いです。 また、この EtherCat Eval バイナリ :goal_nxp_evkmimxrt1180_rtos_flash_boot.bin のソースを教えていただけますか?SDK をチェックしたところ、EtherCat の例がいくつか見つかりましたが、これらの例のいずれかが上記のバイナリに対応しているかどうかはわかりません。 よろしくお願いします。 よろしくお願いします。 PNC Re: EtherCAT demo on MIMXRT1180-EVK こんにちは@pnc お問い合わせいただきありがとうございます UG10332 の最初のリリースですでにいくつかの問題が見つかりました (更新する予定です) 同僚が作成した内部レポートを以下に掲載します。お役に立てれば幸いです。 5 ページのステップ 12 では、RT1180-EVK コンソールは USB_OTG1 ではなく MCU-Link USB である必要があります。また、Note の場合、EEPROM と呼ばれるセクションはないようです。 私の場合、セクション 5.4 のステップ 11 以降では EtherCAT インターフェースのフォント カラーは赤にならず、ステップ 15 以降でのみ赤に変わります。 24 ページの表 1 と表 2 では、表にリストされているマップされたオブジェクトが ICE ツールの実際の表示と一致していません。 私の側では、セクション 5.4 の手順 9 の前に、ホスト PC の IP アドレスを構成する必要があります。そうしないと、内部エラーが報告されます。 さらに問題が発生した場合や、関連する質問がある場合はお知らせください。 ではごきげんよう、 ディエゴ Re: EtherCAT demo on MIMXRT1180-EVK ちなみに、EtherCAST デモには特別なジャンパー設定が必要ですか?上記のドキュメントではこの点については何も言及されていません。 Re: EtherCAT demo on MIMXRT1180-EVK こんにちは、ディエゴ。 ご返信ありがとうございます。しかし、これらの問題はすでに解決済みですので、役に立ちませんでした。 とにかく、私は方針を変えました。つまり、事前にビルドされたイメージを使用する代わりに、AN14155 ユーザーガイド (i.MX RT1180 EtherCAT を BECKOFF TwinCAT3 および SSC ツール Rev. と共に使用) を使用して、SDK から ecat/digital_io の例をビルドして実行しようとしています。1.0) ここでも同じ問題に直面しています。例をビルド、フラッシュ、実行できます (CM33 と CM7 の両方)。digitial_ip.cのメインループにprintfを入れました。実際に実行されていることを確認します。 しかし、AN14155 のセクション 5.1.8 で行き詰まっています。TwinCAT を使用して EtherCAT デバイスのスキャンを実行すると、「I/O デバイスが見つかりません」と表示されます。イーサネット ケーブルを J28 と J32 の両方に接続してみました。 私は次のジャンパー設定を行いました: J63、J73、J72、J65 を 1-2 短絡位置 (デフォルト位置ではない) に移動しました Ecat に他のジャンパー設定や他の HW 設定が必要かどうかはわかりません。これら以外のすべてのジャンパーはデフォルトのポジショニング(箱から出した時の状態)にあります。私が行った他の唯一のジャンパー変更は、Segger プローブ (JP5 を短絡) を使用するためでした。 ちなみに、ICE ツールの実行も試してみました。以前と同じ状況です。 何かご意見があれば教えていただけると幸いです よろしくお願いします。 よろしくお願いします。 PNC Re: EtherCAT demo on MIMXRT1180-EVK EVK ユーザー マニュアル UM12021 を注意深く読み直したところ、ジャンパーを間違えたようです。私が今持っているものは次のとおりです。 J63とJ65:デフォルトで2-3が短絡 J73とJ72: デフォルト以外の1-2ショート ただし、上記の変更を行った後でもまだ動作しません。 また、36 ページのこの行が関連しているかどうかはわかりません。「ECAT 信号と FLEXSPI2 信号間の多重化は、抵抗器の再構成によって実装されます。」デフォルトでは、FLEXSPI2 接続は有効になっています。 これについても何かする必要があるでしょうか?もしSOなら、何ですか? ちなみに、このEVKユーザーマニュアルは本当に読みにくいです。EVK で ECAT を動作させるためにユーザーが行う必要があることを、簡潔かつ明確に 1 か所にまとめておくべきだと思います。散らばった混乱を招く情報の代わりに、シンプルに「EVK で ECAT を有効にするには、これらのジャンパー設定を行ってください...」とだけ書かれています。 Re: EtherCAT demo on MIMXRT1180-EVK こんにちは、ディエゴ。 今朝すべてを再起動すると、デバイスのスキャンが機能し始めました。昨日の夕方にジャンパーに加えた変更が効果を発揮したようです。 しかし、デバイス1をスキャンすると、セクション5.1.9で説明した「ボックス1」が表示されません。SO、スレーブが検出されないようです。Wireshark でも EtherCAT に関連するトラフィックは表示されません。さらにデバッグ中ですが、何かヒントがあれば、ぜひ教えてください。
記事全体を表示