Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
LPSPI3 経由で FS26 を駆動するにはどうすればいいですか? 開発にはS32K3X4EVB-T172を使用しています。 LPSPI3 を使用して FS26 と通信できないことがわかったので、サンプル コードでこの状況を再現しました。 交換したい LPSPI3_PCS0 = 110 = PTB17 <> LPSPI0_PCS0 = 95 = PTB0 LPSPI3_SCK = 7 = PTD1 <> LPSPI3_SCK = 7 = PTD1 LPSPI3_SIN = 111 = PTD20 <> LPSPI0_SIN = 97 = PTC9 LPSPI3_SOUT = 8 = PTD0 <> LPSPI0_SOUT = 94 = PTB1 配線方法は以下の通りです。 LPSPI3_SCK = J37、番号1、LPSPI0_SCK = J2、番号21に接続 LPSPI3_SIN = J39、番号14、LPSPI0_SIN = J2、番号15に接続 LPSPI3_SOUT = J37、番号3、LPSPI0_SOUT = J2、番号18に接続 LPSPI3_PCS0 = J4、番号5、LPSPI0_PCS0 = J2、番号24に接続 既知の障害点は、Sbc_fs26_InitDevice 内の Sbc_fs26_GetDeviceState が FS_STATES_INVALID を返すことです。 ただし、Spi_SyncTransmit を使用すると、CSB が低く引き下げられることがわかります。これは正しいようです。 CSB MOSI 設定を確認しましたが、どこに問題があるのかわかりません。添付ファイルは、LPSPI0 が LPSPI3 に変更されていることを除いて、サンプル コードとほぼ同じです。 Re: How to drive FS26 via LPSPI3? 公式の例では、FS26 と通信するためにどの SPI を使用していますか? Re: How to drive FS26 via LPSPI3? LPSPI0の使用 LPSPI0を削除してから以下のドッキングを実行しました。 LPSPI0_PCS0 = 95 = PTB0 = J2 (上位24) LPSPI3_PCS0 = 110 = PTB17 = J4 (下位5) LPSPI0_SCK = 98 = PTC8 = J2 LPSPI3_SCK = 7 = PTD1 = J37 LPSPI3_SCK = 7 = PTD1 = J37 LPSPI0_SIN = 97 = PTC9 = J2 (上位15) LPSPI3_SIN = 111 = PTD20 = J39 (中間14) LPSPI0_SOUT = 94 = PTB1 = J2 (LPSPI3_SOUT = 8 = PTD0 = J37 に接続) ただし、FS26は通信できません。 Re: How to drive FS26 via LPSPI3? これはコード移植の問題ではありません。非常に大きなコードパッケージがあり、LPSPI3がFS26と通信できないという問題が発生しています。質問しやすいように、FS26のサンプルコードを使用し、FS26との通信をLPSPI0からLPSPI3に変更しました。しかし、LPSPI3がFS26と通信できないという同じ問題が依然として発生しています。Spi_SyncTransmitを呼び出すと、CSBとMOSIに対応する応答が表示されます。そのため、原因がわかりません。 Re: How to drive FS26 via LPSPI3? 使用 LPSPI0 LPSPI0_PCS0 = 95 = PTB0 LPSPI0_SCK = 98 = PTC8 LPSPI0_SIN = 97 = PTC9 LPSPI0_SOUT = 94 = PTB1 Re: How to drive FS26 via LPSPI3? クリスマス休暇期間中は、サポートの応答時間は通常より長くなる場合がありますのでご了承ください。ご理解のほどよろしくお願いいたします。 私が見た説明は、私が行っている RTD 上での SPI 通信転送であり、サポートを超える点があります。
View full article
iMX95 verdin evkキットでストリームをディスプレイにプッシュする方法 私は、iMX95 Verdin EVK に Bayer RGGB センサを搭載しようとしており、stream-mmap コマンドを使用して v4l2 ストリームを取得できました。video0からもキャプチャして確認しました。 ストリームをディスプレイにプッシュする方法、そのためにどの gstreamer コマンドを使用するか。 これについてご意見をいただけませんか。 ありがとう Re: How to push stream to display in iMX95 verdin evk kit 以下のユーザーガイドの7.3.9.6.1 GStreamerパイプラインシングルカメラプレビューの章を参照してください。 https://www.nxp.com/docs/en/ユーザーガイド/UG10163.pdf
View full article
[滥用] 发布者:@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 个回复。
View full article
S32K312 uart AsyncReceiveコールバックイベント情報は、SPI DMAが大量のデータを転送するときに常にエラーになります。 こんにちは、 S32K312 S32DS3.5 RTD4.0.0 プロジェクトでは、SPI0 と SPI1 は DMA モードで動作し、UART1 は割り込みモードで動作します。 UART1 は、12 バイトのフレームを同期送信または非同期受信するときに正常に動作します。 しかし、SPI DMA が大量のデータを転送する場合、uart AsyncReceive イベント情報は常にエラーになります。 何か提案はありますか? Re: S32K312 uart AsyncReceive callback event is always error when SPI DMA transfer mass data はい、それは割り込み優先度の問題です。Uart1 は優先度を上げた後に動作します。 本当にありがとう! Re: S32K312 uart AsyncReceive callback event is always error when SPI DMA transfer mass data こんにちは、 SPI DMA バースト中の UART 非同期受信エラーの原因としては、以下のことが考えられます。 1. 割り込み優先度の問題 - DMA 完了または他の ISR の優先度が同等かそれ以上であるため、UART RX 割り込みはすぐには処理されません。 - 結果: UART RX FIFO がオーバーフロー → オーバーランまたはフレーミング エラー。 LPUART1_IRQn がすべての DMA 関連 IRQ (例: DMATCDx_IRQn) よりも高い優先度 (数値的に低い) を持つことを確認します。割り込みグループ化によりプリエンプションが許可されることを確認します。 2. DMAによるバスの占有 - SPI の eDMA チャネルは、大きなバースト中に AXBS クロスバーを飽和させる可能性があります。 - CPU およびペリフェラル レジスタ アクセス (UART RX 処理を含む) が遅延され、ISR レイテンシが増加します。 eDMAエンジンのストールを許可するようにSPI DMAチャネルを構成する(BWC設定)   BR、ペトル
View full article
[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 を受け取りました。
View full article
[过滤器:smut] Sheetal_Chavan 的帖子正文匹配了 "*该死*",板 "52693forum-board"。 [过滤器:smut] Sheetal_Chavan 的帖子正文匹配了 " *该死* ",板 "52693forum-board"。 帖子主题新的 MCAL API BLE_SendNbuXtal32MTrim 职位机构: 你好@ovidiu_usturoi、 使用 MCAL 1.0.8集成了新的 API BLE_SendNbuXtal32MTrim。我能用 BLE_SendNbuXtal32MTrim API 替换 PLATFORM_SetXtal32MhzTrim 吗? 谢谢。 希塔尔-查万 @MichaelHuhn 正文"狗屎" 匹配的过滤模式"*shit*" 。 用户[id=198962,login=Sheetal_Chavan]发表的帖子有留言 uid 2259626。 链接到帖子:新的 MCAL API BLE_SendNbuXtal32MTrim
View full article
HAB SRK取り消し こんにちは、NXPサポートの皆様、 私はHABv4 (CST 4.0.1)を搭載したRT1176ボードを使用しています。現在、イメージは SRK1 を使用して署名されていますが、代わりに SRK2 を使用するように切り替える必要があります。(SRK1 を取り消す前に、SRK2 でイメージをテストしようとしています) 現在の CSF ファイルには次の内容が含まれています。 文章   [SRKをインストール] ファイル = "..\..\crts\SRK_1_2_3_4_table.bin" ソースインデックス = 0 [CSFKをインストール] ファイル = "CSF1_1_sha256_secp256r1_v3_usr_crt.pem" [CSFの認証] [インストールキー] 検証インデックス = 0 ターゲットインデックス = 2 ファイル = "IMG1_1_sha256_secp256r1_v3_usr_crt.pem" [データの認証] 検証指数 = 2 エンジン = CAAM エンジン構成 = 0 ブロック = 0x80000000 0x0 0x8000 "BOOT.bin" 説明していただけますか: SRK1 から SRK2 に変更する最も簡単な方法は何ですか? CSF ファイルにどのような変更を加える必要がありますか? [Install SRK]のソースインデックスを 0から1に変更するだけでよいですか? ご協力ありがとうございます。 Re: HAB SRK revoke 変更してみました [SRKをインストール] ファイル = "SRK_1_2_3_4_table.bin" ソースインデックス = 1 [CSFKをインストール] ファイル = "CSF2_1_sha256_secp256r1_v3_usr_crt.pem" [インストールキー] 検証インデックス = 0 ターゲットインデックス = 2 ファイル = "IMG2_1_sha256_secp256r1_v3_usr_crt.pem"   最終的にはSRK 2を使用する予定ですが、これらのイベント情報が発生します Re: HAB SRK revoke こんにちは、 はい、SRK1 の使用から SRK2 に変更する最も簡単な方法は、CSF ファイルの [Install SRK] セクションにあるソース インデックス パラメータを 0 から 1 に変更することです。 現在の CSF ファイル内: 「」 [SRKをインストール] ファイル = "..\..\crts\SRK_1_2_3_4_table.bin" ソースインデックス = 0 「」 これを次のように変更する必要があります。 「」 [SRKをインストール] ファイル = "..\..\crts\SRK_1_2_3_4_table.bin" ソースインデックス = 1 「」 ソース インデックス パラメータは、SRK テーブル内のどのキーが使用されるかを決定します。インデックス 0 は SRK1 に対応し、インデックス 1 は SRK2 に対応します。 また、CSF ファイル内の CSF1 と IMG1 の代わりに、CSF2 と IMG2 の適切な証明書ファイルを参照する必要があります。次のファイルを置き換えます。 - 「CSF1_1_sha256_secp256r1_v3_usr_crt.pem」と「CSF2_1_sha256_secp256r1_v3_usr_crt.pem」 - 「IMG1_1_sha256_secp256r1_v3_usr_crt.pem」と「IMG2_1_sha256_secp256r1_v3_usr_crt.pem」 この方法により、SRK1 を永久に取り消す前に SRK2 を使用してテストすることができます。 よろしくお願いします。 Re: HAB SRK revoke @Bio 前回のご説明ありがとうございます。 ファームウェア アップデート中のセキュリティ ロジックと SRK 移行プロセスに関して重要なフォローアップがあります。 現在のシナリオ: 通常のブート: デバイスは SRK1 (インデックス 0) を使用してブートします。信頼チェーンが完全に確立されています: ROM -> ブートローダー (SRK1) -> アプリケーション (SRK1)。 ファームウェアの更新: システムが SRK1 の信頼の下で実行されている間に、SRK2 (インデックス 1) で署名された新しい完全なイメージ (BS + App) を SDRAM にダウンロードします。 検証: 現在実行中のブートローダは、hab_rvt.authenticate_image() を呼び出して、SDRAM 内の新しいイメージを検証します。 私の質問は次のとおりです: 1. ランタイム SRK 切り替えについて: 最初のブートに SRK1 が使用された場合でも、HAB ライブラリで、同じ電源サイクル内でソース インデックス = 1 (SRK2) の新しい [Install SRK] コマンドの実行が許可されることを確認できますか? 2. 同じサイクルでの失効について: この更新プロセス中に、SRK1 を失効させ (SRK_REVOKE eFuse を書き込むことによって)、次に SRK2 をインストールして、新しい RAM イメージの検証を実行するという操作をすべて同じ電源サイクル内で実行することは可能でしょうか?ありがとう Re: HAB SRK revoke @Bio_TICFSL 助けてください、何でも助かります ありがとうございます。
View full article
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
View full article
需要指导: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
View full article
S32DS IDE 是否可以安装 Eclipse Marketplace 我试图为 eclipse 安装 copilot 插件。 我以为 S32DS 是由 eclipse 继承而来的,那么这种操作应该是可行的。 但我发现根本没有日蚀市场。 所以我想知道:是否可以先安装 eclipse marketplace,然后再安装插件(包括 copilot 等)。 或者我们可以说,S32DS 的设计初衷就是不兼容大多数第三方插件? 这个问题应该同时适用于 S32DS-S32PLATFORM 和 S32DS-ARM 第三方(高级)插件 Eclipse IDE 使用和设置 Re: Is is possible for S32DS IDE to install Eclipse Marketplace 你好@noel_0319 在 S32DS 中安装 GitHub Copilot 在技术上是可行的,因为 IDE 是基于 Eclipse 的。不过,由于该功能依赖于 Eclipse,我们不提供官方支持,也不能保证其正常运行。 BR、VaneB Re: Is is possible for S32DS IDE to install Eclipse Marketplace 没关系,我只是想确保恩智浦没有禁止第三方插件的官方限制,否则我的努力都是白费。
View full article
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(端推理为主)的前置补充,本文不涉及到端侧部署与优化。
View full article
Using S32DS V2.2 LIN Configuration Tool, send frame header can't get into interrupt and keeps getting stuck in interval field. The chip package is RTM3.0, using the S32DSV2.2 LIN configuration tool to configure three buses on the S32K148, of which LIN1 and LIN2 are using LPUART0 and LPUART1 respectively, and the transmission and reception of these two are no problem, and can be displayed on the host computer. However, LIN3 is using LPUART3, and before sending the frame header, the node state is LIN_NODE_STATE_IDLE , after sending the frame header has been in the LIN_NODE_STATE_SEND_BREAK_FIELD, has been stuck in the hair interval field, and then the bus state is busy, can't enter the interrupt, please advise how to solve this error. Re: 使用S32DS V2.2LIN配置工具,发送帧头进不去中断一直卡在间隔场 Hi @张宏华, Can you use an oscilloscope to verify the signal path for LIN3: Probe the TX line and confirm that the LIN header (Break → Sync → PID) is transmitted correctly. Measure the RX pin of LPUART3 to ensure the same waveform is present there. This checks that the transceiver and routing are correct. If the RX pin does not show the expected data, inspect: Pin multiplexing (PCR MUX) for TX/RX pads. Physical wiring between the MCU and LIN transceiver. Thank you, BR, Daniel Re: 使用S32DS V2.2LIN配置工具,发送帧头进不去中断一直卡在间隔场 Thanks for your reply, I have solved the problem. My S32K148 chip was falsely soldered so that the pin that gives the lin transceiver a wake up didn't work, very low level error.
View full article
SW32K3_IPCF_4.2.0_D2412 是否支持 S32K328 芯片 基于 S32DS 3.6.3在使用 SW32K3_IPCF_4.2.0_D2412 软件包时,我在 S32K328 芯片上配置 IPCF 时遇到了上面显示的问题:无法配置内核类型和核心索引。请解释一下是什么原因造成了这种情况?还有其他支持 #S32K328 芯片的 IPCF 软件包吗 Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip 你好 查看版本说明,它不直接支持 S32K328。 但我认为用 S32K358 代替没有问题。 我还检查了 IPCF_S32K3_4.2.0_ReleaseNotes_Updated_D2502.pdf,但结果是一样的。由于唯一的区别是锁步,我认为使用 S32K358 没有问题。 我不知道 IPCF 版本不直接支持 S32K328 的原因是什么。 顺祝商祺! Peter Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip 是否有支持 S32K328 的 IPCF 软件包版本?如果不能,如果一个项目是为 S32K324 完全配置的,它能在基于 S32K328 的项目上运行吗? Re: Does the SW32K3_IPCF_4.2.0_D2412 support the S32K328 chip 你好 使用 S32K328 的直接衍生产品 S32K358,以保持兼容性。 顺祝商祺! Peter
View full article
i.MX8ULP の A コアと DDR 周波数を下げる方法 i.MX8ULP の A コア周波数と DDR 周波数の両方を下げたいです。 これを実現する方法と、どのレジスタまたは構成を変更する必要があるかを教えてください。 Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP こんにちは、 次のアプリケーションノート (4.3 DVFS の使用) を参照してください。 i.MX 8ULPの消費電力の最適化 よろしくお願いいたします。 Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP こんにちは@JorgeCas DVFS を使用しており、A コアの CPU 周波数を下げたいと考えています。現在、周波数は808MHzあたりを表示しており、これをできるだけ下げたいと思っています。 以下は私が取得したログです: root@imx8ulp-9x9-lpddr4-evk:~# echo 1 > /sys/devices/platform/imx8ulp-lpm/enable [ 467.490570] DDR enter low frequency mode root@imx8ulp-9x9-lpddr4-evk:~# mhz 808 MHz, 1.2392 nanosec clock A コア周波数を下げる方法と、どの設定または構成を変更する必要があるかを教えてください。 ありがとうございます。 Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP こんにちは、 アプリケーションノートによると、imx8ulp-evk-nd.dtb デバイス ツリーを使用する必要がありますが、ログを見ると、9x9 ボードを使用しているため、変更を行うためのデバイス ツリーがありません。 これを参考にしてデバイスツリーを変更し、もう一度試してください。 https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx8ulp-evk-nd.dts よろしくお願いいたします。 Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP ありがとう@JorgeCas root@imx8ulp-9x9-lpddr4-evk:~# echo 1 > /sys/devices/platform/imx8ulp-lpm/enable root@imx8ulp-9x9-lpddr4-evk:~# mhz 655 MHz, 1.5267 nanosec clock 参考までに、.dtsを更新しましたファイルを変更し、A コアの周波数を 650 MHz まで下げることができるようになりました。A コアの周波数をさらに下げて、理想的には 200 MHz 程度にしたいと思っています。これを実現する方法を教えてください。 Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP こんにちは、 残念ながら、Cortex - A コアの周波数を 650 MHz 未満に下げる方法についてのドキュメントはありません。 アプリケーション ノートによると、最小動作電圧 VDD_DIG1/2 (最小動作周波数) で動作しており、弊社のエンジニアは前回の投稿で、PLL ではより低い周波数は提供されないとコメントしました。 PLL レジスタを手動で変更してみることもできます。 よろしくお願いいたします。 Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP こんにちは、 @JorgeCas ご説明ありがとうございます。Cortex-A コアの PLL でサポートされる最も低い周波数は 650 MHz であると理解しています。 消費電力をさらに削減するために、PLL 構成を手動で変更することを検討したいと思います。i.MX8ULP 上の Cortex-A クロックを制御する PLL (レジスタまたはクロック パス) と、周波数を 650 MHz 未満に下げる場合に推奨される設定や制約があるかどうかを教えてください。 PLL レジスタを安全に変更するためのガイダンスやドキュメントがあれば、大変助かります。 よろしくお願いします、 ヤシュ Re: How to Reduce A-Core and DDR Frequency on i.MX8ULP こんにちは@JorgeCas 、 i.MX8ULP の PLL 設定を変更して Cortex-A コア周波数を 650 MHz 未満に下げることに関する以前の質問を確認します。レビューする機会があったかどうか確認したかったのです。どのようなご指導でもいただければ幸いです。 ありがとう、 ヤシュ
View full article
用于 RTD 的 S32K3xx NXP RTOS 7.0.0 队员们好 我看到SW32K3_S32M27x_RTD_R21-11_5.0.0_D2410 正式支持S32K3xx NXP RTOS 0.4.3 版本。 从那时起,更新的 RTD 版本(6.0.0 和 7.0.0)已经推出。 这些 RTD 版本与 NXP RTOS v0.4.3 兼容吗? 如果不是,我们什么时候可以期待与RTD 7.0.0正式兼容的新恩智浦实时操作系统版本? 谢谢! BR,丹尼尔 RTD 实时操作系统 Re: S32K3xx NXP RTOS for RTD 7.0.0 队员们好 客户希望明天之前得到答复。 您能对此发表评论吗? 谢谢 Re: S32K3xx NXP RTOS for RTD 7.0.0 嗨,丹尼尔 恩智浦实时操作系统和K3xx设备的最后一个版本是在2025年5月发布的,它与RTD 6.0.0 RTM一致(该版本已经发布并由模板团队进行了测试)。从理论上讲,下一个版本计划于2026年11月发布,但由于PL走廊,该版本很可能会被取消。 适用于K3xx设备的恩智浦实时操作系统是演示版,仅用于启用,因此优先级较低。如果有客户提出要求,必须与 PL 讨论。
View full article
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
View full article
i.MX6DL PCIe x1 Gen1 链路训练失败 我们使用的是运行内核 5.10.235 的 i.MX6DL,出现了 PCIe Gen1 链路训练问题。日志显示,链接训练从未完成--链接在不断地重新训练。Debug0 寄存器显示链路不稳定,表明某些东西正在触发信号再训练。 观察到的 LTSSM 过渡: L0 → S_POLL_CONFIG → S_RCVRY_RCVRCFG → S_CFG_LINKWD_START → S_POLL_CONFIG 我们还注意到,尽管 pcii-imx6.c 和 pcii-imx6.c 寄存器的 LnkCap 寄存器值(每个电源周期)都会发生变化,但 LnkCap 寄存器的值并没有改变。和 pcie-designware.c为 Gen1 明确配置链路。还有什么可能会修改这个寄存器? 示例: 情况 1:0x1ffc07c = 值 0x0011cc12 LnkCap:端口 #0,速度 5GT/s,宽度 x1,ASPM L0s/L1,退出延迟 L0s<1us,L1<8us LnkCtl2:目标链接速度 2.5GT/s 情况 2:0x1ffc07c = 值 0x00100001 LnkCap:端口 #0,速度 2.5GT/s,宽度 x1,ASPM L0s/L1,退出延迟 L0s<1us,L1 无限制 LnkCtl2:目标链接速度 2.5GT/s 此外,禁用加扰器似乎能稳定链路: devmem2 0x1ffc710 w 0x00010122 查找以下信息: 1.最初达到 L0 后会触发信号链路再训练什么? 2。还有哪些硬件/软件部分可能会修改 LNKCap? 详情请见附件。 Re: i.MX6DL PCIe x1 Gen1 Link Training Failure 你好 1。关于达到 L0 状态后可能触发链路重新训练的因素: -PCIe 通道上的信号完整性问题可能导致链路不稳定 -电源波动或噪声影响 PCIe PHY -时钟抖动或 PCIe 参考时钟不稳定-与 PCIe 走线阻抗或长度匹配 相关的硬件设计问题 -可能引发不必要的重新训练的软件/驱动程序错误 2. 对于波动的 LnkCap 寄存器值: -寄存器可以通过硬件初始化序列和软件驱动程序进行修改 -在 i.MX6 PCIe 实现中,都是 pci-imx6.c和 pcie-designware.c尝试配置链路参数 -链路能力协商在训练期间进行,值可能会根据终端设备报告的内容进行调整。 您观察到禁用加扰器会稳定链路 (devmem2 0x1ffc710 w 0x00010122),这表明存在潜在的信号完整性或时钟问题。这与之前通过硬件调整解决 i.MX6 平台 PCIe 链路稳定性问题的情况一致。 我建议查阅 i.MX 6Dual/6Quad 和 i.MX 6Solo/6DualLite " 的应用笔记 AN4784 " PCIe 认证指南,其中包含专门针对 i.MX6DL 平台的详细PCIe SERDES 设置信息。本文档提供全面的 PCIe 认证指导,有助于解决间歇性链路培训故障。 对于特定的持续再训练问题,请考虑: -验证 PCIe 参考时钟信号质量和抖动 -检查 PCB 设计中的走线长度是否匹配-确认 PCIe 通道上的端接和阻抗正确 -检查负载条件 下的电力轨道 稳定性您看到的 LNKCap 寄存器修改可能与初始化序列期间的硬件级寄存器访问有关,可能受到 PHY 校准变化的影响。 此致 Re: i.MX6DL PCIe x1 Gen1 Link Training Failure 再补充一些细节。 根据下面的观察结果,禁用加扰器时 Gen1 链路是稳定的。有没有办法强制主机只进行第一代训练,而不尝试第二代? * LnkCap is 5GT/s root# lspci -s 00:00.0 -vv |grep LnkCap LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 root# devmem2 0x1ffc07c /dev/mem opened. Memory mapped at address 0xb6f5c000. Read at address 0x01FFC07C (0xb6f5c07c): 0x0011CC12 <<< gen2 root# ltssm_debug.sh |grep curr LTSSM current state | 0x7 | S_CFG_LINKWD_START LTSSM current state | 0x11 | S_L0 LTSSM current state | 0x7 | S_CFG_LINKWD_START LTSSM current state | 0xf | S_RCVRY_RCVRCFG * Setting Lnkcap to gen1 but value is getting overwritten root# devmem2 0x1ffc07c w 0x00100011 root# devmem2 0x1ffc07c /dev/mem opened. Memory mapped at address 0xb6fb1000. Read at address 0x01FFC07C (0xb6fb107c): 0x0011CC12 root# ltssm_debug.sh |grep curr LTSSM current state | 0x7 | S_CFG_LINKWD_START LTSSM current state | 0xf | S_RCVRY_RCVRCFG LTSSM current state | 0x7 | S_CFG_LINKWD_START * Disable scrambler root# devmem2 0x1ffc710 w 0x00010122 root# devmem2 0x1ffc710 /dev/mem opened. Memory mapped at address 0xb6f66000. Read at address 0x01FFC710 (0xb6f66710): 0x00010122 * LnkCap was set to Gen1 again, and the value remains stable. root# devmem2 0x1ffc07c w 0x00100011 root# devmem2 0x1ffc07c /dev/mem opened. Memory mapped at address 0xb6f0a000. Read at address 0x01FFC07C (0xb6f0a07c): 0x00100011 * Gen1 changes reflected here root# lspci -s 00:00.0 -vv |grep LnkCap LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM not supported root:~# ltssm_debug.sh |grep curr LTSSM current state | 0x11 | S_L0 LTSSM current state | 0x11 | S_L0 Link stable. 谢谢! Re: i.MX6DL PCIe x1 Gen1 Link Training Failure 你好 感谢您的指点。 但是,如果我们强制将链路速度设为 Gen1,那么在什么情况下,硬件仍能将链路能力宣传为 Gen2 并启用ASPM 相关选项? 例如,我们看到 LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <1us, L1 <8us 我们还在训练序列中观察到5 GT/s和自主变化 TS1。 TS1/TS2 日志附后。 谢谢!
View full article
RTD 0.4.5 用の動作する S32K566 MRAM ドライバの例 Schaeffler をサポートするには、Schaeffler が使用している RTD 0.4.5 用の MRAM ドライバの例が必要です。RTD パッケージで提供される例はそのままでは動作せず、ビルドできません。 目的は MRAM への書き込みをテストできるようにすることですが、Schaeffler 社からはこれが機能するかどうか疑問の声が上がっています。 よろしくお願いします。 優先度: 重要 RTD Re: Working S32K566 MRAM driver example for RTD 0.4.5 こんにちは@nxp52415さん、 0.8.0 CD03 パッケージバージョンの S32DS で例を確認しました。おっしゃるとおり、ビルド エラーも表示されます。このエラーを修正するには、以下の点を変更できます。 1. クロックツールとMCU構成の「Get Clock Frequency API」で「有効」を選択します。 2. Mclモジュールを追加し、「CACHEサポートを有効にする」を選択します。 3. コードを生成してプロジェクトをビルドすると、エラーが表示されます。 修正: 「NaNU」を 0U に変更し、プロジェクトを再ビルドします。 よろしくお願いいたします。 ダン Re: Working S32K566 MRAM driver example for RTD 0.4.5 こんにちは@nxp52415さん、 MRAM の例は、0.8.0 CD03 パッケージ バージョンでテストおよび検証されました。ユーザーはこれらの例を参照できます。 バージョン 0.4.5 では、この例をビルドするには、ユーザーは以下のようにパスを設定する必要があります。 よろしくお願いいたします。 ダン Re: Working S32K566 MRAM driver example for RTD 0.4.5 こんにちは、ダン。 ありがとうございます。ただし、私は S32D の例を参照しています。これらを構築可能にするヒントもお持ちですか? 0.8.0 CD03 MRAM の例もビルドされません。 よろしくお願いします。 Re: Working S32K566 MRAM driver example for RTD 0.4.5 ありがとうございます、うまくいきました!
View full article
错误:设备是安全的。清除至不安全状态 你好,团队、 我正在使用 A12323 文档测试 S32K144 上的 A/B 分区。 首先,我将 S32K144_Memory_Partition 项目闪存到 RAM 中。 然后,我将 S32K144_FOTA_Gateway_example 闪存到 Flash 中。 在同一个板上,我尝试刷新 CAN 应用程序。第一次就成功了。 但是,当我再次尝试刷新同一个应用程序时,它失败了,错误是:“设备是安全的。擦除到不安全的地方。” 现在我无法闪烁任何东西。 谢谢。 Re: error: Device is secure. Erase to unsecure 你好@纳维娜 正如我在前一个主题中所写的那样: 您有读取 MDM-AP 的 Segger J-Link 探头或劳特巴赫调试器吗?遗憾的是,Pemicro 无法做到这一点。 在极少数情况下,设备可以被锁定。请查看此主题: https://community.nxp.com/t5/S32K/Unbricking-S32K146/m-p/937227 要确认这一点,有必要阅读 MDM-AP。
View full article
供客户端写入 iMX8MP 的自由 OTP 寄存器 你好 , 我 需要 能 写 的 OTP 寄存器 阅读 主 板 IMX8MP 的 PCBA 修订版 。 例如,我需要在寄存器 XX 中写一个数字 1、3 或 5,具体取决于生产线上板的版本。 并将其读入 uboot/kernel 以使用相应的 DTS 我是否正确理解我可以将通用熔丝寄存器 #9 用于我的目的?   i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: Free OTP registers for writing by client to iMX8MP 您好, 是的,你可以使用通用熔丝来实现你的目的。 此致 哈维
View full article