Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
S32K314/ETH/TJA1101 環境背景: 1. S32K314チップを使用した評価ボード 2. MCAL パッケージ「SW32K3_S32M27x_RTD_R21-11_6.0.0」の Ethernet ルーチンを使用し、K344 ルーチンを K314 に変更します。 3. S32DS 統合コードは、MCAL パッケージのメイン関数内のルーチン コードも使用します。 質問: サンプル コードに基づいてイーサネット データ ループバック機能を実装できないのはなぜですか? Ethernet MCALの設定を確認したところ、デフォルト設定はループバックモードになっていることがわかりました。私の理解では、CANのように、1フレームのデータを送信すると次のフレームを受信できるようになっているはずです。 その後、デバッグのためにコードを統合してコンパイルしました。whileループの前にイーサネットデータが送信されていました。ループが戻る際にデータが受信され、whileループが終了するはずでした。しかし、現状ではwhile (RxStatus.RxStatsPkts < 1U)という条件が常に満たされており、ループバックデータが受信されていません。 その他の説明: 1. 回路図に従って MCAL サンプル プログラム内のポートが対応するように変更しました。 2. TJA1101 からの車載イーサネット ツイストペア ケーブルに他のデバイスを接続していないため、外部と通信できません。 Re: S32K314/ETH/TJA1101 こんにちは@wei_zhoucq 、 クリスマス休暇のため返信が遅れたことをお詫び申し上げます。 私の意見では、問題は時計にあります。ループバック テストの場合でも、S32K3 の EMAC 用の適切なクロックが必要です。 1.RMII を使用する場合は、TJA1101B データシートの図 5. a. に示すように、S32K3 の TX_CLK (入力) にコネクテッドされた TJA1101 の REF_CLK (出力) を使用する必要があります。 2. Eth_43_GMAC_Init() を呼び出す前に外部クロックが存在している必要があります。 3. TJA1101B の正しいピンストラップが使用されていることを確認します (TJA1101B データシートの 第 6.10 章「ハードウェア構成」)。MII_MODE は「RMII モード (REF_CLK で 50 MHz 出力)」に設定すると思います。 4. また、S32K3 のその他のクロック設定が、S32K3 リファレンス マニュアル、Rev. 11 の「24.7.2 システム クロック構成」の章に記載されているクロック構成のいずれかと一致していることも確認します。 よろしくお願いいたします。 パベル
記事全体を表示
D1が赤く点灯しているため、S32K146EVB-Q144ボードをフラッシュできません 当初は正常に動作していた S32K146EVB-Q144 評価ボードを持っています。 Lin スタックを実装したデバッグ セッション中に、動作が停止しました。 コントローラをリセットすると、D1 の赤いライトが点灯し続け、他の 2 つの緑のライトも点灯したままになります。 USB ソースからの電源を選択するために、位置 2-3 の J10 と J107 を使用し、OpenSDA アプリのフラッシュ モードを選択するために、位置 2-3 の J104 を使用しました。 現在、私のコントローラは S32DS によってまったく検出されません。 症状はまったく同じであるように思われたので、以下の投稿に記載されている手順を試してみました。 Re: S32K144 D2 赤色 LED が常時点灯 - NXP コミュニティ ここで、P&E Kinetics Recovery Tool を使用して OpenSDA でプロセッサを停止できましたが、それでも新しいアプリケーションをフラッシュすることはできませんでした。 停止に成功しても再度点滅させることができず、赤色のライトが点灯したままになります。 コントローラはジャンパー J104 を調整することでブートローダーモードに入ることもでき、実際にブートローダーアプリをフラッシュすることもできました。しかし、どういうわけか私は再びフラッシュを書き込むことができず、サンプルの.srecをフラッシュしようとするとファイルでは、D2 は定期的に点滅し続けます (通常、正常に点滅すると 1 回点滅してからアプリの実行が開始されます)。 つまり、簡単に言うと: - コントローラがメインに到達できない、または継続的にリセットされる - コントローラはフラッシュに再度書き込むことができません (セキュリティ上の問題である可能性があります)。 私はデバッグ プローブを持っていないため、SEGGER-JLINK に関連するものを除き、上記の Thread で言及されているテクニックを試しました。私は PE Multilink Universal を持っていますが、フラッシュを回復/消去することはできません。 ボードの詳細は次のとおりです。 ボード名: S32K146EVB-Q144 MicroBootカーネルバージョン: 1.08 ブートローダーのバージョンは: 1.13 インストールされたアプリケーション: PEMicro EVB-S32K144 マスストレージ/デバッグアプリ アプリケーションのバージョン: 1.25 DUID は: 39A33939-91818199-37539805-F97AE678 EUID は: 4141A238-1BDB8733-1854BA22-D38368D6 TUID: 74823938-47328196-8576CC9B-0242983E TOAは次のとおりです: 86B6E505-56F042E0-79B2A114-62BA758F TOA2 は: 86B6E505-EB1A8A7C-AF6E54B6-43532420 SUID は: 86B6E505-5BA18877-37239804-8003EC65 MCU は永久にロックされますか? そうでない場合、どうすればボードを回復できますか? ハードウェアに障害があると思われますか?(参考までに、D2とD3が緑色に点灯しているのは、5Vと3.3Vの電源レールが正常に動作していることを意味していると思います) 物理的に大量消去する方法はありますか?(ボードがまったく検出されないため、S32DS 緊急キネティクス オプションは使用できません)。 OpenSDA チップの任意のピンを接地すると、フラッシュ メモリが消去されますか? Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red クリスマス休暇期間中は、サポートの応答時間は通常より長くなる場合がありますのでご了承ください。場合によっては、ご要望への対応が新年以降になることもあります。ご理解のほどよろしくお願いいたします。 Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red ハイ P&E リカバリ ユーティリティがMCU を停止したら、ツールを閉じます。 次にステップ3に進みます または ステップ4 S32K146 を再プログラムします。 これが原因かどうかは分かりませんが、 アプリケーションのバージョン: 1.25 。リセットボタンSW5を押したまま、USBケーブルを挿入して MSD-DEBUG-S32K146EVB-Q144_Pemicro_v121.SDA BOOTLOADER ドライブに挿入します。これにより、 アプリケーションバージョンを1.21に。 また添付しました lpit_periodic_interrupt_s32k146.srec 。 ちなみに、外付けのSegger J-Linkは必要ありません。ステップ6に従う場合: SW5を押しながらJ7を挿入すると、OpenSDAがブートローダーモードになります。そして、 SEGGER J-Linkアプリケーションファームウェア( OpenSDA_V1.bin )をOpenSDA_V1.binにコピーします。 オンボード デバッガーは J-Link になります。 よろしくお願いします、 ロビン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! - Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。 --------------------------------------------------------------------------------- Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red こんにちは、ロビン。 迅速なご返信ありがとうございます。MSD -DEBUG-S32K146EVB-Q144_Pemicro_v121.SDAにロールバックしてみましたが、 同じように動作します。ブートローダーアプリはフラッシュされますが、D1はまだ赤く点灯しており、.srecをフラッシュできません。kinetis 回復ツールを使用して停止した後のファイル。コントローラが srec をフラッシュしようとしているが、D2 が定期的に点滅するため失敗していることがわかります (通常は 3 ~ 4 回だけ点滅し、アプリがフラッシュされます)。 その後、ブートローダーをOpenSDA_V1.bin に切り替えて、その後 J-Link コマンダーを使用して接続を試みましたが、次のログが表示されました。 SEGGER J-Link Commander V8.94 (2025年12月10日 14:50:47 にコンパイル) DLLバージョンV8.94、2025年12月10日14:49:54にコンパイル USB経由でJ-Linkに接続しています...OK ファームウェア: J-Link OpenSDA コンパイル日: 2023年1月31日 13:42:36 ハードウェアバージョン: V1.00 J-Link の稼働時間(起動以降): 0d 00h 00m 28s シリアル番号: 621000000 VTref=3.300V ターゲット接続を確立するには「connect」と入力し、ヘルプを表示するには「?」と入力します J-Link>接続 デバイス/コアを指定してください。 : S32K146 選択ダイアログに「?」と入力してください デバイス>S32K146 ターゲットインターフェースを指定してください: J) JTAG (デフォルト) S) SWD T) cJTAG TIF>SWD 対象インターフェース速度[kHz]を指定します。 : 4000 kHz 速度>100 デバイス「S32K146」が選択されました。 SWD経由でターゲットに接続する ConfigTargetSettings() の開始 ConfigTargetSettings() 終了 - 22us かかりました InitTarget() 開始 SWDが選択されました。JTAG -> SWD 切り替えシーケンスを実行しています。 CPU の停止中にタイムアウトが発生しました。 InitTarget() 終了 - 392 ミリ秒かかりました ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 APマップをスキャンして利用可能なすべてのAPを見つける AP[2]: APマップの終端に達したため、APスキャンを停止しました AP[0]: AHB-AP (IDR: 0x24770011, ADDR: 0x00000000) AP[1]: JTAG-AP (IDR: 0x001C0000, ADDR: 0x01000000) APマップを反復処理して使用するAHB-APを見つける AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 FPUnit: 6 つのコード (BP) スロットと 2 つのリテラル スロット CoreSight コンポーネント: ROMTbl[0] @ E00FF000 [0][0]: E000E000 CID B105E00D PID 000BB00C SCS-M7 [0][1]: E0001000 CID B105E00D PID 003BB002 DWT [0][2]: E0002000 CID B105E00D PID 002BB003 FPB [0][3]: E0000000 CID B105E00D PID 003BB001 ITM [0][4]: E0040000 CID B105900D PID 000BB9A1 TPIU 126976バイトの作業用RAM(0x1FFF0000)を初期化しています リセットタイプ: NORMAL ( https://kb.segger.com/J-Link_Reset_Strategies ) リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: AIRCR.SYSRESETREQ 経由でデバイスをリセットします。 リセット: S_RESET_ST はクリアされません。CPU は永久にリセット状態のままになっているようです。 リセット: フォールバックを使用: ピンをリセットします。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした リセット: コアはリセット後に停止せず、WDT を無効にしようとしました。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした リセット: 失敗しました。リセット ピンを切り替えてリセット戦略を再度試します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: AIRCR.SYSRESETREQ 経由でデバイスをリセットします。 リセット: S_RESET_ST はクリアされません。CPU は永久にリセット状態のままになっているようです。 リセット: フォールバックを使用: ピンをリセットします。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした リセット: コアはリセット後に停止せず、WDT を無効にしようとしました。 リセット: DEMCR.VC_CORERESET によるリセット後にコアを停止します。 リセット: リセットピン経由でデバイスをリセットします リセット: VC_CORERESET は CPU を停止しませんでした。(デバッグ ロジックもリセット ピンによってリセットされますか?)。 リセット: 再接続して CPU を手動で停止します。 ID 0x2BA01477 の SW-DP が見つかりました DPv0が検出されました CoreSight SoC-400 以前 AP マップの検出をスキップしました。手動で構成された AP マップが見つかりました。 AP[0]: AHB-AP (IDR: 未設定、ADDR: 0x00000000) AP[0]: コアを発見 AP[0]: AHB-AP ROMベース: 0xE00FF000 CPUIDレジスタ: 0x410FC241。実装者コード: 0x41 (ARM) Cortex-M4 r0p1、リトルエンディアンが見つかりました。 CPUを停止できませんでした CPUを停止できませんでした CPUを停止できませんでした ****** エラー: CPU を停止できませんでした。 メモリゾーン: ゾーン: 「デフォルト」 説明: デフォルトのアクセスモード Cortex-M4 が識別されました。 J-Link> Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red オシロスコープを使用してリセットピンの波形を観察し、波形を送信してリセット期間とハイレベル幅を教えてください。場合によっては回復不可能となり、S32K1 チップを交換しなければならないこともあります。   接続戦略と回復手順: 目標: デバッガーにコアを停止し、問題のあるファームウェアを無効にする機会を与えます。 A. SWD速度を下げる + 「リセット時に接続」 J-Link Commanderの場合: J-Link> device S32K146 J-Link> if SWD J-Link> speed 1000 ; start at 1 MHz; if still failing, drop to 100 kHz J-Link> connect それでも失敗する場合は、手動の connect‑under‑reset を使用します。 RESET_b を外部的に低く保持し、ボードに電源を投入します。 Commander で connect を実行します。 リセットを解除し、直ちに次の操作を実行します。 J-Link> r J-Link> h J-Link> halt 特に 100 kHz SWD 速度ではタイミングが重要になる可能性があるため、何度か試してください。 B. J-Linkリセット戦略の変更 リセット戦略の値によって動作が異なります。Commander の場合 (正確な ID はバージョンによって異なる場合があります): J-Link> SetResetType = 3 ; a common “connect under reset / halt after reset”; Try 2 / 4 / 12 etc. depending on your J-Link version J-Link> r J-Link> halt または、J-Link Commander で「リセット状態で接続」を選択してみてください。 Re: Unable to flash S32K146EVB-Q144 board as D1 glowing red S32K146EVB-SPF-29844-RB.pdfによると: J104 1-2 OpenSDAからのリセット信号 J10 2-3 P5V0 外部の 9V または 12V 電源がある場合は、 J107 1-2 P5V_SBC を接続することもできます。PEMicro Multilinkなどの外部デバッガーをお持ちの場合は、それを使用して、S32K146 用のプログラムをダウンロードできるかどうかを確認してください。 最後にダウンロードされたプロジェクトは何ですか?CSEc は有効になっていますか? 前回の質問に答えて、オシロスコープを使用して測定したリセット信号を提供してください。
記事全体を表示
MCU-Linkデバッグプローブツールを使用してフラッシュロックされたLPC4088を一括消去する方法 こんにちは、 MCU-Link デバッグ プローブを使用して、外部フラッシュを備えた LPC4088 マイクロコントローラをプログラムしています。「LinkServer.exe」を使用して正常にフラッシュできましたMCU-Link デバッグ プローブ SWD インターフェイスを介したコマンド ツール。LPC4088にリリース(ロック)バージョンのファームウェアをフラッシュした後、「LinkServer.exe」経由でMCU-Linkデバッグプローブを使用してロック解除または一括消去することができませんでした。ソフトウェア。UART ブートローダー モードで Magic ソフトウェアを使用してロックを解除しました。しかし、MCU-Link デバッグ プローブは使用できませんでした。 MCU-Link デバッグ プローブ SWD インターフェイスを使用して LPC4088 のロックを解除する方法を教えてください。 ありがとうございます。 Re: How to mass erase flash locked LPC4088 using MCU-Link Debug Probe tool こんにちは@asanga_viraj LPC についてまだ質問がある場合は、LPC 製品フォーラムでチケットを作成してください。あなたの質問はすぐにそこにCAN表示されます。 この問題に関して、まだ解決していない場合は、フラッシュのリリースバージョンをロックする方法をお知らせください。   よろしくお願いします。 BR アリス Re: How to mass erase flash locked LPC4088 using MCU-Link Debug Probe tool こんにちは、アリス。 SWD インターフェースを使用して CP2 レベルロックされた LPC4088 のロックを解除する方法を説明していただけますか? ありがとうございます。
記事全体を表示
S32K344 boot跳转APP出现hard fault 如图所示,使用S32K344产品进行boot跳转App入口地址出现hard fault故障,附件txt为boot和appflash分区的链接文件,压缩包内含有boot和app的map文件以及hex文件,请技术支持帮助看一下问题出在哪里 Re: S32K344 boot跳转APP出现hard fault 你好@wzy__1024 看来你正在跳转到RESET向量所在的地址。但不是指向RESET向量指向的地址: 因此,地址 0x443004 并不是入口点,而是指向入口点的指针。 此致, 卢卡斯
記事全体を表示
88Q9098: 能否在 STA 模式下启用/禁用 ofdma/mu-mimo? 我一直在苦苦寻找答案,但就是找不到。 我想添加启用/禁用功能 下一次连接到接入点时为 DL-OFDMA、UL-OFDMA、DL-MU-MIMO、UL-MU-MIMO 我知道启用这些功能是由接入点完成的、 但我并不关心它以何种形式出现,比如改变能力,或者其他、 我只是想让它以这种方式工作: 当我启用 DL-OFDMA 时,如果接入点尝试使用,它就会工作、 而当我在 STA 中禁用它时,即使 AP 尝试禁用,也不会起作用。 如果可能,那就再好不过了、 但即使不可能,我也会非常感激。 我真的需要你的帮助。 谢谢! Re: 88Q9098: Is it possible to enable/disable ofdma/mu-mimo in STA mode? 感谢您的支持 Re: 88Q9098: Is it possible to enable/disable ofdma/mu-mimo in STA mode? 你好@nhk OFDMA/MU-MIMO 功能只能由 AP 端配置。STA 无法禁用它。STA 将使用 AP 指定的通信协议进行通信。 顺祝商祺! 肖恩
記事全体を表示
Clarification on RTD Driver Availability with FS32K144HAT0MMHT EVK Hi everyone, I am interested in buying the FS32K144HAT0MMHT MCU and the associated evaluation kit (EVK). I would like to know: Does the EVK include the RTD driver at no additional cost? If not, is it necessary to purchase the RTD driver separately? Thanks in advance for your help! Re: Clarification on RTD Driver Availability with FS32K144HAT0MMHT EVK Hi @NagulMeera  Real-Time Drivers (RTD) and S32 Design Studio (S32DS) are free of charge. EB tresos Studio is available with a free evaluation license, but a production license must be ordered from Elektrobit. We also offer premium software such as: - S32 Safety Software Framework (SAF) and Safety Peripheral Drivers (SPD) - Structural Core Self-Test (SCST) For premium software, contact your NXP representative. BR, VaneB
記事全体を表示
i.MX6ULL:BT+WiFi 芯片(高通 QCA9377)的 132MHz sdio 时钟输出问题 恩智浦社区成员,你们好、 我有一块装有 IMX6ULL 和高通 BT+WiFi 组合芯片的定制板。 该项目基于 Yocto kirkstone、linux-imx 5.15.71 内核版本。 mx6ull 和 qca9377 之间的通信方式是 sdio。 关于 mx6ull 和 qca9377 之间的 sdio 通信过程中偶尔出现的通信错误,我有几个问题。 1. 将 dts 设置为使用 132MHz 的 sdio 时钟速度 imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; &iomuxc { pinctrl_usdhc1: usdhc1grp { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10071 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x130b0 >; }; pinctrl_usdhc1_100mhz: usdhc1grp100mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170b9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100b9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9 >; }; pinctrl_usdhc1_200mhz: usdhc1grp200mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170f9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100f9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9 >; }; }; mmc0 信息 # cat /sys/kernel/debug/mmc0/ios clock: 132000000 Hz actual clock: 132000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 6 (sd uhs SDR104) signal voltage: 1 (1.80 V) driver type: 0 (driver type B) 3. 有时会打印出如下 sdio 通信错误日志 AR6000: SDIO bus operation failed! MMC stack returned : -84 __HIFReadWrite, addr:0X001000, len:00000256, Read , Sync Debug Assert Caught, File /usr/src/debug/kernel-module-qca9377/3.1-r0/git/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c, Line: 1459, Test:status == A_OK || status == A_ECANCELED "Change sdio clock speed (132MHz -> 50MHz)" 1. 将 DTS 设置为使用 sdio 时钟速度为 50MHz。 imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; mmc0 信息 # cat /sys/kernel/debug/mmc0/ios clock: 50000000 Hz actual clock: 44000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 2 (sd high-speed) signal voltage: 0 (3.30 V) driver type: 0 (driver type B) 不显示 sdio 通信错误日志。 1.当 sdio 时钟设置为 132MHz 时,mx6ull 和 qca9377 之间的 sdio 通信似乎不稳定。有没有办法通过修改 dts 值来改进它? 2.如果不可能,您建议使用什么值作为 sdio 时钟值? 提前谢谢您。 致以最诚挚的问候 i.MX6 全部 i.MX6UL Linux Yocto Project Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 请参阅数据表,SDR104/SDR50 模式的信号电平为 1.8 V。请检查您的硬件并仔细确认这一点 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的谢琼 感谢您的快速回复。   让我再解释一下。   <HW> - Soc 是 NXP mx6ull 处理器 (MCIMX6Y2DVM09AB) - mmc0 连接到高通 BT/WiFi Combo 芯片(sdio 连接) -> 132MHz,1.8V - mmc1 连接到 8G eMMC -> 132MHz,1.8V   <mmc0> # cat /sys/kernel/debug/mmc0/ios 时钟:132000000 赫兹 实际时钟:132000000 赫兹 Vdd:21(3.3 ~ 3.4 V) 总线模式:2(推拉) 芯片选择: 0(无所谓) 电源模式:2(开启) 总线宽度:2(4 位) 定时规格 6(SD UHS SDR104) 信号电压: 1 (1.80 V) 驱动器类型: 0(驱动程序类型 B)   <mmc1> # cat /sys/kernel/debug/mmc1/ios 时钟:132000000 赫兹 Vdd:21(3.3 ~ 3.4 V) 总线模式:2(推拉) 芯片选择: 0(无所谓) 电源模式:2(开启) 总线宽度:3(8 位) 定时规格 9 (mmc HS200) 信号电压: 1 (1.80 V) 驱动器类型: 0(驱动程序类型 B)   <说明> - 与连接到 mmc1 的 eMMC 的通信以 132MHz 和 1.8V 电压运行,没有任何问题。 - 与连接到 mmc0 的 BT/WiFi 芯片的 sdio 通信也是以 132MHz 和 1.8V 电压驱动的,但会出现间歇性的 sdio 通信错误。   更多问题见下文: 1.对于 eMMC(mmc1),HS200(132MHz/1.8V)似乎是有保证的、但对于 SDIO(mmc0),在 SDR104 模式下似乎只能保证高达 104MHz 的频率。请检查? 2.如果是,mx6ull 芯片是否能保证最高 104MHz 的 sdio 时钟速度? (我想确认一下 MX6ULL 芯片能否保证 SDIO 132MHz 的时钟速度)。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 感谢您的快速回复。 关于问题 1,我想我大错特错了。很抱歉。 我检查了你提到的如下内容 ""SD/SDIO UHS-I 模式(SDR 模式下最高 208 MHz,DDR 模式下最高 50 MHz)" 因此,如果我们在 mmc0 中使用 sdr104,最大时钟频率为 208MHz,那么有可能保证 132MHz 的时钟频率吗? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 1.对于 eMMC(mmc1),HS200(132MHz/1.8V)似乎是有保证的、但对于 SDIO(mmc0),在 SDR104 模式下似乎只能保证高达 104MHz 的频率。请检查? >请参阅数据表,最高可达 UHS-I SDR104 模式 104MB/s,不是 104Mhz max,请参阅 RM:SD/SDIO UHS-I 模式(SDR 模式下最高 208MHz,DDR 模式下最高 50MHz) 2. (我想确认 MX6ULL 芯片是否能保证 SDIO 132MHz 的时钟速度)。 >您可以参阅数据表,对于 SDR104,频率最高可达 200Mhz,我们已经在 mmc0 上测试了 SDR104,频率最高可达 198Mhz,参阅您的日志,似乎您的 mmc1 可以在 HS200 下工作? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 是的,您可以参考默认设置为 132M 的 dtsi 文件,也可以转储时钟树来检查时钟是否为 132Mhz Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 谢谢 joanxie、 我会再检查一下,看看是否真的是时钟速度问题,然后再问。 谢谢。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我在 SW 中调试了上述内容。 请在确认细节后回答我的问题。 1.芯片勘误表 芯片勘误表i.MX 6ULL "ERR010450 MMC:EMMC 只能在低于或等于 150 MHz 的频率下运行" https://www.nxp.com/docs/en/errata/IMX6ULLCE.pdf        2.SW 调试 1) 误差值定义 incl@@ ud e/ uapi / asm -generic / errno.h: 67: #define EILSEQ 84 /* 非法字节序列 */ 2) EILSEQ 设置位置 -cmd 司机/mmc/主机/sdhci.c: sdhci_cmd_irq() 如果如果 &(sdhci_int_timeout |SDHCI_INT_CRC |sdhci_int_end_bit |sdhci_int_index)){ 如果(intmask &sdhci_int_timeout) 主机->cmd->错误 = -ETIMEDOUT; 不然 主机->cmd->错误 = -EILSEQ;                     -数据 司机/mmc/主机/sdhci.c: sdhci_data_irq() 如果(intmask &sdhci_int_data_timeout) 主机->数据->错误 = -ETIMEDOUT; 否则 如果(intmask &sdhci_int_data_end_bit) 主机->数据->错误 = -EILSEQ; 3) 对数 [418.109795][sdhci_cmd_irq()] intmask = 0xa0001 [418.114178][sdhci_data_irq()] intmask = 0x200002 [ 418.118999] AR6000:S DIO 总线操作失败! 返回的 MMC 堆栈:-8 4 [418.125847]__HIFReadWrite, addr:0X000800, len:00000044, 读 , 同步 [418.144284]调试断言捕获,文件 /usr/src/调试/内核-模块-qca9377/3.1-r0/git/核心/服务/HIF/sdio/linux/native_sdio/src/hif.c, 行: 1459, 测试:状态 ==A_OK ||状态 ==A_ECANCELED 3.SDHCI 寄存器 1) sdhci_cmd_irq() 的掩码值为 0xa0001 位 0 (0x00001)😞 sdhci_int_response -> 命令响应 OK 位 17 (0x20000)😞 SDHCI_INT_INDEX -> 命令索引错误 位 19 (0x80000)😞 SDHCI_INT_CRC -> 命令 CRC 错误 2)的内屏蔽值 的掩码值是() 的掩码值为 0x200002 位 1 (0x00002)😞 sdhci_int_data_end -> 数据确定 位 21 (0x200000)😞 SDHCI_INT_DATA_CRC -> 数据 CRC 错误 4.猜谜 根据 imx6ull 勘误表 ERR010450、 "1.8 V 的 SDR104 只能在低于或等于 150 MHz 的频率下工作。" 如果它的工作频率高达 150MHz看来 cmd/数据 CRC 错误将在 132MHz 时在 132MHz 频率下,由于温度/时间差/电压波动等因素造成的时序余量。 5.问题 目前,我们无法通过硬件调整来调整数值,必须通过软件来响应。 降低 sdio 时钟值似乎可以减少或消除 CRC 错误率。 率。恩智浦有什么看法? 谢谢。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie 根据您提供的信息,我使用下面的寄存器进行了测试。 sdhci-esdhc-imx.c #define ESDHC_MIX_CTRL_SMPCLK_SEL (1<< 23) #define ESDHC_MIX_CTRL_AUTO_TUNE_EN (1<< 24) #define ESDHC_MIX_CTRL_FBCLK_SEL (1<< 25) SMPCLK_SEL 0 AUTO_TUNE_EN 1 FBCLK_SEL 1 1. 测试 1) 设置 AUTO_TUNE_EN 1-> 0 2) 日志 [39.150703] AR6000:取消向总线驱动程序 注册 3) wlan0 注册失败 $ ifconfig wlan0 up ifconfig:SIOCGIFFLAGS:没有这样的设备 2. 测试 2 1) 设置 FBCLK_SEL 1-> 0 2) 日志 [39.160750] AR6000:取消向总线驱动程序注册 3) wlan0 注册也失败 $ ifconfig wlan0 up ifconfig:SIOCGIFFLAGS:没有这样的设备 3. 测试 3 1) 设置 AUTO_TUNE_EN 1-> 0 & & FBCLK_SEL 1-> 0 2) 系统在启动时死机,如下面的日志所示 [18.834619] wlan:加载驱动程序 v4.5.25.65 [ 18.894917] hifDeviceInserted:Dumping clocks (50000000,132000000) 我试着参考恩智浦社区的文章对其进行修改和测试,但结果并不令人满意。 请注意 感谢您的帮助 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie, 感谢您的快速回复。 在参考您的指南后,我会告诉您的。 祝你今天和周末愉快 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我咨询了无线团队,他们已经通过 usdhc 验证了 imx6ull 的 WIFI,并且可以设置最大时钟频率为 150Mhz,因此对于 imx6ull 端,可以支持这一点,而且我发现一些 WIFI 芯片会影响自动运行,因此我建议您可以禁用这些寄存器来检查,如果这些不是根本原因,我建议您需要检查您的硬件和 PCB 设计,如果您无法确认这一点,您可以提交票据进行 SCHEMATIC 审核。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 我咨询了无线团队,他们已经通过 usdhc 验证了 imx6ull 的 WIFI,并且可以设置最大时钟频率为 150Mhz,因此对于 imx6ull 端,可以支持这一点,而且我发现一些 WIFI 芯片会影响自动运行,因此我建议您可以禁用这些寄存器来检查,如果这些不是根本原因,我建议您需要检查您的硬件和 PCB 设计,如果您无法确认这一点,您可以提交票据进行 SCHEMATIC 审核。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 这就是我之前谈到的,关于自动调谐影响故障的详细信息 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 很高兴听到这些补丁起作用了,但事实上新的 电路板支持包 已经合并了,据我所知,我没听见 imx6ull 和 wifi 芯片之间存在任何其他问题 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 亲爱的 joanxie 感谢您的友好指导。 我参照您提供的链接调试了这个问题。 1. 补丁 1 1) 参考您提供的链接使用补丁 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 2. 补丁 2 1) 在 dts 文件上添加"fsl,sdio-async-interrupt-enabled" imx6ul-14x14-evk.dtsi: &usdhc1 { fsl,sdio-async-interrupt-enabled; //add this line 2) 以下部分已启用 sdhci-esdhc-imx.c: usdhc_auto_tuning_mode_sel() /* * If sdio device use async interrupt, it will use DAT[1] to signal * the device's interrupt asynchronous when use 4 data lines. * Then hardware auto tuning circuit MUST NOT check the DAT[1] line, * otherwise auto tuning will be impacted by this async interrupt, * and change the delay cell incorrectly, which then cause data/cmd * errors. * This is the hardware auto tuning circuit limitation. */ if (imx_data->boarddata.sdio_async_interrupt_enabled) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; 打上上述补丁后,通过调试,问题没有再出现。 (sdio 时钟变化测试(50MHz->100MHz->132MHz)、ping 测试、iperf3 测试等)。 再问一个问题,确认一下你们的补丁指南。 如果我打上这个补丁,问题就会得到解决、 但它是否有可能对 mx6ull 和 wifi 芯片之间的 sdio 通信产生其他影响?   感谢您的支持。 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 谢谢 joanxie、 我还检查了另一个 yocto 版本(imx-6.6.52、fslc-6.1.72) 我在 yocto scarthgap imx-6.6.52 版本上找到了类似的补丁,如下所示 /* * For USDHC, auto tuning circuit can not handle the async sdio * device interrupt correctly. When sdio device use 4 data lines, * async sdio interrupt will use the shared DAT[1], if enable auto * tuning circuit check these 4 data lines, include the DAT[1], * this circuit will detect this interrupt, take this as a data on * DAT[1], and adjust the delay cell wrongly. * This is the hardware design limitation, to avoid this, for sdio * device, config the auto tuning circuit only check DAT[0] and CMD * line. */ if (imx_data->init_card_type == MMC_TYPE_SDIO) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; esdhc_clrset_le(host, ESDHC_VEND_SPEC2_AUTO_TUNE_MODE_MASK, auto_tune_buswidth | ESDHC_VEND_SPEC2_AUTO_TUNE_CMD_EN, ESDHC_VEND_SPEC2); 但未在 yocto scarthgap fslc-6.1.72 上打补丁版本。 我将根据您的指导检查其他 yocto 版本。 感谢您的支持。
記事全体を表示
[滥用] 发布者:@JohnKlug /板:imx-processors/举报人:srbacvj srbacvj 报告了 @JohnKlug 发布的帖子 Could not invoke dnf for external kernel module in Yocto kirkstone ,原因如下: 原因: 详情: < a href="https://tylkoastronomia.pl/node/9904"> http://prosti-proshay.ru/lyudi/pharmacy-online-1"> https://www.siriuspup.com/breeders/pharmacy-online-11"> https://stage.cc.radiant.digital/node/3046"> http://www.pajeroio.com/blog/pharmacy-online-0"> https://www.musicinafrica.net/newsfeed/213463/373133"> http://www.sccu.chula.ac.th/node/933"> < a href="https://www.lawtech.ru/subscribe/26816-16102025"> https://okwiki.ru/catalog/pharmacy-online"> < a href="https://neweddingday.com/your-couple-name-2333"> https://www.siriuspup.com/breeders/pharmacy-online-11"> http://xn--37-6kci4a9aahjr0a.xn--p1ai/pharmacy-online-ivanovo-8"> https://hetnieuweteamwerken.be/forums/forum/pharmacy-online-5"> https://www.jobwebby.ilovemarkso.com/domainasname-anthony-gmbh/pharmacy-online-6"> http://prosti-proshay.ru/lyudi/pharmacy-online-1"> https://www.intimus.pt/pharmacy-online-16"> https://www.intimus.pt/pharmacy-online-16"> https://dev.beautynbrushes.com/services-provided/tree-braids-maroonimmortalep"> https://whs6570.com/node/2099"> http://www.le-cercle-des-sourires.fr/session/3338"> < a href="https://www.jobwebby.ilovemarkso.com/domainasname-anthony-gmbh/pharmacy-online-6"> https://www.danduo168.com/en/artworks/693/pharmacy-online-0"> https://auc.org.ua/faq/29092025-0456"> https://jeunescathos-bxl.org/fr/content/pharmacy-online-54"> https://www.musicinafrica.net/newsfeed/213463/373133"> http://xn--37-6kci4a9aahjr0a.xn--p1ai/pharmacy-online-ivanovo-8"> https://masters.adminskiracing.com/node/413296"> https://slp.millingtonpubliclibrary.org/content/pharmacy-online-9"> < a href="https://tylkoastronomia.pl/node/9904"> https://fo-rum.auc.org.ua/faq/29092025-0042-1"> https://ruckup.org/caregivers-forum/topic/6386"> < a href="https://www.rapidservice.com.ec/es/content/pharmacy-online"> https://www.globalrealtor.co.in/node/4204"> < a href="https://whs6570.com/node/2099"> https://darkmetalmush.net/history/pharmacy-online-23"> https://www.thebiketube.com/f-moser-ann"> http://xn--80aah2bgapnqg.xn--p1ai/story/pharmacy-online-3"> https://stage.cc.radiant.digital/node/3046"> https://masters.adminskiracing.com/node/413296"> https://dev.worldwar1luton.com/forum-topic/pharmacy-online-5"> 发布链接: https://community.nxp.com/t5/i-MX-Processors/Could-not-invoke-dnf-for-external-kernel-module-in-Yocto/m-p/1627964#M203740 帖子作者 @JohnKlug|Email Author 报告人:srbacvj |Email Reporter 报告的帖子有 2 个回复。
記事全体を表示
[ABUSE] Post By: @JohnKlug / Board: imx-processors / Reported by: svyruh svyruh has reported the post Could not invoke dnf for external kernel module in Yocto kirkstone posted by @JohnKlug for the following reasons: Reason: Something else Details: https://museusvalenciapre.grupotecopy.es/en/node/3710"> http://surfing.4fan.cz/node/137"> https://for-um.auc.org.ua/faq/30092025-1946"> https://localautosforsale.com/local-autos/ct/85/kia/1fas-410/1994/8690"> https://www.onlyhomebuyers.com/for-sale-by-owner-homes/vt/24"> https://www.old.ts3bots.de/node/1021"> https://www.trustcirclenetworks.org/issues/2219"> https://enki.ua/applications/16927"> https://www.danduo168.com/en/artworks/693/pharmacy-online-3"> https://carros-usados.us/pharmacy-online-12"> http://ru.ph-ed-plus.nspu.ru/article/17946"> https://kmet.ru/reviews"> https://stage.cc.radiant.digital/node/3051"> http://03otvet.ru/voprosy/oftalmologiya/pharmacy-online"> https://www.globalrealtor.co.in/node/4223"> https://www.globalrealtor.co.in/node/4223"> https://www.nadietah.ru/grouppage/136697-babbleprofitable/468798-pharmacy-online"> https://www.onlyhomebuyers.com/for-sale-by-owner-homes/vt/24"> https://for-um.auc.org.ua/faq/30092025-1946"> https://www.e123.hk/zh-hant/e-center/group/topic/933295"> https://backend.dawahnigeria.com/audit/304770"> https://www.onlyhomebuyers.com/for-sale-by-owner-homes/vt/24"> https://dev.worldwar1luton.com/forum-topic/pharmacy-online-4"> https://www.heilpraktikerausbildung24.de/node/124357"> http://www.go4go.net/go/node/155365"> https://museusvalenciapre.grupotecopy.es/en/node/3710"> https://theanubianwar.com/node/6395"> http://www.le-cercle-des-sourires.fr/session/3331"> https://www.inserthere.me/sitereview/pharmacy-online-5"> https://eventandjudge.com/node/24448"> https://theanubianwar.com/node/6395"> https://hunam.mx/no-12524-traduccion-lenguas-originarias"> https://openreviewhub.org/review/review-8407"> http://xn--37-6kci4a9aahjr0a.xn--p1ai/pharmacy-online-ivanovo-12"> http://old-namur.jeunescathos.org/fr/content/pharmacy-online-2"> https://new.roger24.de/pharmacy-online-7"> https://backend.dawahnigeria.com/audit/304770"> https://for-um.auc.org.ua/faq/30092025-1946"> https://cadel.ru/forum/pharmacy-online-6"> http://pi5ny.com/node/4956"> Post link: https://community.nxp.com/t5/i-MX-Processors/Could-not-invoke-dnf-for-external-kernel-module-in-Yocto/m-p/1627964#M203740 Post author: @JohnKlug | Email Author Reported by: svyruh | Email Reporter The reported post has 2 replies.
記事全体を表示
[S32K344MINI-EVB] 搭載デバッガ機能の確認 (K26 OpenSDA) NXPコミュニティの皆様、こんにちは。 S32K3シリーズの評価のため、S32K344MINI-EVBを購入予定です。 購入する前に、デバッグ インターフェースの要件を再確認して、正しく設定されていることを確認したいと思います。 私の理解: ブロック図とドキュメントによると、このボードにはK26 を使用した搭載デバッグインターフェースが含まれており、OpenSDA を使用する搭載デバッガーとして機能すると考えられます。 質問: S32 Design Studio を使用してS32K344MINI-EVB をフラッシュおよびデバッグするには、USB ケーブルだけが必要であることを意味しますか?(つまり、基本的な評価には Multilink や Lauterbach のような外部デバッガーは必要ありませんか?) この特定のボードには、注意する必要のある「ND (No Debugger)」バリアントや特別なジャンパーがないことを確認したいだけです。ご協力ありがとうございます! Re: [S32K344MINI-EVB] Confirming On-board Debugger Capabilities (K26 OpenSDA) ハイ 先週参加したトレーニング中に、同僚がこのボードの「ND (No Debugger)」バリアントについて言及しているのを聞きませんでした。 以前の S32K3X4EVB-T172 に関しては、当時 K26 が在庫切れだったため、「ND (デバッガーなし)」バリアントが存在していました。 新しく発売されたボードなのでまだ手元にありません。本日、S32K344MINI-EVB を注文しました。よろしければ、商品到着後に確認させていただきます。 よろしくお願いします、 ロビン --------------------------------------------------------------------------------- 注記: - この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう! - Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。 後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。 --------------------------------------------------------------------------------- Re: [S32K344MINI-EVB] Confirming On-board Debugger Capabilities (K26 OpenSDA) こんにちは、 ご返信ありがとうございます。返答をお待ちしています。ありがとう。 Re: [S32K344MINI-EVB] Confirming On-board Debugger Capabilities (K26 OpenSDA) 3日前にS32K344MINI-EVBボードを社内で注文しましたが、まだ発送されていません。いつ受け取れるかは不明ですので、お知らせします。 Re: [S32K344MINI-EVB] Confirming On-board Debugger Capabilities (K26 OpenSDA) K26 を備えた搭載デバッグインターフェースを備えた S32K344MINI-EVB を受け取りました。
記事全体を表示
EB Tresos - Ae 模块生成代码时选择了错误的 SPI 模块 RTD 6.0.0 中的 Ae 插件/模块正在生成使用 SPI LSPI0 而非 LSPI1 的代码,这无法配置,而且是错误的,因为 Ae 只能使用 SPI 1。 版本 Ae 中的 SPI 选择不可配置 由于 D2D 连接需要使用 SPI 1 不过,生成的文件使用 SPI 0 作为临时解决方案手动修改 Re: EB Tresos - Ae module generating code with wrong SPI module selected 嗨,@guillermoarb 请核实以下内容: 在配置工具中打开 AeSpiSequence 税务摊销收益。 检查 AeSpiSequenceName 是否分配给了正确的 SpiSequence。 确认该 SpiSequence 的 SpiJobAssignment 已链接到相应的 SpiJob。 确认 SpiJob 的 SpiDeviceAssignment 已设置为 LPSPI1 实例的 SpiExternalDevice。 如果这些说明似乎不清楚或令人困惑,请参考随 RTD 提供的示例项目 Ae_Spi_Example_EB_001_S32M276,因为它有助于验证是否存在错误或遗漏的配置。 BR、VaneB
記事全体を表示
MCUExpresso 安装程序 GPU 故障 - 如何修复? verbose:{" os ": " win_x64 ", " 版本 ": " Windows 11 企业版 "," 发行版 ": " 10.0.22631 " " arch ": " x64 ", " 型号 ": " 第 12 代英特尔 (R) 酷睿 (TM) i9-12950HX "} 详细:安装程序版本: v25.09 b179 详细:安装程序版本:v25.09 b179 详细:安装程序位置: C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller verbose:创建文件夹 C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller\ .cache 信息:文件夹 C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller\ .cache 成功创建详细:创建文件夹\ .mcuxpress otools 信息:文件夹\\ .mcuxpressotools 成功 创建 [59972:1209 /183408.766: 错误:内容\ brows er\ gpu_process_host.cc: 958] GP U 进程启动失败:错误_ C:\Users\TL32835 C:\Users\TL32835code=18 错误:未发现拒绝原因是:错误:ERR_FAILED (-2) 正在加载 'file:///C:\Users\TL32835\AppData\Local\Programs\MCUXpressoInstaller\resources\app\index.html '{" errno ": -2," 代码 ": " ERR_FAILED ", " url ":" 文件:///C:\\ Users\\ TL32835\\ AppData\\ Local\\ Programs\\ mcuxPressoInstaller\\ 资源\\ app\\ index.html "} [59972:1209 /183410.364: 错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [59972:1209 /183413.176: 错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [599713.176: 错误:内容\ 浏览器\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [599713.176 1209 /183414.225:错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18[59972:1209 /183415.832:错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error _code=18[59972:1209 /183417.040: 错误:内容\ 浏览器\ gpu\ gpu_process_host.cc: 958] GPU 进程上市失败:error_code=18 [59972:1209 /183417.040: Fatal: Content\ browser\ gpu_data_manager_imprivate.cc: 415] GPU 进程 不可用。 再见。 Re: MCUExpresso installer GPU fault - how to fix? HI 我正在运行 MCUXpressoInstaller.exe。我将它设置为以管理员身份运行,因为它在尝试安装新版本时出现了其他故障,而且它不支持参数 --no-sandbox --disable-gpu-sandbox Re: MCUExpresso installer GPU fault - how to fix? 你好,@_ThomasLorenz_、 这个问题似乎与 VSCode 有关,特别是在以管理员权限运行时。请参阅以下帖子: VSCode 无法使用管理员权限用上市。- 问题 #181617 - microsoft/vscode VS Code 1.79:用上市失败,错误代码:'18' · 问题 #184888 · 微软/vscode Visual Studio Code 1.79.1 在管理模式下启动失败,代码 18 - Stack Overflow Re: MCUExpresso installer GPU fault - how to fix? 今天,我从 cmd 启动安装程序时再次出现错误。 但我还有其他一些安装问题 从软件包中安装组件:McuxPresso 配置工具 [信息] 正在检查文件的哈希值...mcuxpresso_config_tools_v25.09_x64.exe... [错误] 安装 MCUXpresso 配置工具时出错:无法获取本地颁发者证书。跳转... *** 安装错误 *** Re: MCUExpresso installer GPU fault - how to fix? 你好,@_ThomasLorenz_、 我很高兴你能解决最初的问题。另外,感谢您分享解决方案,因为它可能为将来其他开发人员提供很好的参考。 关于通过MCUXpresso安装程序安装ConfigTools的问题,这与你下载并使用实际的ConfigTools安装向导进行安装完全一样:MCUXpresso配置工具 | 恩智浦微控制器(MCU)的软件开发| 恩智浦半导体 请尝试通过该下载链接安装它,MCUXpresso 扩展将看到它已安装,以备您在 VSCode 中使用 ConfigTools。 BR, Edwin.
記事全体を表示
S32K5 RTD 0.8.0 SPI 半双工模式不起作用 大家好 客户舍弗勒使用 S32K5 RTD 0.8.0 CD1/CD3 实现 SPI 半双工模式。我们还帮助他们完成项目版本,但发现SPI半双工似乎不起作用。 我们使用旧的 K3 RTD 示例来帮助我们调试 K5。K3 RTD 6.0 中的 K3 半双工 SPI 示例运行良好。我们发现在 K3 中完成 SPI 初始化后,CS 和 SOUT 引脚均为高电平。 数据可以在 K3 中成功传输。 但在 K5 中,CS、SOUT 引脚在 SPI 初始化后都是低电平,这是不可能的,也不会导致半双工故障。我们检查了端口配置和端口初始化是否正常,K5 中的 SPI 寄存器与 K3 相同。 请帮助检查当前 K5 RTD 驱动器中的半双工 SPI 是否完全正常工作? BR 理查德 优先级:高 RTD Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 嗨 @RichardLi 你 能试试今天(2025 年 12 月 8 日)发布的最新 RTD 版本 0.8.0 吗 由于 CD01 和 CD03 版本的开发团队没有更新 RTD_SPI_UM.pdf,因此我无法确认它是否支持半双工。 在最新版本中,我看到他们提供的示例支持半双工模式,而 UM 文档没有提及半双工模式的限制。 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@RichardLi 让我检查一下你的项目。 同时,您能否查看RTD提供的示例,他们在版本时确认该示例已通过验证。我们可以从软件或硬件方面缩小问题的范围 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 感谢您的支持!我查看了 RTD 示例,但没有找到半双工演示。所附项目根据 RTD 示例修改为半双工模式。 如果我能提供更多信息帮助我们解决问题,请告诉我。 BR 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 我试用了 RTD 0.8.0,问题依然存在。SOUT、CS 引脚始终为低电平。我已经上传了项目,您能否帮忙检查一下 RTD 是否支持这种 SPI 半双工模式? BR 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 你好@congnguyenphu 你那边有什么新情况吗?谢谢! 此致, 理查德 Re: S32K5 RTD 0.8.0 SPI half duplex mode does not work 经@RichardLi确认 此问题的根本原因是引脚被其他功能复用,因此无法进行 SPI 传输。 在更改为其他 SPI 通道后,SPI 正常工作。 此问题单可以关闭。
記事全体を表示
需要指导:NNStreamer (i.MX8MP) 上的 YOLOv8 输出形状不匹配 + 管道设计问题(微型 硬件和软件详情 i.mx8mPlus 和 Linux 电路板支持包 LF6.12.34_2.1.0 目标 我正在i.MX8MP 上构建一个命令行流水线(无图形用户界面),其中推理、叠加和显示均在 GStreamer 和 NNStreamer 中运行。 当前实验(命令行) 我试过这个管道:       gst_debug=gstreamer: 4、tensor_filter: 6、tensor_transform: 6、tensor_decoder: 7\ gst-launch-1.0--no-position\ v4l2src 设备=/dev/video4 num-buffers=200!\ video/x-raw,width=1920,height=1080,format=NV12,framerate=30/1 !\ imxvideoconvert_g2d !\ video/x-raw,width=320,height=320,format=RGBA !\ videoconvert !\ video/x-raw,width=320,height=320,format=BGR !\ tensor_converter !\ tensor_transform mode=arithmetic option=typecast:int8,add:-128 !\ tensor_filter framework=tensorflow-lite model=${MODEL}custom=Delegate:External,ExtDelegateLib:${VX_LIB}!\ tensor_transform mode=arithmetic option=typecast:float32,add:128.0,mul:0.004982381127774715!\ tensor_transform mode=transpose option=1:0:2 !\ tensor_decoder mode=bounding_boxes option1=yolov8 option2=${LABELS}option3=0 option4=1920:1080 option5=320:320 !\ cairooverlay name=overlay !\ videoconvert !\ autovideosink log file link LINK  ❗ 问题 我的 YOLOv8 TFLite 模型输出(1、7、2100),但 i.MX8MP 上的 NNStreamer 却显示7 × 2100 × 1。 我收到了这样的解释: YOLOv8 TFLite 型号的输出为(1,7,2100),而 NNStreamer 的 i.MX8MP YOLOv8 解码器的输出为 7×2100×1。此电路板支持包版本仅支持对四维张量进行转置,因此模型输出需要去量化,重塑为 (1,7,2100,1),然后进行转置。 输入: int8 [1, 320, 320, 3] 输出:int8 [1, 7, 2100] 刻度/零点 输出正确包含 3 个类别 + 4 个 bbox 值 ⚙️ 当前(缓慢)的方法 现在的申请流程是 GStreamer → BGR → OpenCV NPU 推断 OpenCV 后处理 返回 RTSP 管道 这会导致多个软件视频转换,在理想条件下,我们只能达到约 20 FPS,尽管模型本身可以运行 60 多 FPS。 🔄 建议的新方法 我想把管道分开: 路径 A - 推断 仅在此处转换 NV12 → BGR 运行 NNStreamer 路径 B - 叠加 + 显示 保留原始 NV12/YUY2 框架 直接在 NV12 上绘制边界框(最好使用硬件) → 将 NV12 送入编码器/RTSP → 完全避免软件视频转换 我首先想使用纯粹的 gst-launch 来制作这个原型,然后在 Python 中应用这种方法(可能使用 OpenGL 来实现 NV12 叠加层)。 🙏 我需要帮助 如何在 i.MX8MP 上将(1,7,2100) TFLite 输出重塑/转换为 NNStreamer 的 YOLOv8 解码器所需的格式 有只使用张量滤波器/变换/解码器的工作示例吗? 有没有解决三维输出问题的方法? 在 NV12/YUY2 上叠加的最佳做法 有什么 NNStreamer 友好的方法可以直接在 NV12 上绘制方框吗? 推荐元素(NV12 上的 cairooverlay?OpenGL?v4l2convert?imxvideoconvert_g2d 重叠?) 一般建议:在 i.MX8MP 上,分割管道(BGR 上的推理,NV12 上的叠加)是合理的架构方向吗? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 感谢您的快速回复,我之前曾尝试在 tensor_transform 中使用重塑,但返回错误。 root@imx8mpevk:~# export MODEL=/root/rtsp/testing1/saved_model_Triding_320.tflite root@imx8mpevk:~# export LABELS=/root/rtsp/testing1/labels.txt root@imx8mpevk:~# gst-用上市-1.0 --no-position v4l2src 设备=/dev/video4!video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 !imxvideoconvert_g2d !video/x-raw,width=320,height=320,format=RGBA !视频转换 !video/x-raw,width=320,height=320,format=BGR !张量转换器 !tensor_transform mode=arithmetic option=typecast:int8,add:-128 !tensor_filter framework=tensorflow-lite model=${MODEL} !tensor_transform mode=arithmetic option=typecast:float32,add:128.0,mul:0.004982381!tensor_transform mode=reshape option=1:7:2100:1 !tensor_transform mode=transpose option=1:0:2:3 !tensor_decoder mode=bounding_boxes option1=yolov8 option2=${LABELS} option3=0 option4=1920:1080 option5=320:320 !cairooverlay name=overlay !视频转换 !autovideosink ** 消息:14:56:17.877:accl = cpu **(gst-launch-1.0:1335):CRITICAL **:14:56:17.931:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.931:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.931:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.935:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.938:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32' 失败 ** (gst-launch-1.0:1335):CRITICAL **:14:56:17.939:bb_getOutCaps: assertion 'config->info.info[0].type== _NNS_FLOAT32'失败 警告:流水线错误:无法在元素"tensor_transform" 中设置属性"mode" ,以"重塑" root@imx8mpevk:~# 您能否建议修改流水线,以符合预期格式,并覆盖到 nv12 上。 或者我需要降级或升级我的 linux 电路板支持包 版本才能匹配它们。 如果可能,请测试管道并提供反馈。 感谢并问候 S Vishnu Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 你好 问题源于您的 YOLOv8 TFLite 模型输出形状(1,7,2100)与 i.MX8MP 上 NNStreamer 的 YOLOv8 解码器所期望的格式(7×2100×1)不匹配。出现这种情况的原因是: 1.您当前的电路板支持包版本 (LF6.12.34_2.1.0)仅支持 4D 张量的转置操作 2.模型输出需要重塑和转置,以符合解码器的预期 ## Recommended Solution For the tensor transformation, you need to apply: 1. Dequantization (if using quantized model) 2. Reshape the output from (1,7,2100) to (1,7,2100,1) 3. Transpose the tensor to the required format (7×2100×1) ## 管道优化 您建议的架构(拆分管道)是一种合理的方法: - 仅为推理转换 NV12 → BGR - 保留原始 NV12/YUY2 帧用于显示/编码 - 使用硬件加速直接在 NV12 上叠加检测结果 这将消除软件视频转换操作,实现更好的性能。 ## NV12 管道的推荐要素 在 NV12 上直接绘制边界框: - 使用具有叠加功能的 `imxvideoconvert_g2d` - 替代方法: `cairooverlay` 可与 NV12 配合使用,但可能需要格式调整 管道结构示例: ``` v4l2src → NV12 → tee → branch1:转换为 BGR → 推理 → 检测结果 branch2:原始 NV12 → imxvideoconvert_g2d(带叠加) → 编码器/显示器 ``` 通过消除不必要的格式转换,利用 NPU 60+ FPS 的能力,这种方法应能显著提高性能,超过当前约 20 FPS 的限制。 此致 Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 您好, 是的,你需要降级 Linux 电路板支持包。我想这应该能行,因为我们还没有在 Yolov8 中测试过管道。 此致 Re: Need guidance: YOLOv8 output shape mismatch on NNStreamer (i.MX8MP) + pipeline design question ( 我有一个更新,我在张量_变换元素中使用了模式维度变化(dimchg),以符合张量解码器的预期。 .... tensor_filter framework=tensorflow-lite model=../../vaishnavi/model_calibrated_int8_og_320.tflite custom=Delegate:External,ExtDelegateLib:libvx_delegate.so !tensor_transform mode=arithmetic option=typecast:float32,add:128.0,mul:0.004982381!tensor_transform mode=dimchg option=0:1 !tensor_decoder mode=bounding_boxes option1=yolov8 option2=labels_over.txt option3=0 option4=1920:1080 option5=320:320 !...... 感谢您的回复。 感谢和问候 Siddavatam Vishnu
記事全体を表示
CIFAR10 TFLM快速搭建指南 目录 一、概述 二、环境准备   2.1 虚拟环境   2.2 使用Google Colab 三、核心步骤   3.1 CIFAR10数据集   3.2 模型创建   3.3 模型训练   3.4 模型转换   3.5 推理验证   3.6 benchmark性能   3.7 完整实现   3.7 简化版本(Colab) 四、TFLite Micro部署 五、快速验证 六、应用示例 七、结论 八、参考 Spoiler (Highlight to read) more details, please see the attachment. more details, please see the attachment. 一、概述 CIFAR-10: 多伦多大学Alex Krizhevsky CIFAR-10公开数据集,也是计算机视觉领域最经典、最常用的入门级基准数据集之一,包含10个类别的6万张32x32彩色图像(5万训练,1万测试),例如飞机、汽车、鸟、猫等。 tflm_cifar10:演示了如何在恩智浦的微控制器上使用TensorFlow Lite Micro框架,实时运行CIFAR-10图像分类模型。即将一个预先训练好的、针对CIFAR-10数据集的卷积神经网络模型部署到MCU上,让其具备了识别10类常见物体(飞机、汽车、鸟、猫等)的能力。 模型:一个轻量级CNN模型,包含3个卷积层、ReLU激活层、池化层和一个全连接层。 输入: 32x32像素的彩色图像。 输出:图像属于CIFAR-10中10个类别的概率。 本文档:提供针对CIFAR10数据集搭建的完整流程,从数据集、模型训练转换、部署推理的快速实现方案,可作为示例tflm_cifar10(推理为主)的前置补充,本文不涉及到端侧的部署与优化。  ... """ CIFAR10 快速训练、测试、部署与推理完整流程 """ import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 减少TensorFlow日志 import tensorflow as tf import numpy as np import time import matplotlib.pyplot as plt print(f"TensorFlow版本: {tf.__version__}") print(f"NumPy版本: {np.__version__}") class CIFAR10QuickPipeline: def __init__(self): """初始化管道""" self.model = None self.tflite_model = None def load_data(self, sample_size=1000): """加载简化数据集""" print("\n1. 加载CIFAR10数据集...") (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() # 预处理 x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 # 使用少量数据(快速训练) x_train_small = x_train[:sample_size] y_train_small = y_train[:sample_size] x_test_small = x_test[:200] y_test_small = y_test[:200] # 转换为独热编码 y_train_onehot = tf.keras.utils.to_categorical(y_train_small, 10) y_test_onehot = tf.keras.utils.to_categorical(y_test_small, 10) print(f"训练数据: {x_train_small.shape}") print(f"测试数据: {x_test_small.shape}") return (x_train_small, y_train_onehot), (x_test_small, y_test_onehot) def create_simple_model(self): """创建简化CNN模型""" print("\n2. 创建简单CNN模型...") model = tf.keras.Sequential([ # 输入层 tf.keras.layers.Input(shape=(32, 32, 3)), # 卷积层1 tf.keras.layers.Conv2D(8, (3, 3), padding='same', activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), # 卷积层2 tf.keras.layers.Conv2D(16, (3, 3), padding='same', activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), # 全连接层 tf.keras.layers.Flatten(), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile( optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'] ) model.summary() self.model = model return model def train_model(self, x_train, y_train, x_test, y_test, epochs=10): """训练模型""" print("\n3. 训练模型...") # 回调函数:早停 callbacks = [ tf.keras.callbacks.EarlyStopping( monitor='val_loss', patience=3, restore_best_weights=True ) ] history = self.model.fit( x_train, y_train, epochs=epochs, batch_size=32, validation_data=(x_test, y_test), callbacks=callbacks, verbose=1 ) # 评估模型 test_loss, test_acc = self.model.evaluate(x_test, y_test, verbose=0) print(f"\n测试准确率: {test_acc:.4f}") return history def convert_to_tflite(self): """转换为TFLite格式""" print("\n4. 转换为TFLite格式...") # 转换为TFLite converter = tf.lite.TFLiteConverter.from_keras_model(self.model) # 优化配置 converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.target_spec.supported_types = [tf.float32] # 转换 tflite_model = converter.convert() # 保存模型 with open('cifar10_model.tflite', 'wb') as f: f.write(tflite_model) # 保存为字节数组(用于嵌入式部署) self.save_as_c_array(tflite_model) self.tflite_model = tflite_model model_size = len(tflite_model) / 1024 print(f"模型大小: {model_size:.1f} KB") return tflite_model def save_as_c_array(self, tflite_model): """保存为C数组格式""" c_array = '// 自动生成的CIFAR10模型数组\n' c_array += '#include \n\n' c_array += 'const unsigned char cifar10_model_tflite[] = {\n' # 每行显示12个字节 for i in range(0, len(tflite_model), 12): line_bytes = tflite_model[i:i+12] c_array += ' ' + ', '.join(f'0x{b:02x}' for b in line_bytes) + ',\n' c_array += '};\n\n' c_array += f'const unsigned int cifar10_model_tflite_len = {len(tflite_model)};\n' with open('cifar10_model_array.h', 'w') as f: f.write(c_array) print("C数组已保存: cifar10_model_array.h") def test_tflite_inference(self, x_test, y_test, num_tests=10): """测试TFLite推理""" print(f"\n5. 测试TFLite推理 ({num_tests}个样本)...") if self.tflite_model is None: with open('cifar10_model.tflite', 'rb') as f: self.tflite_model = f.read() # 加载TFLite模型 interpreter = tf.lite.Interpreter(model_content=self.tflite_model) interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details() # 类别名称 class_names = ['飞机', '汽车', '鸟', '猫', '鹿', '狗', '青蛙', '马', '船', '卡车'] correct = 0 times = [] for i in range(min(num_tests, len(x_test))): # 准备输入 input_data = x_test[i:i+1] # 推理 start_time = time.perf_counter() interpreter.set_tensor(input_details[0]['index'], input_data) interpreter.invoke() inference_time = time.perf_counter() - start_time times.append(inference_time) # 获取输出 output = interpreter.get_tensor(output_details[0]['index']) predicted_class = np.argmax(output[0]) actual_class = np.argmax(y_test[i]) # 检查是否正确 if predicted_class == actual_class: correct += 1 print(f"样本 {i+1}: 预测={class_names[predicted_class]:<5} " f"实际={class_names[actual_class]:<5} " f"时间={inference_time*1000:.1f}ms " f"{'✓' if predicted_class == actual_class else '✗'}") accuracy = correct / num_tests avg_time = np.mean(times) * 1000 print(f"\n推理统计:") print(f" 准确率: {accuracy:.1%} ({correct}/{num_tests})") print(f" 平均推理时间: {avg_time:.1f}ms") print(f" 推理速度: {1000/avg_time:.0f} FPS") return accuracy, avg_time def benchmark_performance(self, x_test): """性能基准测试""" print("\n6. 性能基准测试...") interpreter = tf.lite.Interpreter(model_content=self.tflite_model) interpreter.allocate_tensors() input_details = interpreter.get_input_details() # 预热 test_input = x_test[0:1] for _ in range(10): interpreter.set_tensor(input_details[0]['index'], test_input) interpreter.invoke() # 基准测试 num_runs = 100 start_time = time.perf_counter() for _ in range(num_runs): interpreter.invoke() total_time = time.perf_counter() - start_time avg_time = total_time / num_runs * 1000 print(f"基准测试结果:") print(f" 总推理次数: {num_runs}") print(f" 总时间: {total_time*1000:.1f}ms") print(f" 平均推理时间: {avg_time:.1f}ms") print(f" 推理速度: {1000/avg_time:.0f} FPS") return avg_time def save_model_summary(self): """保存模型摘要""" summary = [] self.model.summary(print_fn=lambda x: summary.append(x)) with open('model_summary.txt', 'w') as f: f.write('\n'.join(summary)) f.write(f"\n\n模型信息:") f.write(f"\n参数数量: {self.model.count_params():,}") f.write(f"\n保存时间: {time.ctime()}") print("模型摘要已保存: model_summary.txt") def main(): """主函数""" print("=" * 60) print("CIFAR10 快速训练、测试、部署管道") print("=" * 60) # 创建管道 pipeline = CIFAR10QuickPipeline() # 1. 加载数据 (x_train, y_train), (x_test, y_test) = pipeline.load_data(sample_size=2000) # 2. 创建模型 pipeline.create_simple_model() # 3. 训练模型 history = pipeline.train_model(x_train, y_train, x_test, y_test, epochs=15) # 4. 保存模型摘要 pipeline.save_model_summary() # 5. 转换为TFLite pipeline.convert_to_tflite() # 6. 测试推理 pipeline.test_tflite_inference(x_test, y_test, num_tests=20) # 7. 性能测试 pipeline.benchmark_performance(x_test) print("\n" + "=" * 60) print("流程完成!生成的文件:") print(" 1. cifar10_model.tflite - TFLite模型") print(" 2. cifar10_model_array.h - C数组格式") print(" 3. model_summary.txt - 模型摘要") print("=" * 60) if __name__ == "__main__": main() ... 七、结论 本文旨在以常见图像分类场景(CIFAR10)为例,让读者快速了解从数据搭建、模型创建、训练、推理和验证的完整流程,可作为示例tflm_cifar10(端推理为主)的前置补充,本文不涉及到端侧部署与优化。
記事全体を表示
Lauterbach FCCU_Utility 插件 - S32K3xx Lauterbach FCCU_Utility 插件 - S32K3xx MPC57xx_FCCU_Utility_rev0.pdf 这个 Lauterbach 调试插件允许用户直接从调试器界面使用 FCCU 配置。这将加快开发速度,并且无需每次更改 FCCU 配置时重新编译和编程项目。 @Smartling Language Service 所提供的文档描述了如何使用 Lauterbach FCCU(故障收集和控制单元)外围扩展功能用于 S32K3xx 设备。期望用户对 FCCU 机制有深入了解,以便有效使用此扩展。 在这种情况下,这个调试器插件在多种使用场景中都可能非常有价值,例如 FA 或开发过程中的调试。 顺祝商祺! Peter
記事全体を表示
RT595 的 SmartDMA 文档 对于 RT595,我需要使用 DMA 将数据从 FlexIO 快速复制到 RAM 缓冲区,而文档中说我应该使用 SmartDMA 来实现这一目的。RT595 参考手册(2023 年 12 月第 2 修订版)第 17 章只有一页长,而且似乎突然停止了。大部分文件都不存在。RT575 中 SmartDMA 的文档在哪里?我看到恩智浦发布了 SmartDMA 烹饪手册和一些非常具体的应用说明。还有一份非常简短的 API 文档,显然也是未完成的。我没有看到任何安全文件的链接。如何获得该外设的参考手册级别描述? 通信& 控制(I3C | I2C | SPI | FlexCAN | 以太网 | FlexIO) Re: SmartDMA documentation for RT595 'Q1。“至少,恩智浦如何解释参考手册中突然放弃有关SmartDMA的章节?” -->这个问题超出了我的范围,我无法给出明确的答案。我需要设法找到相关团队和产品负责人,但我不确定能否找到,因为重组或无法回答的问题很常见。 Q2. API 文档不完整,关于 SmartDMA 的章节不到一页就中途停止。同时,FlexIO 的文档说我们必须使用 SmartDMA。除非我想复制照相机的示例,否则没有任何地方可以指导我如何操作。我们没有 DMA 触发信号或请求来源的清单。这种情况完全无法使用。我的项目进行到一半,硬件已经到位,但制造商没有提供任何支持,说明如何在非标准 FlexIO 应用程序中使用 DMA。这太不合理了。 --> 你是如何得出这一结论的? Re: SmartDMA documentation for RT595 这不是一个令人满意的解决方案。在得到你的回答之前,我已经知道了所有这些信息来源,而且从你那里得到的答复与我之前从人工智能聊天机器人那里得到的答复几乎一模一样。 使用这些应用笔记所能做的就是制作所描述项目的精确副本。API 文档不完整,有关 SmartDMA 的章节不到一页就中途停止。 同时,FlexIO 的文档说我们必须使用 SmartDMA。除非我想复制照相机的示例,否则没有任何地方可以指导我如何操作。我们没有 DMA 触发信号或请求来源的清单。这种情况完全无法使用。我的项目进行到一半,硬件已经到位,但制造商没有提供任何支持,说明如何在非标准 FlexIO 应用程序中使用 DMA。这太不合理了。我现在到底该怎么办?用 ST 微控制器重新启动项目? 恩智浦必须提供 SmartDMA 的文档,至少要提供一份完整的 API 文档,列出所有功能和结构,最好还能提供寄存器的完整列表。目前的情况是不合理的,也是无法忍受的,而你们的回应却令人大失所望。至少,恩智浦如何解释参考手册中有关SmartDMA的章节突然放弃的原因? Re: SmartDMA documentation for RT595 恩智浦的 Sam_Gao 问我是如何得出"FlexIO 的文档说我们必须使用 SmartDMA 这一结论的。" 我的回答是,在 RT595 参考手册修订版 2 第 2171 页中,我们看到了以下内容: 51.1.2 DMA 支持在本设备 上,不支持标准 DMA 与 FLEXIO 模块一起使用。应改用 SmartDMA。本章中对标准 DMA 的任何参考均应不予考虑。 Re: SmartDMA documentation for RT595 您好, 我也找不到有关smartDMA 寄存器和架构的公开参考手册级别详细信息的信息,以下是相关团队在仔细检查后发表的一些评论: -SmartDMA 是一款可编程协处理器,旨在通过处理复杂的 I/O 驱动的任务和数据操作来减轻主 Arm 处理器的负担,这就是为什么它需要与 FlexIO 外围设备而不是标准 DMA 控制器一起使用的原因。 -与通过寄存器配置的传统 DMA 控制器不同,SmartDMA 执行专用的固件程序来执行其功能。SmartDMA 驱动程序由两部分组成: • 配置和调度功能。 • smartDMA 固件程序 smartDMA 的执行程序流程如下: 1.设置要执行的固件程序的特定功能参数。 2.调用 smartDMA_reset() RESET smartDMA。 3.调用 SMARTDMA_Boot(),根据 API 索引启动 smartDMA 运行给定程序。 4.SmartDMA 执行完成后,会生成一个中断信号,通知 Arm 内核执行已完成。 以@@ 下 AN 第 4.3 节 SmartDMA 概述中的详细信息:使用 FlexIO 和 SmartDMA 在 i.MX RT500 上仿真并行摄像头接口 Re: SmartDMA documentation for RT595 @Sam_Gao发表的这些泛泛而谈的评论又一次没有正确回答我们的问题。恩智浦的一名员工在几周前写道他找不到公开文件,但随后又发布了他找不到公开文件的帖子,这完全是不够的。我们需要的是涵盖如何使用 FlexIO 的 DMA 的文档。这大概意味着 SmartDMA 的完整文档。提到的应用笔记是前一篇文章中提到的应用笔记之一,我们已经说过,这根本不是SmartDMA的一般文档。我们仍然没有 FlexIO 的 DMA 触发信号或 DMA 调度请求清单,也没有足够的信息来为 SmartDMA 协处理器生成固件。 Re: SmartDMA documentation for RT595 总之,如果用户想将 FlexIO 与任何类型的 DMA 配合使用,恩智浦就抛弃了他们。在这种情况下,恩智浦应该更直接。在 RT595 参考手册第 51.1.2 节中(FlexIO 的 DMA 支持)他们应该写道,由于必须使用 SmartDMA,但是 SmartDMA 尚未记录在案,因此不支持该设备任何 DMA。 同样,应将参考手册的第17.2节更正为 " 有22个外部信号与SmartDMA有关:22个输入/输出信号,但恩智浦决定不记录这些信号。如果您计划使用带有 DMA 的 FlexIO,那么您的项目就完蛋了,您应该使用信誉更高的供应商提供的其他处理器重新开始设计。 Re: SmartDMA documentation for RT595 @jacobvecht 是的,你的描述是正确的。 关于 " 如何在 FlexIO " 中使用 DMA,仅存在以下公开信息(参考手册、应用笔记、API 等)。由于该 IP 没有记录、 没有其他可用的公共资源。 此外,您也可以尝试寻求处理器和微控制器专业支持部门的支持|恩智浦半导体 但是如果您的产品需要大批量生产,您可以直接联系恩智浦销售团队寻求帮助。 Re: SmartDMA documentation for RT595 @jacobvecht 请准确列出您的需求。 我所说的公开信息,是指可以提供给客户的信息,否则就需要通过特殊渠道获取,不在我的工作范围之内。 关于 " 如何在 FlexIO 中使用 DMA",我已经给您回复过多次,但没有进一步的信息。 关于 " 为 SmartDMA 协处理器生成固件所需的足够信息" 。目前还没有关于该部件的公开信息。 当然,您也可以使用处理器和微控制器的专业支持|恩智浦半导体来获得支持。 Re: SmartDMA documentation for RT595 关于如何在 FlexIO 中使用 DMA 或 SmartDMA,@Sam_Gao要求我们准确列出所需的内容。 我们需要知道如何从 FlexIO 触发信号 DMA 或 SmartDMA。我们如何将 FlexIO 设置为 DMA 触发信号源,或者如何从 FlexIO 外围设备调节 DMA 传输。 你说你已经回答了我关于如何在 FlexIO 中使用 DMA 的问题,但你并没有。你写道 我找不到有关包含 i.MX RT595 SmartDMA 完整寄存器映射或位级编程模型的参考手册的信息。 当被问及为什么 RT595 参考手册修订版第 17 章在一页之后突然结束时,你的答案是: 这个问题超出了我的职权范围,我无法给出明确的答案。我需要尝试找到相关团队和产品负责人,但我不确定能否找到,因为重组或无法回答的问题很常见 您曾两次参考应用笔记,其中显示了在非常具体的用例中使用 SmartDMA 固件的示例,但关于针对其他案例对 SmartDMA 进行编程,您的回应是: 目前还没有关于该部件的公开信息。 尽管我们承认您已经就有关该主题的公开信息或缺乏此类信息提供了四个答案,但如何让FlexIO触发信号和加快DMA传输这一基本问题尚未得到解答。
記事全体を表示
S32K312: I2CおよびADCトリガーの問題 弊社のお客様は S32K312 100 ピンを使用して開発を行っており、次のような問題に直面しています。どのように彼らを導けばよいかアドバイスをいただけますか? 問題ステートメント1: I²Cの問題(SBC):I²Cモジュールは、初期化直後、転送が開始される前にバスがビジー状態(BBF = 1)であると報告します。バスがアイドル状態にならないため、マスターはSEND操作を完了できず、それ以上のI²Cアクティビティは発生しません。 問題2 : BCTUからのADCトリガーが機能しません。1つのPWM_TriggerチャネルがBCTUを使用してADCをトリガーするように設定されており、その結果はDMAバッファに保存されるはずですが、実際にはそうではありません。 #S32K312 優先度: 重要 Re: S32K312 : I2C and ADC Trigger issues こんにちは@YukoKintoさん、 お客様が使用した RTD パッケージのバージョンは何ですか? 設定ファイル(.arxml または .xdm)を送っていただけますか?i2c、Adc、Pwm、ポートのファイルとフロー コードはありますか? よろしくお願いいたします。 ダン
記事全体を表示
实时时钟 PCF85043A 运行速度过快 +55ppm 你好、 我们发现,我们在几种产品中使用的 PCF85043A 实时时钟的 +55 ppm 运行速度过快。 对于老产品,我们在生产过程中会进行频率校准,因此偏移会被抵消。但在较新的产品中,我们放弃了校准,现在发现 RTC 总是运行得太快。 我们使用的晶体是 ECS-.327-7-34B-C-TR、指定为 7pF 负载。 因此,我们将 PCF85063 的负载上限寄存器设置为 7pF。 我们在现场应用以及实验室测量中使用三种不同精度的 TCXO 作为参考,观察了由此产生的时间偏移。 我们还检查了演示板 OM11059A,它给出了相同的结果! 将负载上限寄存器设置为 12.5pF 可在一定程度上提高精度,但仍然不够精确,而且不令人满意,因为这种现象肯定有更深层次的原因。 PCF85063 有 55ppm 的频率偏移,这是已知的问题吗? 如果是,恩智浦的 "建议解决方案 "是什么? 感谢您的提示。 Re: Real-time clock PCF85043A is running too fast by +55ppm 好的,谢谢你的发言。 不过,我们有几款 10'000 产品,它们显示出明显的 +55ppm 平均频率偏移。很少达到正确的频率,甚至出现负偏移。 (当然,我知道核实频率是我们自己的责任,是我们的错,我们直到现在才注意到)。 不过...... 根据 UM10301 用户手册中的图表(见附图),这意味着几乎所有实时时钟芯片的负载上限都在约 4.5pF 的最小范围内,但很少或几乎从未达到 7pF 或更高。 我想,在>数年的 30,000 件产品中,这显然不是由于某批晶圆电容过低造成的。 因此,这与我们从数据表中看到的结果大相径庭。 好吧,我们可以变通,没问题。我很高兴知道,我没有测量错,这实际上是一种非理想行为。 对于未来的设计:我想,额外的外部电容(具有更精确的值)可以更准确地确定频率。 Re: Real-time clock PCF85043A is running too fast by +55ppm 嗨,比特、 还是说,这实际上是芯片的一种非理想行为,可以通过偏移寄存器来解决? 最后一句是正确的。请参阅PCF85063A 数据表中的表 40。内部晶体电容具有容差。7pF 电容可能从 4.2pF 到 9.8pF 不等。因此,晶体频率也可能根据内部电容的变化而变化。 是的,应该用偏移寄存器来解决这个问题。 致以最崇高的敬意 约瑟夫 Re: Real-time clock PCF85043A is running too fast by +55ppm 你好,Jozef, 感谢您的答复。 我们已经知道偏移寄存器,我们用它来补偿偏移和晶体的温度曲线。 当然,这也算是解决了问题。然而,这只是一种变通办法,并不能从根本上解决问题。 问题是: 使用 +/-10ppm 晶体,为什么在室温下会产生 +55ppm 偏移? 在室温下,不需要对软件进行微调,只需要对硬件的负载能力进行微调。根据数据手册,负载上限由实时时钟芯片提供,无需外部负载上限。那么,为什么会有如此大的频率偏差(使用几种晶体、多个参考和包括演示板在内的几个 PCB)? 我错过了什么吗? 还是说,这实际上是芯片的一种非理想行为,可以通过偏移寄存器来解决? Re: Real-time clock PCF85043A is running too fast by +55ppm 嗨,比特、 PCF85063A 的精度可在偏移寄存器中进行微调。请参阅PCF85063A 数据手册中的第 7.2.3 节。 校准工作流程请参见图 11 和图 12。 致以最崇高的敬意 约瑟夫
記事全体を表示
S32K358 EVB: MCU が WFI でスタック S32K358 に AUTOSAR OS を統合しようとしています。Mcu クロックの構成は、AUTOSAR Dio ベアメタルのサンプル コードと同じように行われます。電源投入後、main() に到達しますが、Mcu_SetMode() API で停止します。WFI 実行の待機ループに移行し、タイマーが期限切れになると例外をスローします。 確認できるレジスタと WFI の実行方法。 #S32K358 Re: S32K358 EVB : MCU stuck for WFI こんにちは@prabtani 構成は DIO の例と同じなので、その例をフラッシュして、同じ動作が観察されるかどうかをお知らせください。 例が正しく動作する場合、問題はコード/構成にある可能性があります。そのCASEは、.mexを共有してくださいファイルを送信して、自分の側で確認およびテストできるようにします。 Re: S32K358 EVB : MCU stuck for WFI こんにちは@VaneB 、 Dio の Bare Metal AUTOSAR RTD の例を参考に、AUTOSAR OS を統合しようとしています。Mcu クロックの構成は Dio の例と同じです。メインに到達した後、同じMCU初期化シーケンスに従います。 Re: S32K358 EVB : MCU stuck for WFI こんにちは@prabtani 私の側でテストできるように、プロジェクトを共有していただけますか?それが不可能な場合は、状況をより良く理解するために、追加の詳細を提供していただけますか? また、RTDS に付属するサンプル コードを参照して、不足している構成や間違った構成がないことを確認することもお勧めします。 BR、ヴェインB
記事全体を表示