Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
SJA1110: 適合性試験に合格しませんでした こんにちは、NXPコミュニティの皆さん、 現在、 SJA1110スイッチをgPTPブリッジとしてTSNネットワークの検証を行っています。 検証中に、2つのテストで予期せぬ結果が報告された。これらの結果がSJA1110構成、gPTPの実装、あるいは期待されるブリッジ挙動に関連しているのか、指針をいただけるとありがたいです。 GuilhermeS32G_0-1787109626023.pngGuilhermeS32G_0-1787109626023.pngGuilhermeS32G_0-1787109626023.png GuilhermeS32G_1-1787109759224.pngGuilhermeS32G_1-1787109759224.pngGuilhermeS32G_1-1787109759224.png GuilhermeS32G_2-1787109860338.pngGuilhermeS32G_2-1787109860338.pngGuilhermeS32G_2-1787109860338.png これらの結果をどのように解釈すればよいかについて、ご助言いただければ大変ありがたいです。 よろしくお願いします。 Re: SJA1110: Conformance tests not passing こんにちは、 @GuilhermeS32G さん、 お問い合わせはアプリケーションエンジニアに転送され、さらなる調査のため対応いたします。進捗状況については随時ご報告いたします。 次回からは、 https://support.nxp.com/s/?language= en_US でサポートチケットを開いてください。ここで二人きりで話し合うことができます。 よろしくお願いいたします。 パベル
View full article
JCOP4開発ツールとドキュメントを入手してください NXP JCOP4スマートカード向けのカスタムJava Cardアプレットの開発を開始します。 弊社が現在保有しているカードは以下のとおりです。 NXP S32 デバッグエントリ認証器 JCOP4 アプレットバージョン 01.04.01 私たちは、JCOP4プラットフォーム上で自社のJava Cardアプレットを構築、読み込み、インストール、テストするために必要な開発ツールとドキュメントを探しています。 具体的には、以下のアクセスを求めています: JCOPツール JCシェル JCOP4プラットフォームのエクスポートファイル Java Card開発ライブラリ サンプルアプレットプロジェクト CAPファイルの作成、ロード、インストール、および削除手順 GlobalPlatformカードマネージャー情報 サポートされているJava CardおよびGlobalPlatformバージョンの確認 NXPの Common JCOP Tools のトレーニング・マテリアルを見つけ ました。そこにはJCOP Tools EclipseプラグインとJCShellが参照されています。 https://www.nxp.com/design/design-center/training/TIP-SECURE-ELEMENT-COMMON-JCOP-TOOLS-PART-1 何かアドバイスをいただけますか: JCOP4開発用のJCOP Tools/JCShellパッケージをどのように入手できますか? 秘密保持契約(NDA)またはその他の承認は必要ですか? 対応するJCOP4開発ライブラリ、プラットフォームファイル、ドキュメントはどこで入手できますか? これらのリソースがNXPから直接提供されなくなった場合、それらを入手する推奨方法は何ですか? Re: Obtain JCOP4 development tools and documentation こんにちは、 @sameer_chawla さん。 あなたの調子が良いといいのですが。 申し訳ありませんが、これはJCOPデバイスに関する適切なサポートルートではありません。JCOPを支援するリソースは非常に限られているため、残念ながらセキュリティレベルの関係で情報にアクセスできません。 この部分についてさらにサポートが必要な場合は、 お近くの代理店にお問い合わせください。 ご迷惑をおかけして大変申し訳ございません。 よろしくお願いいたします。 エドゥアルド。
View full article
iMX95上のMIPI-DSIにはクロック出力がありません Software summary ------------------------------------------------------------ Bootloader: U-Boot Kernel version: 6.6.138-7.6.1-devel #1 SMP PREEMPT Fri May 8 12:46:27 UTC 2026 Kernel command line: root=PARTUUID=74fae1d2-02 ro rootwait console=tty1 console=ttyLP0,115200 Distro name: NAME="TDX Wayland with XWayland Upstream" Distro version: VERSION_ID=7.6.1-devel-20260728203137-build.0 Distro variant: - Hostname: bmr-verdin-imx95-08828817 ------------------------------------------------------------ Hardware info ------------------------------------------------------------ HW model: Toradex Verdin iMX95 WB on Verdin Development Board Toradex version: 0089 V1.0C Serial number: 08828817 Processor arch: aarch64 ------------------------------------------------------------ Toradex Verdin iMX95を搭載したカスタムキャリアボードをご用意しております。私たちはカスタマイズを施したToradexマルチメディアイメージを実行しています(ベースとなるデバイスツリーはimx95-verdin-wifi-dev.dtsです)。 YES Optoelectronicsのカスタムディスプレイ(7インチ、1024x600)があり、これはMIPI-DSI 4レーンインターフェースです。Raydium rm67191のデバイスツリーとドライバーモデルを出発点として使いました。起動時に電源のタイミングを正しく設定でき、バックライトも点灯し、BISTも動作します(ディスプレイにピンがあり、BIST用に高く引くことができます)ので、ディスプレイは動作していると思います。 4つのデータレーンはすべてシングルエンド動作を示しているが、CLKラインは0ボルトである。電源投入時、CLKラインは約200mVから始まり、その後少しの間1.2ボルトまで上昇しますが、その後0ボルトになり、0ボルトのままになります。 Verdin SoMが動作するのは、RVT70HSDNWCA0ディスプレイをMallowキャリアボードで動作させることができるからです。 ドライバーはプローブを経→てパネルを追加→モードを取得し→準備→有効にします。 もしかして、どこかで時計の電源を入れ忘れたり、設定し忘れたりしているのでしょうか? CLK信号(P信号とN信号の両方)が0ボルトの場合、それはどういう意味ですか? 私のオーバーレイはこんな感じです /dts-v1/; /plugin/; &mipi_dsi { status = "okay"; panel@0 { compatible = "yes,ytc700tlbd"; reg = <0>; reset-gpios = <&gpio2 17 1>;//GPIO_ACTIVE_HIGH>; power-supply = <&reg_vcc_disp_dvdd>; backlight = <&lvds_backlight>; dsi-lanes = <4>; port@0 { reg = <0>; panel1_in: endpoint { remote-endpoint = <&mipi1_panel_out>; }; }; }; ports { /delete-node/ port@1; port@1 { reg = <1>; mipi1_panel_out: endpoint { remote-endpoint = <&panel1_in>; }; }; }; }; &displaymix_irqsteer { status = "okay"; }; &dpu { assigned-clocks = <&scmi_clk 80>, //IMX95_CLK_DISP1PIX>, <&scmi_clk 18>, //IMX95_CLK_VIDEOPLL1_VCO>, <&scmi_clk 19>; //IMX95_CLK_VIDEOPLL1>; assigned-clock-parents = <&scmi_clk 19>; //IMX95_CLK_VIDEOPLL1>; assigned-clock-rates = <0>, <3360000000>, <420000000>; status = "okay"; }; &pixel_interleaver { #address-cells = <1>; #size-cells = <0>; status = "okay"; channel@0 { reg = <0>; status = "okay"; }; }; &display_pixel_link { status = "okay"; }; 誰か、iMX95でMIPI-DSIディスプレイを動作させられたか確認できますか? どんな助けでもいただければ幸いです! グラフィックスとディスプレイ Linux マルチメディア Re: MIPI-DSI on an iMX95 no clock output また、私の時計の概要は以下のようになっています。 cat /sys/kernel/debug/clk/clk_summary | grep -iE "mipi|dsi|dpu|display" ldbpll_vco 0 0 0 4800000000 0 0 50000 Y 4b400000.display-controller ldb_vco ldb_pll_div7 0 0 0 342857142 0 0 50000 Y 4b400000.display-controller ldb mipiphypllbypas 0 0 0 420000000 0 0 50000 Y deviceless no_connection_id disp1pix 1 1 0 46666666 0 0 50000 Y 4b400000.display-controller pix dispapb 4 5 0 133333333 0 0 50000 Y 4b400000.display-controller apb camapb 3 6 0 133333333 0 0 50000 Y 4acf0000.dsi pclk dispocram 1 1 0 400000000 0 0 50000 Y 4b400000.display-controller ocram dispaxi 1 1 0 800000000 0 0 50000 Y 4b400000.display-controller axi mipitestbyte 0 0 0 24000000 0 0 50000 Y deviceless no_connection_id mipiphypllref 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi ref mipiphycfg 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi cfg Re: MIPI-DSI on an iMX95 no clock output 目標ピクセルクロックは51.2MHzです。 Re: MIPI-DSI on an iMX95 no clock output こんにちは、 @dastotzさん 画面のピクセルクロックを共有してください。 よろしくお願いします、 志明 Re: MIPI-DSI on an iMX95 no clock output こんにちは、 @dastotzさん 51.2 MHzのピクセルクロックの場合、PLL VCOは1792 MHz 、PLL OUTは256 MHzである必要があります。デバイスツリーを更新してからログを確認し、PLL VCO、PLL OUT、ピクセルクロックが正しいか確認できます。 よろしくお願いします、 志明 Re: MIPI-DSI on an iMX95 no clock output 高速ビデオデータはまだ入手できていない。CLK信号は0ボルトのままであり、DATA信号はシングルエンド(差動出力なし)です。 MIPI-DSIインターフェースが高速モードに切り替わるには、ディスプレイがLPMコマンドに応答する必要があるのでしょうか? Re: MIPI-DSI on an iMX95 no clock output 更新した時計の概要は以下のとおりです。 cat /sys/kernel/debug/clk/clk_summary | grep -iE "mipi|dsi|dpu|display|video" ldbpll_vco 0 0 0 4800000000 0 0 50000 Y 4b400000.display-controller ldb_vco ldb_pll_div7 0 0 0 342857142 0 0 50000 Y 4b400000.display-controller ldb videopll1_vco 1 1 0 2520000000 0 0 50000 Y deviceless no_connection_id videopll1 1 1 0 252000000 0 0 50000 Y deviceless no_connection_id disp1pix 1 1 0 50400000 0 0 50000 Y 4b400000.display-controller pix 4acf0000.dsi pix mipiphypllbypas 0 0 0 252000000 0 0 50000 Y deviceless no_connection_id dispapb 4 5 0 133333333 0 0 50000 Y 4b400000.display-controller apb camapb 3 6 0 133333333 0 0 50000 Y 4acf0000.dsi pclk dispocram 1 1 0 400000000 0 0 50000 Y 4b400000.display-controller ocram dispaxi 1 1 0 800000000 0 0 50000 Y 4b400000.display-controller axi mipitestbyte 0 0 0 24000000 0 0 50000 Y deviceless no_connection_id mipiphypllref 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi ref mipiphycfg 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi cfg Re: MIPI-DSI on an iMX95 no clock output こんにちは、 @dastotzさん 51.2MHzのピクセルクロックを得るには、この設定を試してみてください。 &dpu { assigned-clocks = <&scmi_clk IMX95_CLK_DISP1PIX>, <&scmi_clk IMX95_CLK_VIDEOPLL1_VCO>, <&scmi_clk IMX95_CLK_VIDEOPLL1>; assigned-clock-parents = <&scmi_clk IMX95_CLK_VIDEOPLL1>; assigned-clock-rates = <0>, <3276800000>, <409600000>; }; root@imx95evk:~# cat /sys/kernel/debug/clk/clk_summary | grep -iE "mipi|dsi|dpu|display|video" ldbpll_vco 0 0 0 4800000000 0 0 50000 Y 4b400000.display-controller ldb_vco ldb_pll_div7 0 0 0 342857142 0 0 50000 Y 4b400000.display-controller ldb videopll1_vco 1 1 0 3276800000 0 0 50000 Y deviceless no_connection_id videopll1 1 1 0 409600000 0 0 50000 Y deviceless no_connection_id disp1pix 1 1 0 51200000 0 0 50000 Y 4b400000.display-controller pix 4acf0000.dsi pix しかし、NXPは1024x600の解像度を検証していません。NXPのlinux-imxリポジトリへの最近のコミットによると、NXPが検証したモードは以下の通りです。 3 static bool imx95_dsi_is_mode_clock_valid(unsigned int clock) 914 { 915 switch (clock) { 916 case 25200: /* 640x480@60Hz (VGA) */ 917 case 27000: /* [email protected], [email protected] (NTSC) */ 918 case 27027: /* 480p@60Hz, 720x480@60Hz */ 919 case 40000: /* 800x600@60Hz (SVGA) */ 920 case 54000: /* [email protected], 720x576@100Hz */ 921 case 54054: /* 480p@120Hz, 720x480@120Hz */ 922 case 65000: /* 1024x768@60Hz (XGA) */ 923 case 74176: /* [email protected], [email protected] */ 924 case 74250: /* 720p@60Hz, 1280x720@60Hz */ 925 case 108000: /* [email protected], 1280x1024@60Hz (SXGA) */ 926 case 108108: /* 480p@240Hz, 720x480@240Hz */ 927 case 132000: /* 1024x768@120Hz (XGA) */ 928 case 148352: /* [email protected], [email protected] */ 929 case 148500: /* 1080p@60Hz, 1920x1080@60Hz */ 930 case 297000: /* 2160p@30Hz, 1080p@120Hz, 3840x2160@30Hz (4K) */ 931 return true; 932 default: 933 return false; 934 } 935 } こちらの公開コードによると: https://github.com/nxp-imx/linux-imx/blob/lf-6.18.20-2.0.0/drivers/gpu/drm/bridge/imx/imx95-mipi-dsi.c#L883 クロックが検証済みクロックでない場合、DSIはクロックを生成しません。このラインを修正して、モード>クロック=51200の状態でMODE_OKに戻すように試みることもできます。 よろしくお願いします、 志明 Re: MIPI-DSI on an iMX95 no clock output おっしゃる通りです。まさにそれが問題でした!オシロスコープにクロック信号が表示されるかどうか試してみたくて、それらのクロックレートのうちの1つを選んでみたところ、ちゃんと表示されました!最終的な設定が確定し、希望するクロックレートに近づいたら、この投稿を更新してこれを解決策として承認します。ご助力ありがとうございます! Re: MIPI-DSI on an iMX95 no clock output 問題はimx95-mipi-dsi.cでした。私が使っていたドライバ(パッチがいくつか入っていない古いものでした)。ご提案いただいたドライバーにパッチを当て、DPUをご提案の設定に設定したら、51.2MHzのピクセルクロックを得ました。ご協力ありがとうございました!
View full article
iMX95 上的 MIPI-DSI 没有时钟输出 Software summary ------------------------------------------------------------ Bootloader: U-Boot Kernel version: 6.6.138-7.6.1-devel #1 SMP PREEMPT Fri May 8 12:46:27 UTC 2026 Kernel command line: root=PARTUUID=74fae1d2-02 ro rootwait console=tty1 console=ttyLP0,115200 Distro name: NAME="TDX Wayland with XWayland Upstream" Distro version: VERSION_ID=7.6.1-devel-20260728203137-build.0 Distro variant: - Hostname: bmr-verdin-imx95-08828817 ------------------------------------------------------------ Hardware info ------------------------------------------------------------ HW model: Toradex Verdin iMX95 WB on Verdin Development Board Toradex version: 0089 V1.0C Serial number: 08828817 Processor arch: aarch64 ------------------------------------------------------------ 我们有一块定制的载板,上面装有 Toradex Verdin iMX95。我们正在运行经过定制的 Toradex 多媒体映像(基本设备树为 imx95-verdin-wifi-dev.dts)。 我们有一块来自 YES Optoelectronics 的定制显示屏(7 英寸 1024x600),它采用 MIPI-DSI 4 通道接口。我以raydium rm67191的设备树和驱动程序模型为起点。我能够在启动时正确设置电源时序,背光灯会亮起,并且 BIST 功能正常(显示屏上有一个引脚可以拉高以启动 BIST),所以我认为显示屏是可以正常工作的。 所有四个数据通道均显示单端活动,但时钟线为 0 伏。上电时,CLK 线电压从大约 200mV 开始,然后短暂地升至 1.2 伏,但随后降至 0 伏并保持在 0 伏。 我知道 Verdin SoM 可以工作,因为我可以让 RVT70HSDNWCA0 显示屏在 Mallow 载板上工作。 驱动程序依次执行探测 → 添加面板 → 获取模式 → 准备 → 启用。 我是不是忘了打开或设置某个时钟? 当 CLK 信号(P 和 N 均为 0 伏)为 0 伏时,这意味着什么? 我的叠加层看起来像 /dts-v1/; /plugin/; &mipi_dsi { status = "okay"; panel@0 { compatible = "yes,ytc700tlbd"; reg = <0>; reset-gpios = <&gpio2 17 1>;//GPIO_ACTIVE_HIGH>; power-supply = <&reg_vcc_disp_dvdd>; backlight = <&lvds_backlight>; dsi-lanes = <4>; port@0 { reg = <0>; panel1_in: endpoint { remote-endpoint = <&mipi1_panel_out>; }; }; }; ports { /delete-node/ port@1; port@1 { reg = <1>; mipi1_panel_out: endpoint { remote-endpoint = <&panel1_in>; }; }; }; }; &displaymix_irqsteer { status = "okay"; }; &dpu { assigned-clocks = <&scmi_clk 80>, //IMX95_CLK_DISP1PIX>, <&scmi_clk 18>, //IMX95_CLK_VIDEOPLL1_VCO>, <&scmi_clk 19>; //IMX95_CLK_VIDEOPLL1>; assigned-clock-parents = <&scmi_clk 19>; //IMX95_CLK_VIDEOPLL1>; assigned-clock-rates = <0>, <3360000000>, <420000000>; status = "okay"; }; &pixel_interleaver { #address-cells = <1>; #size-cells = <0>; status = "okay"; channel@0 { reg = <0>; status = "okay"; }; }; &display_pixel_link { status = "okay"; }; 有人能确认一下他们是否成功让 MIPI-DSI 显示器与 iMX95 配合使用吗? 若能得到任何帮助,我将不胜感激! 图形与显示 Linux 多媒体 Re: MIPI-DSI on an iMX95 no clock output 另外,这是我的时钟概览。 cat /sys/kernel/debug/clk/clk_summary | grep -iE "mipi|dsi|dpu|display" ldbpll_vco 0 0 0 4800000000 0 0 50000 Y 4b400000.display-controller ldb_vco ldb_pll_div7 0 0 0 342857142 0 0 50000 Y 4b400000.display-controller ldb mipiphypllbypas 0 0 0 420000000 0 0 50000 Y deviceless no_connection_id disp1pix 1 1 0 46666666 0 0 50000 Y 4b400000.display-controller pix dispapb 4 5 0 133333333 0 0 50000 Y 4b400000.display-controller apb camapb 3 6 0 133333333 0 0 50000 Y 4acf0000.dsi pclk dispocram 1 1 0 400000000 0 0 50000 Y 4b400000.display-controller ocram dispaxi 1 1 0 800000000 0 0 50000 Y 4b400000.display-controller axi mipitestbyte 0 0 0 24000000 0 0 50000 Y deviceless no_connection_id mipiphypllref 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi ref mipiphycfg 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi cfg Re: MIPI-DSI on an iMX95 no clock output 目标像素时钟频率为 51.2MHz。 Re: MIPI-DSI on an iMX95 no clock output 嗨@dastotz 请分享一下屏幕像素时钟。 此致, 志明 Re: MIPI-DSI on an iMX95 no clock output 以下是我更新后的时钟汇总信息。 cat /sys/kernel/debug/clk/clk_summary | grep -iE "mipi|dsi|dpu|display|video" ldbpll_vco 0 0 0 4800000000 0 0 50000 Y 4b400000.display-controller ldb_vco ldb_pll_div7 0 0 0 342857142 0 0 50000 Y 4b400000.display-controller ldb videopll1_vco 1 1 0 2520000000 0 0 50000 Y deviceless no_connection_id videopll1 1 1 0 252000000 0 0 50000 Y deviceless no_connection_id disp1pix 1 1 0 50400000 0 0 50000 Y 4b400000.display-controller pix 4acf0000.dsi pix mipiphypllbypas 0 0 0 252000000 0 0 50000 Y deviceless no_connection_id dispapb 4 5 0 133333333 0 0 50000 Y 4b400000.display-controller apb camapb 3 6 0 133333333 0 0 50000 Y 4acf0000.dsi pclk dispocram 1 1 0 400000000 0 0 50000 Y 4b400000.display-controller ocram dispaxi 1 1 0 800000000 0 0 50000 Y 4b400000.display-controller axi mipitestbyte 0 0 0 24000000 0 0 50000 Y deviceless no_connection_id mipiphypllref 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi ref mipiphycfg 1 1 0 24000000 0 0 50000 Y 4acf0000.dsi cfg Re: MIPI-DSI on an iMX95 no clock output 目前仍无高速视频数据。CLK 信号保持在 0 伏,DATA 信号为单端(无差分输出)。 MIPI-DSI 接口切换到高速模式时,显示器是否需要响应 LPM 命令? Re: MIPI-DSI on an iMX95 no clock output 嗨@dastotz 对于51.2 MHz像素时钟,PLL VCO 应为1792 MHz ,PLL OUT 应为256 MHz 。您可以尝试更新设备树,然后检查日志,看看 PLL VCO、PLL OUT 和像素时钟是否正确。 此致, 志明 Re: MIPI-DSI on an iMX95 no clock output 您说得完全正确,问题就在这里!我选择其中一个时钟频率只是想看看示波器能不能显示时钟信号,结果现在显示出来了!一旦我将时钟频率调整到接近理想值,我将更新此帖子并确认最终设置,并将其视为解决方案。非常感谢您的帮助! Re: MIPI-DSI on an iMX95 no clock output 嗨@dastotz 请尝试使用此配置以获得 51.2MHz 像素时钟。 &dpu { assigned-clocks = <&scmi_clk IMX95_CLK_DISP1PIX>, <&scmi_clk IMX95_CLK_VIDEOPLL1_VCO>, <&scmi_clk IMX95_CLK_VIDEOPLL1>; assigned-clock-parents = <&scmi_clk IMX95_CLK_VIDEOPLL1>; assigned-clock-rates = <0>, <3276800000>, <409600000>; }; root@imx95evk:~# cat /sys/kernel/debug/clk/clk_summary | grep -iE "mipi|dsi|dpu|display|video" ldbpll_vco 0 0 0 4800000000 0 0 50000 Y 4b400000.display-controller ldb_vco ldb_pll_div7 0 0 0 342857142 0 0 50000 Y 4b400000.display-controller ldb videopll1_vco 1 1 0 3276800000 0 0 50000 Y deviceless no_connection_id videopll1 1 1 0 409600000 0 0 50000 Y deviceless no_connection_id disp1pix 1 1 0 51200000 0 0 50000 Y 4b400000.display-controller pix 4acf0000.dsi pix 但恩智浦半导体并未验证1024x600分辨率。根据最近提交到 NXP linux-imx 代码库的内容,NXP 验证的模式如下: 3 static bool imx95_dsi_is_mode_clock_valid(unsigned int clock) 914 { 915 switch (clock) { 916 case 25200: /* 640x480@60Hz (VGA) */ 917 case 27000: /* [email protected], [email protected] (NTSC) */ 918 case 27027: /* 480p@60Hz, 720x480@60Hz */ 919 case 40000: /* 800x600@60Hz (SVGA) */ 920 case 54000: /* [email protected], 720x576@100Hz */ 921 case 54054: /* 480p@120Hz, 720x480@120Hz */ 922 case 65000: /* 1024x768@60Hz (XGA) */ 923 case 74176: /* [email protected], [email protected] */ 924 case 74250: /* 720p@60Hz, 1280x720@60Hz */ 925 case 108000: /* [email protected], 1280x1024@60Hz (SXGA) */ 926 case 108108: /* 480p@240Hz, 720x480@240Hz */ 927 case 132000: /* 1024x768@120Hz (XGA) */ 928 case 148352: /* [email protected], [email protected] */ 929 case 148500: /* 1080p@60Hz, 1920x1080@60Hz */ 930 case 297000: /* 2160p@30Hz, 1080p@120Hz, 3840x2160@30Hz (4K) */ 931 return true; 932 default: 933 return false; 934 } 935 } 根据此处的公开代码: https://github.com/nxp-imx/linux-imx/blob/lf-6.18.20-2.0.0/drivers/gpu/drm/bridge/imx/imx95-mipi-dsi.c#L883 如果时钟未经验证,DSI 将不会生成时钟。您可以尝试修改此行,使其在mode->clock = 51200时返回MODE_OK 。 此致, 志明 Re: MIPI-DSI on an iMX95 no clock output 问题出在 imx95-mipi-dsi.c 文件上。我之前用的驱动程序(版本比较旧,缺少一些补丁)。我按照你的建议安装了驱动程序,并将DPU设置调整为你建议的参数,最终获得了51.2MHz的像素时钟频率。谢谢你的帮助!
View full article
获取 JCOP4 开发工具和文档 我们正在为NXP JCOP4智能卡开发定制的Java Card小程序。 我们现有的卡片包括: NXP S32 调试输入验证芯片 联合行动计划4 小程序版本 01.04.01 我们正在寻找在 JCOP4 平台上构建、加载、安装和测试我们自己的 Java Card 小程序所需的开发工具和文档。 具体而言,我们需要获得以下权限: JCOP工具 JCShell JCOP4平台导出文件 Java Card 开发库 示例小程序项目 CAP 文件版本、加载、安装和删除说明 全球平台卡管理器信息 确认支持的 Java Card 和 GlobalPlatform 版本 我们找到了 NXP 提供的通用 JCOP 工具培训资料,其中提到了 JCOP 工具 Eclipse 插件和 JCShell: https://www.nxp.com/design/design-center/training/TIP-SECURE-ELEMENT-COMMON-JCOP-TOOLS-PART-1 请问您能否提供以下建议: 如何获取用于 JCOP4 开发的 JCOP Tools/JCShell 软件包? 是否需要签署保密协议或其他批准文件? 我们可以在哪里获取相应的 JCOP4 开发库、平台文件和文档? 如果这些资源不再由 NXP 直接提供,那么获取这些资源的推荐途径是什么? Re: Obtain JCOP4 development tools and documentation 你好@sameer_chawla , 希望你一切都好。 非常抱歉,这不是解决任何与 JCOP 设备相关问题的正确支持途径。由于支持 JCOP 的资源受到严格限制,很遗憾,由于安全级别的原因,我无法访问相关信息。 如需这方面的进一步支持,请联系您当地的代理商。 由此给您带来的不便,我深表歉意。 问候, 爱德华多。
View full article
SJA1110:一致性测试未通过 NXP社区的各位朋友,大家好! 我们目前正在验证使用SJA1110 交换机作为 gPTP 网桥的TSN 网络。 验证过程中,两项测试报告了意外结果。我们希望能得到一些指导,以了解这些结果是否与 SJA1110 配置、gPTP 实现或预期的桥接行为有关。 GuilhermeS32G_0-1787109626023.pngGuilhermeS32G_0-1787109626023.pngGuilhermeS32G_0-1787109626023.png GuilhermeS32G_1-1787109759224.pngGuilhermeS32G_1-1787109759224.pngGuilhermeS32G_1-1787109759224.png GuilhermeS32G_2-1787109860338.pngGuilhermeS32G_2-1787109860338.pngGuilhermeS32G_2-1787109860338.png 非常感谢您能就如何解读这些结果提供一些指导。 谢谢! Re: SJA1110: Conformance tests not passing 你好@GuilhermeS32G , 您的查询已转交给我们的应用工程师进行进一步调查。我会随时向您汇报进展情况。 下次请通过https://support.nxp.com/s/?language=en_US提交支持工单我们可以私下讨论的地方。 顺祝商祺! 帕维尔
View full article
S32K388 JumpApp Only runs with core 0 active. I created a bootloader program and placed it at addresses 0x400000 to 0x420000. Whenever I update the program via serial port, only Core 0 continues to run. How can I enable the other cores to also run? S32_SCB->VTOR = 0x00422000;     __asm volatile(         "msr msp, %0"         :         : "r"(appStack)         : "memory");     ((pFunction)appEntry)(); Re: S32K388 JumpApp Only runs with core 0 active. Hi @zhangyu5454, You can enable the cores in the startup code. Refer to the startup code (startup_cm7.s) of the default S32DS project. For example, if CM7_2_ENABLE == 1, the startup code will enable CM7_2 during system startup. The cores can also be enabled later from the CM7_0 application, either by configuring the relevant registers directly or by using the MCU MCAL driver or the Power_Ip driver. Refer to this example: https://community.nxp.com/t5/S32K-Knowledge-Base/S32K358-Multicore-Start-CM7-2-from-CM7-0/ta-p/1923889 BR, Daniel Re: S32K388 JumpApp Only runs with core 0 active. Thank you for your response. I have tried using Power_Ip, but when the line “Power_Ip_Init(&Power_Ip_HwIPsConfigPB);” appears in the program, the debugging process automatically ends. Moreover, even when I don’t press the reset button, the reset light remains illuminated, resulting in the device not being able to operate at all. When I use IP_MC_ME, the program runs normally, but it doesn’t produce any results. The other components also fail to start. This code snippet seems not to work well for model 388. Re: S32K388 JumpApp Only runs with core 0 active. Hi @zhangyu5454, If the MCU goes through a system reset, you need to read the source of the reset. You can call  Power_Ip_GetResetReason(); at the beginning of main() before  Power_Ip_Init(); Likely root cause is the V15 Switched-mode power supply - it must match the HW design. danielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.png BR, Daniel Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 According to your advice, I will implement it in the int main(void) section. Power_Ip_GetResetReason() was called. However, the test results remain unchanged.   int main(void) { Power_Ip_GetResetReason();         Power_Ip_Init(&Power_Ip_HwIPsConfigPB);     Clock_Ip_Init(&Mcu_aClockConfigPB[0]);         Power_Ip_SetMode(&Power_Ip_aModeConfigPB[0]); while (1) { Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 Hi @zhangyu5454, What is the reset reason then? If I had to guess, it would be a POR/LVR. How is V15 powered on the PCB? Do you configure Power_Ip accordingly? Regards, Daniel Thank you. Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 Thanks for your reply. I don't know much about these functions. Is there any related example or tutorial files? I tried to follow the S32K358 example but didn't succeed. Regarding the V15 power supply, I found that it is generated from an external 3.3V through a transistor controlled by a microcontroller to make 1.5V, with 1.1V also generated under microcontroller control. I also noticed that my hardware design doesn't have a 32.768 crystal oscillator, and the program gets stuck in Clock_Ip_ExtOsc.c in the loop do { SxoscStatus = ((Clock_Ip_apxXosc[Instance]->STAT & SXOSC_SXOSC_STAT_OSC_STAT_MASK) >> SXOSC_SXOSC_STAT_OSC_STAT_SHIFT); TimeoutOccurred = Clock_Ip_TimeoutExpired(&StartTime, &ElapsedTime, TimeoutTicks); } while ((0U == SxoscStatus) && (FALSE == TimeoutOccurred)); Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 Hello @zhangyu5454, I understand that you are using an SMPS on the PCB, so it must be enabled in the Configuration Tool: danielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.png danielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.png Regarding SXOSC, make sure it is disabled: danielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.png Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 zhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.png Hello I followed your method to enable V15 and disable SXOSC. However, when debugging reaches the line `IP_PMC->SMPSCONFIG = ConfigValue;`—located within `Power_Ip_PMC_PowerInit`, which is inside `Power_Ip_Init`—the debugging session terminates automatically, and the board's reset indicator LED remains lit with a dim, steady glow. Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 Hello @zhangyu5454, What are the values of ConfigValue in these two writes? IP_PMC->CONFIG = ConfigValue; IP_PMC->SMPSCONFIG = ConfigValue; The MCU is resetting due to an incorrect power mode configuration. Place the following loop at the beginning of main() so that you can debug it after the reset. volatile uint32_t loop = 1; while (loop) { } The loop variable can be modified from the debugger to allow execution to continue. Once the code is halted in the loop, call: Power_Ip_GetResetReason() It should return MCU_POWER_ON_RESET. Also read the Low Voltage Status and Control (LVSC) register to obtain more information about the reset event. Regards, Daniel Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 Hi @zhangyu5454, I cannot reproduce this issue on my EVB with the config values you shared. Are you using the XS32K388EVB-Q289? If so, could you please let me know the position of jumper J118? danielmartynek_0-1787229063371.pngdanielmartynek_0-1787229063371.png If you are using a custom board, please share the schematic. If you prefer not to share it here, please create a support ticket and attach the schematic there. Thank you, BR, Daniel
View full article
S32K388 JumpApp 仅在核心 0 处于活动状态时运行。 我创建了一个引导加载程序,并将其放置在地址 0x400000 到 0x420000 处。每次我通过串口更新程序时,只有核心 0 继续运行。如何才能让其他核心也运行起来? S32_SCB->VTOR = 0x00422000; __asm volatile(         "msr msp, % 0" : : "r" (appStack) : “记忆” ); ((pFunction)appEntry)(); Re: S32K388 JumpApp Only runs with core 0 active. 嗨@zhangyu5454 , 您可以在启动代码中启用核心。请参阅默认 S32DS 项目的启动代码(startup_cm7.s)。 例如,如果 CM7_2_ENABLE == 1,则启动代码将在系统启动期间启用 CM7_2。 也可以稍后通过 CM7_0 应用程序启用内核,方法是直接配置相关寄存器,或者使用 MCU MCAL 驱动程序或 Power_Ip 驱动程序。请参考以下示例: https://community.nxp.com/t5/S32K-Knowledge-Base/S32K358-Multicore-Start-CM7-2-from-CM7-0/ta-p/1923889 BR,丹尼尔 Re: S32K388 JumpApp Only runs with core 0 active. 感谢您的回复。我尝试使用 Power_Ip,但是当程序中出现“Power_Ip_Init(&Power_Ip_HwIPsConfigPB);”这行代码时,调试过程会自动结束。此外,即使我不按下 RESET 按钮,RESET 指示灯仍然亮着,导致设备完全无法运行。当我使用 IP_MC_ME 时,程序运行正常,但没有产生任何结果。其他元器件也无法启动。这段代码似乎对 388 型号不太适用。 Re: S32K388 JumpApp Only runs with core 0 active. 嗨@zhangyu5454 , 如果 MCU 发生系统RESET,则需要读取RESET源。 您可以致电 Power_Ip_GetResetReason(); 在 main() 函数开头之前 Power_Ip_Init(); 根本原因可能是 V15 开关电源——它必须与硬件设计相匹配。 danielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.png BR,丹尼尔 Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 根据您的建议,我将在 int main(void) 部分中实现它。调用了 Power_Ip_GetResetReason() 函数。然而,测试结果依然没有改变。   int main(void) { Power_Ip_GetResetReason(); Power_Ip_Init(&Power_Ip_HwIPsConfigPB); Clock_Ip_Init(&Mcu_aClockConfigPB[0]); Power_Ip_SetMode(&Power_Ip_aModeConfigPB[0]); 当(1) { Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 嗨@zhangyu5454 , 那么RESET的原因是什么? 如果让我猜的话,应该是POR/LVR。 V15在PCB板上是如何供电的? 您是否已相应地配置 Power_Ip? 此致, 丹尼尔 谢谢! Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 你好@zhangyu5454 , 我知道您在PCB板上使用了SMPS电源,因此必须在配置工具中启用它: danielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.png danielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.png 关于SXOSC,请确保已禁用: danielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.png Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 谢谢你的回复。我不太了解这些功能。是否有相关的示例或教程文件?我尝试按照 S32K358 的示例进行操作,但没有成功。关于 V15 电源,我发现它是由外部 3.3V 电压通过微控制器控制的晶体管产生 1.5V 电压,同时在微控制器控制下还会产生 1.1V 电压。我还注意到我的硬件设计中没有 32.768 晶振(晶体振荡器),程序卡在了 Clock_Ip_ExtOsc.c 的循环中。 做 { SxoscStatus = ((Clock_Ip_apxXosc[Instance]->STAT & SXOSC_SXOSC_STAT_OSC_STAT_MASK) >> SXOSC_SXOSC_STAT_OSC_STAT_SHIFT); TimeoutOccurred = Clock_Ip_TimeoutExpired(&StartTime, &ElapsedTime, TimeoutTicks); } while ((0U == SxoscStatus) && (FALSE == TimeoutOccurred)); Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 你好@zhangyu5454 , 这两次写入操作中 ConfigValue 的值分别是多少? IP_PMC->CONFIG = ConfigValue; IP_PMC->SMPSCONFIG = ConfigValue; 由于电源模式配置错误,MCU正在复位。 将以下循环放在 main() 函数的开头,以便在重置后进行调试。 volatile uint32_t loop = 1; while (loop) { } 可以通过调试器修改循环变量,以允许程序继续执行。 当代码在循环中停止执行时,调用: Power_Ip_GetResetReason() 它应该返回 MCU_POWER_ON_RESET。 另外,请查阅低电压状态和控制(LVSC)寄存器,以获取有关 RESET 事件的更多信息。 此致, 丹尼尔 Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 zhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.png张宇5454_0-1786934052028.png 您好,我按照您的方法启用了V15并禁用了SXOSC。但是,当调试到达 `Power_Ip_PMC_PowerInit` 中的 `IP_PMC->SMPSCONFIG = ConfigValue;` 行(该行位于 `Power_Ip_Init` 内部)时,调试会话会自动终止,并且板载 RESET 指示灯 LED 会保持微弱而稳定的亮光。 Re: S32K388 JumpApp Only runs with core 0 active.#S32K388 嗨@zhangyu5454 , 我用你分享的配置值在我的EVB上无法重现这个问题。 您使用的是 XS32K388EVB-Q289 吗?如果可以的话,请问您能否告知跳线 J118 的位置? danielmartynek_0-1787229063371.pngdanielmartynek_0-1787229063371.png 如果您使用的是定制电路板,请分享原理图。如果您不想在此处分享,请创建支持工单并将原理图附加到工单中。 谢谢! BR,丹尼尔
View full article
S32K312: NMI は Reset_Handler の実行前にトリガーされ、特定の機能 (SW) リセット後にのみトリガーされます デバイス: S32K312 ツールチェーン:Green Hills ELXR(コンパイラ) HSEファームウェア:s32k312_hse_fw_0.13.0_2.55.0_pb250129.bin デバッガ:Lauterbach TRACE32 ソフトウェア:AUTOSAR RTDベースのブートローダー(FBL)+アプリケーション(APP)、2イメージ構造 問題の概要 一部の生産ユニットでは、機能処理の直後にCPUがハングします (ソフトウェア)リセット。同じユニットは破壊的 (電源投入)リセット。このフリーズは、当社の基準品/正常品では再現しません。 NMIがアプリケーションコード実行前に発生している証拠 1) ハングポイントでキャプチャされるCPUコンテキスト(自動スタックされた例外フレーム): - R0-R3 = 0x00000000、R12 = 0x00000000 - LR = 0xFFFFFFFF(デフォルトリセット -> まだBLが実行されていない) - PC = 0x00416904(Reset_Handlerの最初の命令アドレス) - xPSR = 0x01000000 2) SCB->ICSR = 0x00000802 Chibeom_3-1785136456875.pngChibeom_3-1785136456875.pngChibeom_3-1785136456875.png - VECTACTIVE[8:0] = 2 -> NMI は現在アクティブな例外です - RETTOBASE = 1 これは、CPUが現在NMIハンドラ内で実行されていることを確認するものです。 3) NMIオフセットのベクトルテーブルエントリが自分のオフセットを正しく指している デフォルトの例外ハンドラなので、これはベクターではなく本物のNMIイベントです テーブルの破損。 レジスタはすべて同じハング状態(すべてクリーン/非アクティブと読み取られる)でチェックされました。 - MC_RGM_DES = 0x00000000(破壊的なリセットではない) - MC_RGM_FES = 0x20000000(ビット29のみ)(「ソフトウェア機能リセット」のみ) フラグセット、他の関数なし リセットソースフラグが設定されています) - FCCU:STAT、N2AF_STATUS、A2FF_STATUS、N2FF_STATUS、NCF_S0、IRQ_STAT all = 1 0x00000000 - CMU_FCインスタンス0、3、4:SR = 0x00000000(高低周波数フォルトなし) - PMC LVSC = 0x00000000(LVD/HVDフラグなし、ラッチまたはライブ) - ERM(0x4025C000):良好または故障したユニットで読み取れませんでした (おそらく私たちの設定ではクロックゲートされているため)、ERMの状態は未確認です。 質問 1. FCCU / CMU_FC / PMC / MC_RGM以外にNMIの情報源はありますか? アプリケーションのReset_Handlerが実行する前に、 最初の指示? 2. HSEサブシステムはアプリケーションコアとは独立して動作するため、 アプリケーションコアの機能リセットが可能である(ただし、 リセットHSE)を起動して状態の不一致を作り、NMIをトリガーします。 アプリケーションコア? 3. この症状に一致するS32K312の既知の訂正表はありますか?(NMIのみ) 機能/ソフトウェアのリセットで、電源オン時のリセットは一切ありません)。 追加のレジスターの確認や、ドキュメントについての指針はありますか? FCCU/ERM/CMU_FC/PMC以外のNMIの情報源があれば大変ありがたいです。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 ハング状態のレジスタMU_0.MUB CSSR0とMU_1.MUB CSSR0を読み取り、ビット0(NMIC)がどちらかに設定されているか確認していただけますか? よろしくお願い申し上げます。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @danielmartynek さん、 MU_0.MUB / MU_1.MUB CSSR0 をご指摘いただきありがとうございます。 MU_0.MUBとMU_1.MUBの両方のCSSR0(ビット0、NMIC)0x00000000は ハング状態で故障したユニット、したがってMU->NMIリクエストパス(CCR0[NMI] / CSSR0[NMIC])は保留中ではないようです。 しかし、既知の良品ユニットと 故障したユニット(両方とも同じハング状態のアドレス範囲でキャプチャされました)、 一貫した違いが見られました。                                  良好なユニット 不良ユニット MU_0.MUB VER 0x0300000F 0x0300000F (同一) MU_0.MUB PAR 0x20200404 0x20200404 (同一) MU_0.MUB CR 0x00000000 0x00000000 (同一) MU_0.MUB SR 0x00000000 0x00000002 <- MURIP セット MU_1.MUB VER/PAR/CR: 正常ユニットと故障ユニットで同一 MU_1.MUB SR 0x00000000 0x00000002 <- MURIP セット SO、両方のMUインスタンスで、SRビット1(MURIP)は故障した 部分のみに設定されています。一貫して。リファレンス・マニュアルによると、MURIPは次のように示しています。 「プロセッサA」はMUリセットを発行しており、クリアできるのは システムリセット(多数ユニットリセットによるものではありません)。 CPUはNMIハンドラー内でフリーズし、実行前に何も実行しません アプリケーションコード自体がこのフラグをクリアできなかったはずなので、 この起動シーケンスの前またはその一部として設定されている必要があります。 以下の点についてご意見をお聞かせいただければ幸いです。 1.MU_0.MUBおよびMU_1.MUBの場合、どのプロセッサが「プロセッサA」(すなわち MURIPは誰が設定しているのでしょうか?ヘッダーは「MUB」レジスタブロックのみを公開します。 アプリケーションコアアクセス可能なアドレスは、 アプリケーションコアは常に「プロセッサB」、HSEは常に「プロセッサA」となります こういう場合に? 2. 「システムリセット」(MURIPをクリアするために必要)には機能型/ソフトウェアが含まれますか? アプリケーションコアのリセット、それとも破壊的/PORリセットだけ?もし MURIPは機能リセットによってクリアされないため、 電源投入後はクリアされるが、ソフトウェアリセット後も設定は維持される。 3. NMI の問題とは関係なく、MURIP フラグ自体がセット/スタック状態になっているか。 通常運転中に想定される、あるいは異常とみなされる事象か? 4. CSSR0[NMIC] が現在0を読み取っているため、ハードウェアは NMI例外エントリ時にNMICを車載クリアするのか、それとも以下でのみクリアされるのか 明示的なソフトウェア書き込み(この場合、NMIC=0はMU->NMIチャネルはそもそもアサートされていませんでした)? 改めて、これまでのご助力に感謝します。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 遅れて申し訳ありません。私は2日間オフィスを不在にしていました。 1. はい、HSE_BコアはMU_0とMU_1のMUAインターフェースを制御します。 2. システムリセットはMURIPをリセットする。 3. これは例外的なことだと考えています。私自身はあまり情報を持っていません。 4. これはW1Cレジスタであるため、明示的な書き込みが必要です。 機能リセットがトリガーされた時点でHSE_Bが非アクティブであることを確認できますか? また、アプリケーションがNMIハンドラーに閉じ込められている間、どのような状態HSE_Bですか? MU_0 B面の標準HSE GPR(0x4039_C028)、FSR、GSRレジスタを読めますか? アプリケーションでNMIピンを使っていますか? よろしくお願いいたします。 ダニエル Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、ダニエルさん。 添付されている3つの結合レジスタダンプのスクリーンショットをご覧ください。 皆様からのご質問に基づいて整理した調査結果です。 -------------------------------------------------------- 添付ファイル -------------------------------------------------------- 添付資料1:正常なユニット(セキュアデバッグ有効、正常に動作中) Chibeom_3-1785730814252.pngChibeom_3-1785730814252.pngChibeom_3-1785730814252.png 添付資料2:機能リセット直前の故障ユニット トリガーされました(通常動作) Chibeom_4-1785730831377.pngChibeom_4-1785730831377.pngChibeom_4-1785730831377.png 添付資料3:機能リセット後、故障したユニットが NMIハンドラ(ハング状態) Chibeom_5-1785730838688.pngChibeom_5-1785730838688.pngChibeom_5-1785730838688.png -------------------------------------------------------- 調査結果 1) 機能リセットがトリガーされた時点での HSE_B アクティビティ、 2) NMIハンドラで停止している間のHSE_Bの状態: 添付ファイル2(リセット前)と添付ファイル3(リセット後)を比較すると、 故障したユニットでは、ハング状態)で、チェックしたすべてのレジスタが読み取られます。 リセット前とリセット後、全く同じ状態: - MU_0.MUB / MU_1.MUB TSR = 0x0000000F、RSR = 0x00000000(保留なし) 送信/受信チャネル上のメッセージはリセットによって変更されませんでした) - MU_0.MUB GSR = 0x00000000(変更なし) - MU_0.MUB FSR = 0x03600000(変更なし) - HSE GPR(0x4039C028)= 0x000001C1(変更なし) - MU_0.MUB / MU_1.MUB SR ビット1(MURIP)= 0x00000002 -- すでに設定済み リセットがトリガーされる前、そして設定されたまま、変更されず、その後も リセット SO、このリセットサイクルの前にすでにMURIPが設定されており、 機能リセット自体はこれらのHSE関連のいずれも変えません レジスター。 参考までに、同じセキュアデバッグ機能を備えた良質なユニットでは 構成(添付ファイル1)では、MURIPは両方とも0x00000000を読み取ります MU_0.MUBとMU_1.MUBは、HSE GPRとWKPU NCRは同じ内容です。 故障したユニットとしての値。 3) セット/スタックしたMURIPが異常かどうかについて: 承知いたしました。ご確認いただきありがとうございます。 4) NMIピンの使用: WKPUルーティング済みのNMIパスは使っていません(WKPU_IP_USEDは有効ではありません。 WKPUのドライバーコードはブートローダーにコンパイルされていません。 アプリケーション画像)。WKPU NCR (0x402B4008) = 0x60000000 全く同じ 3つの添付ファイルすべてにおいて。NSR = すべての場合において0x00000000。以来 これはすべてのユニットと条件で変更されていません。 外部/WKPU経由のNMIソースが関与しています。 これまでの調査結果の概要 MURIP (MU_0.MUB および MU_1.MUB SR ビット 1) は既に障害発生時に設定されています 機能リセットがトリガーされる前のユニットであり、 吊り下げ期間中、変化はなかった。同じ仕様の良品では0と表示されます セキュアなデバッグ構成。これが唯一一貫して再現可能な方法です 比較したすべてのレジスタ(FCCU、 CMU_FC、PMC、WKPU、MU CSSR0/GSR/TSR/RSR/GPR/FSR)を担当しています。 MURIPは「プロセッサA」(HSE_B)によって設定されており、クリアされるべきです。 あなたの回答によれば「任意のシステムリセット」と呼ばれ、すでに設定されているので 機能リセットがトリガーされます(リセット自体は表示されません) 変更するために)、これはHSE_B以前にMUリセットを発行したことを示唆しています HSE_Bが認識した「システムリセット」で解除されなかったポイントです。 質問 1. HSE側から、何が原因になるのかを判断する方法はありますか? そもそも(プロセッサA)はMUリセットをHSE_Bするのでしょうか?私たちは MURIPがそもそも設定される理由を理解したい。 2. リセットをトリガーする推奨方法はありますかHSE_B アプリケーションから「システムリセット」(MURIPをクリアするため)として認識します ソフトウェア、フル電源サイクル以外は? 3. アプリケーションコア側で詰まったMURIPフラグは、 観測しているNMIでしょうか、それともこれらはより独立している可能性が高いのでしょうか 以前の同じイベント情報の症状? この件に関して引き続きご協力いただき、改めて感謝申し上げます。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @danielmartynek さん、 最新情報のご提供、そしてMURIP/NMIパスのエスカレーションに感謝いたします。 社内の安全衛生チームに質問してください。感謝します、そして待ちます 彼らの意見。 その間に、関連性のある追加のデータポイントを発見しました。 だから待つのではなく、今のうちに共有したいと思いました。 UTEST Flash領域のOTPフィールドを良品と比較すると また、故障したユニットでは、ライフサイクル スロットに違いが見られました。 CUST_DEL (0x1B000220-22F) と OEM_PROD (0x1B000230-23F) は同一です 良品ユニットと 故障したユニット。 違いはIN_FIELDスロット(0x1B000240-24F)にあります。 - 正常ユニット:プログラミングが開始される Chibeom_2-1786069927793.pngChibeom_2-1786069927793.pngChibeom_2-1786069927793.png - ユニットの不具合: プログラムされていない (0xFFFFFFFF) と読み取られます Chibeom_1-1786069910918.pngChibeom_1-1786069910918.pngChibeom_1-1786069910918.png IN_FIELD内の正確なバイトパターンを現在も再確認中です。 我々の側のスロットだが、このスロットでの良し悪しの差は 一貫性のある。 もう少し詳しく教えていただけますか: 1.これは故障したユニットの構成が 移行の途中で破損または不完全になった IN_FIELD? 2. 未完成または欠落したライフサイクルの進展がIN_FIELD この件で調べているNMI/ハングの挙動について説明してください Thread? 3. このライフサイクル進行を安全に確認または完了する方法はありますか? 故障しているユニットに対して、完全な生産リフローなしで? ご協力ありがとうございました。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 メモリビューに基づくと、OEM_PROD = 非アクティブ、IN_FIELD = 消去済みとなります。 まずDCMの登録簿を読んでいただけますか:RM、rev.12、セクション 39.3.1 DCM メモリ マップ。 セクション38.2.3 破壊的リセット時の読み取り専用GPR 3 (DCMROD3) はどうでしょうか? HSE_FW APIを使ってLC属性を取得することもできますよね? よろしくお願い申し上げます。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 詳細なレジスタダンプをありがとうございます。MURIPの動作と、HSE_BとCM7_0間の潜在的なNMI経路に関する疑問点について、社内のHSEチームに報告しました。これは文書化されていないようです。彼らからの意見が届き次第、改めてご連絡いたします。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @danielmartynek さん、 DCMメモリマップとDCMROD3について教えていただき、ありがとうございます。両方のユニットでDCMSTAT(0h)、DCMLCS(8h)、DCMLCS_2(80h)、およびDCMROD3(208h)をキャプチャし、RM rev.9に対してデコードしました。 ---------------------------------------------------- 捕捉された価値 ---------------------------------------------------- 良いユニット: Chibeom_0-1786500129171.pngChibeom_0-1786500129171.pngChibeom_0-1786500129171.png - DCMSTAT (0h) = 0x00000E11 - DCMLCS (8h) = 0x00000000 - DCMLCS_2 (80h) = 0x00000000 - DCMROD3 (208h) = 0x00000000 不具合のあるユニット: Chibeom_1-1786500144600.pngChibeom_1-1786500144600.pngChibeom_1-1786500144600.png - DCMSTAT (0h) = 0x00000E03 - DCMLCS (8h) = 0x06184104 - DCMLCS_2 (80h) = 0x00000006 - DCMROD3 (208h) = 0x00400000 ---------------------------------------------------- デコードされたフィールド(正常なユニットはすべてゼロを読み取るため、故障したユニットのみ) ---------------------------------------------------- DCMSTAT: - bit1 DCMERR = 1 (DCMがエラーで完了) -- 正常なユニットではこのビットは0です - bit4 DCMLCST = 0 (LCスキャン状態が「正常に完了」していない) -- 正常なユニットではこのビットは1になります DCMLCS: - ビット 21-19 DCMLCC4 (IN_FIELD マーキング) = 011b = "領域は消去済み/未使用です" - ビット 15-13 DCMLCC3 (OEM_PROD マーキング) = 010b = "非アクティブとしてマークされています" - ビット 27-25 DCMLCC5 (Pre-FA マーキング) = 011b = "消去済み/未使用" - 関連するすべての *_ECE/*_CFE/*_CSS ビット = 0。 DCMLCS_2: - ビット 3-1 DCMLCC6 (FA マーキング) = 011b = "消去済み/未使用" DCMROD3: - bit22 LC_ERR = 1 ("ライフサイクルスキャン中にエラーが発生しました") これは、以前共有したUTEST OTPダンプと一致しています。故障したユニットのIN_FIELDスロットは、消去済み/未使用と読み取られます。 ---------------------------------------------------- 障害発生ユニットにおけるHSE_FW APIの結果(HseReadLifecycle) ---------------------------------------------------- HseReadLifecycle() は 0x10 = HSE_LC_IN_FIELD を返します。したがって、HSEファームウェアの観点から見ると、現在のライフサイクルはすでに十分IN_FIELDです。 これは上記の DCM/OTP データと矛盾しているようです。DCM の DCMLCC4 フィールドは IN_FIELD として「消去済み/未使用」と表示され、UTEST OTP の IN_FIELD スロット (0x1B000240h 以降) は未プログラム (0xFFFFFFFF) と表示されますが、HSE API はライフサイクルが IN_FIELD として確認されていると報告しています。 HSEがDCMフラッシュマーキングとは独立した別の安全なストレージを通じてライフサイクルを追跡しているのか、あるいはこれがマーキング自体に問題があることを示しているのかが不明なため、結論を出すのではなく、現状のまま共有することにしました。 よろしくお願いいたします。 チボム Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 データ提供ありがとうございます。 IN_FIELDスロットがまだ消去された状態なので、属性をもう一度設定して進めてみることはできますか? 先ほども述べた通り、この事件は現在内部で議論中です。 新しい情報が入り次第、このThreadを更新します。 Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 おそらく、ライフサイクル(LC)の推進を担当するHSEサービスが中断されたため、LCがこのような状態に陥ったのだろう。 LCおよびLC制御(DCMLCC)レジスタはHSE_FWと同様に0x77(IN_FIELD)を報告するが、UTEST領域は正しくプログラムされていない。理論上は、デバッガを使ってUTEST IN_FIELDスロットをプログラムでき、DCMエラーをクリアできるはずです。 よろしくお願いいたします。 ダニエル Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @danielmartynek さん。 ご提案いただいたとおり、不具合が発生しているユニットでIN_FIELD属性を再度設定してみました。 結果: HSE_SRV_RSP_NOT_ALLOWED (0xAA55A21C) よろしくお願いいたします。 チボム Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @danielmartynek さん。 UTEST IN_FIELDスロットをデバッガを使ってプログラムするというご提案、ありがとうございます。 社内OTPフィールド参照テーブルを確認したところ、IN_FIELDライフサイクルスロット(1B00_0240-024F)は、LC > MCU_PROD(OEM_PROD)以降、HSEを除くすべてのマスタに対して書き込み保護されていると記載されています。このユニットの HseReadLifecycle() は既に IN_FIELD を報告しているため、この LC 条件は既に満たされているようです。 この保護ルールの下で、このスロットにデバッガを書き込むとどのようにして成功することが期待されるのか、説明していただけますか?この場合、デバッガが許可されたマスターとして扱われるには、特定の手続き、モード、認証ステップが必要ですか? それとは別に、LCからIN_FIELDへの昇格がそもそもこのような不完全な状態のまま放置された理由について、何か調査結果は出ていますか?可能であれば、復旧手順だけでなく、根本原因についても理解したいと考えています。 ありがとう、 チボム Re: S32K312: NMI triggered before Reset_Handler executes, only after Functional (SW) Reset, on speci こんにちは、 @Chibeom さん。 情報ありがとうございます。 現時点ではMCUを復元する選択肢はないようです。 考えられる可能性の一つは、LCを進めるためのHSE設定属性サービス要求がシステムリセットによって中断されたことです(IVT内のLCWを使用してLCが進められなかったことは理解しています)。 HSEからのサービスリクエストに対する回答を読みましたか?エラーが発生したかどうかをログに記録していますか? サービスをトリガーする前に、HSE_STATUS_INIT_OKが設定されていることを確認していますか? この問題の影響を受ける基板/MCUの数はいくつですか?ごく一部の端末に限られる現象ですか、それともより多くの端末で確認されていますか? ありがとうございました。 ダニエル
View full article
How to Program a Fresh Ara240 Module on a Custom i.MX95 PCIe Platform? Hello NXP Team, We are using a custom i.MX95-based board (not the FRDM-i.MX95 EVK) and have connected an Ara240 M.2 module through the PCIe M-Key interface. After reviewing the Ara240 Runtime SDK documentation, we understand the normal runtime flow where the Ara240 device is enumerated over PCIe and initialized by the Runtime SDK during system boot. We would like to understand the requirements related to first-time module provisioning/programming for manufacturing and production support. Could you please clarify the following: Does the Ara240 M.2 module come pre-programmed from the factory, or is any initial firmware flashing required before first use? If the module is fresh, blank, or the onboard flash becomes corrupted, what is the recommended recovery or programming procedure? Is there any firmware or software component that needs to be programmed only once during manufacturing? Which components are loaded or initialized automatically during every boot by the Ara240 Runtime SDK? Is there a manufacturing, provisioning, or recovery guide available for customers using custom i.MX95 hardware platforms? Are there any additional steps required when using Ara240 on a custom board compared to the FRDM-i.MX95 reference platform? Any guidance or documentation related to first-time provisioning, firmware recovery, or production deployment would be greatly appreciated. Re: How to Program a Fresh Ara240 Module on a Custom i.MX95 PCIe Platform? The Ara240 M.2 module is normally shipped pre‑programmed, with the Runtime SDK handling initialization at boot, but if the onboard flash is blank or corrupted, recovery requires re‑flashing the firmware using the SDK tools and provisioning steps outlined in NXP’s manufacturing guide. Typically only base firmware is programmed once during production, while runtime components load automatically at each boot. For custom i.MX95 boards, the same provisioning flow applies as with the FRDM‑i.MX95, though you may need to adapt board‑specific PCIe and power sequencing. Official provisioning and recovery documentation from NXP is the recommended reference for manufacturing support.
View full article
如何在定制的 i.MX95 PCIe 平台上对全新的 Ara240 模块进行编程? 您好,NXP团队, 我们使用定制的基于 i.MX95 的板(不是 FRDM-i.MX95 EVK),并通过 PCIe M-Key 接口连接了Ara240 M.2 模块。 在查阅了 Ara240 Runtime SDK 文档后,我们了解了正常的运行时流程,即在系统启动期间,通过 PCIe 枚举 Ara240 设备,并由 Runtime SDK 进行初始化。 我们希望了解与制造和生产支持相关的首次模块配置/编程要求。 请您澄清以下问题: Ara240 M.2 模块出厂时是否已预先编程,还是首次使用前需要进行初始固件刷新? 如果模块是全新的、空白的,或者板载闪存损坏,建议的恢复或编程步骤是什么? 是否存在任何固件或软件组件,只需在生产过程中进行一次编程? Ara240 运行时 SDK 在每次启动时会自动加载或初始化哪些元器件? 是否有针对使用定制 i.MX95 硬件平台的客户的生产、配置或恢复指南? 与 FRDM-i.MX95 参考平台相比,在定制板上使用 Ara240 是否需要任何额外的步骤? 任何与首次配置、固件恢复或生产部署相关的指导或文档都将不胜感激。 Re: How to Program a Fresh Ara240 Module on a Custom i.MX95 PCIe Platform? Ara240 M.2 模块通常出厂时已预先编程,运行时 SDK 会在启动时处理初始化,但如果板载闪存为空或已损坏,则恢复需要使用 SDK 工具和 NXP 制造指南中概述的配置步骤重新刷写固件。通常情况下,生产过程中只会对基础固件进行一次编程,而运行时组件会在每次启动时自动加载。对于定制的 i.MX95 板,配置流程与 FRDM-i.MX95 相同,但您可能需要调整板特定的 PCIe 和电源时序。NXP 官方提供的配置和恢复文档是生产支持的推荐参考资料。
View full article
PN7150: FeliCa Lite-S (RC-S966) で断続的に DISCOVERY_FAILED (0x60 07) が発生し、NDEF データがゼロになる こんにちは。PN7150リーダーICを使用しているのですが、FeliCa Lite-S(RC-S966)タグで不安定な動作が見られます。 タグをアンテナに直接貼り付けた場合でも、次のようなサイクルが繰り返されます。 正しいUIDフレーム 正しいNDEFフレーム NDEFフレームをゼロにリセット 空のNDEFフレーム 0x60 07 (DISCOVERY_FAILED) 通知 CANログの例: UID (C040041): 01 2E 54 F7 C3 59 42 3E (常に安定) NDEF (C060041): 正しい場合: D1 01 09 54 02 65 6E 48 / 65 6C 6C 6F 21 ゼロの場合: 00 00 00 00 00 00 00 00 / 00 00 00 00 00 空の場合 (DLC=0) タグが少し離れた場合(それでも通常のNFC範囲内)、PN7150は頻繁に0x60 07を報告し、検出を再開します。 私の質問は Lite-Sが一時的にポーリングを無効化したり、RFフィールドがやや弱い場合にPN7150が07 0x60報告することは期待されるのでしょうか? ポーリング無効化はPN7150をゼロまたは空のNDEFデータを返すことはありますか? PN7150ファームウェアにおいて、Lite-Sポーリング無効化の動作を処理するための推奨される方法はありますか? 例:存在チェックをスキップ、検出の再開を遅延、再試行戦略 FeliCa Lite-Sの挙動に関するPN7150のアプリケーションノートはありますか? canAnalyzer3 Miniの概要は以下のとおりです。 「いいえ」;「時間(絶対値)」;「状態」;「ID(16進数)」;「DLC」;「データ(16進数)」;「ASCII」 "3.261";"34505.380";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.262";"34505.381";" E ";" C040041";"2";"00 F1";".." "3.263";"34506.401";" E ";" C060041";"0";"";"" "3.264";"34506.645";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.265";"34506.646";" E ";" C040041";"2";"00 F1";".." "3.266";"34506.894";" E ";" C060041";"0";"";"" "3.267";"34507.143";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.268";"34507.143";" E ";" C040041";"2";"00 F1";".." "3.269";"34507.389";" E ";" C060041";"0";"";"" "3.270";"34507.930";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.271";"34507.931";" E ";" C040041";"2";"00 F1";".." "3.272";"34508.979";" E ";" C060041";"8";"00 00 00 00 00 00 00 00";"....." "3.273";"34508.980";" E ";" C060041";"5";"00 00 00 00 00";"...." "3.274";"34509.222";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.275";"34509.222";" E ";" C040041";"2";"00 F1";".." "3.276";"34509.467";" E ";" C060041";"8";"00 00 00 00 00 00 00 00";"....." "3.277";"34509.468";" E ";" C060041";"5";"00 00 00 00 00";"...." "3.278";"34509.713";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.279";"34509.714";" E ";" C040041";"2";"00 F1";".." "3.280";"34509.959";" E ";" C060041";"8";"00 00 00 00 00 00 00 00";"....." "3.281";"34509.960";" E ";" C060041";"5";"00 00 00 00 00";"...." "3.282";"34510.495";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.283";"34510.496";" E ";" C040041";"2";"00 F1";".." "3.284";"34511.516";" E ";" C060041";"0";"";"" "3.285";"34511.759";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.286";"34511.760";" E ";" C040041";"2";"00 F1";".." "3.287";"34512.005";" E ";" C060041";"0";"";"" "3.288";"34512.251";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.289";"34512.252";" E ";" C040041";"2";"00 F1";".." "3.290";"34512.497";"E ";" C060041";"0";"";"" "3.291";"34512.739";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.292";"34512.739";" E ";" C040041";"2";"00 F1";".." "3.293";"34512.985";" E ";" C060041";"8";"D1 01 09 54 02 65 6E 48";"...T.enH" "3.294";"34512.986";"E ";"C060041";"5";"65 6C 6C 6F 21";"こんにちは!「 "3.295";"34513.231";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.296";"34513.232";" E ";" C040041";"2";"00 F1";".." "3.297";"34513.477";" E ";" C060041";"8";"D1 01 09 54 02 65 6E 48";"...T.enH" "3.298";"34513.478";"E ";"C060041";"5";"65 6C 6C 6F 21";"こんにちは!" "3.299";"34513.724";" E ";" C040041";"8";"01 2E 54 F7 C3 59 42 3E";"..T..YB>" "3.300";"34513.724";" E ";" C040041";"2";"00 F1";".."
View full article
S32N55:如何版本 blob 映像以实现快速唤醒启动。 你好,团队、 众所周知,S32N55 支持快速唤醒启动。 我尝试使用与完全唤醒启动相同的格式构建 blob 映像,但启动过程失败了。 你能否指导我如何正确版本 Fast Wake-up 启动的 blob 镜像? 谢谢! Tangsheng_Zhou_0-1766369489644.pngTangsheng_Zhou_0-1766369489644.png 顺祝商祺! 唐生。 FSS_FW 优先级:中等 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@唐生_周、 该小组已受理此案,并将尽快给出答复。 致以最崇高的敬意, Radu Re: S32N55: How to build a blob image for fast wake-up boot. 你好@RaduBraga 我注意到该票已被关闭。有没有最新进展?   顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 我已经接手此案,并将尽快给予答复。   顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 如果您正在为直接客户提供支持,请提供以下信息: BSSM合同:是/否 客户公司*: 项目名称*: 客户联系人*(姓名和邮箱): 软件和硬件信息: 软件软件包信息*: 硬件*(主板/芯片组/平台): 软件版本*: *必需的 我仍在与开发团队合作处理此案例。 顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 此案与任何特定客户或项目无关。但是,我认为客户将来可能会遇到类似的问题,所以我提出了这个请求。   顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 感谢您提供的详细信息,我正在处理此案,会尽快给您答复! 顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 以下是详细的测试步骤。   1. 在 AOSRAM 内存区域内构建了一个小型 FSS 镜像(保留了 IVT 头部),该镜像的 main.c 文件中只有一个 while 循环。 Tangsheng_Zhou_0-1784553297963.pngTangsheng_Zhou_0-1784553297963.png 2. 构建 FSS 固件镜像时,我需要填写 FRB 阈值寄存器吗?如果需要填写,则需要考虑如何填写或任何特殊事项。 Tangsheng_Zhou_1-1784553422329.pngTangsheng_Zhou_1-1784553422329.png 3. 使用 IVT 工具构建 IVT blob 映像,起始地址为 0x24800000 4. 将 IVT blob 映像写入闪存的 0x D00000 地址。 5. 在系统进入睡眠状态之前,将 IVT blob 映像复制到 AOSRAM 中,并将 FSS_WKUP0 的 WKPU 模式配置为快速唤醒模式。 Tangsheng_Zhou_2-1784553712231.pngTangsheng_Zhou_2-1784553712231.png Tangsheng_Zhou_3-1784553730808.pngTangsheng_Zhou_3-1784553730808.png 5. 通过 FSS_WAKUP0 唤醒系统映像。 FSS 无法到达 while(1) 环。看来在唤醒过程中触发了重置事件,而不是快速唤醒。   感谢您的支持!   顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@Tangsheng_Zhou , 如果您能分享一下您在尝试构建 blob 镜像时所遵循的具体步骤,那就太好了。我认为那样我们更容易找出问题所在。   顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 嗨@Tangsheng_Zhou , FRB 是 TCM 存储器(ITCM +DTCM)。 理论上我们有两种情况。 1:快速唤醒启动 由于镜像从 AON SRAM 内存启动,因此快速唤醒不需要 FRB。 2:完全唤醒启动 请问您是否要启动到 ITCM?如果是,则需要在 FSS 映像头中提供 FRB 阈值 0,地址采用 12 位掩码,FRB 地址将按 8kb 的倍数计算。 希望这能帮上一点忙。另外,您能否提供一下 IVT blob? 顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 不,我只是想在 AO-SRAM 中运行 F-Core。 main_app1.bin 是 FSS 固件映像。 这两个字段应该如何填充?是否应该从 AO_SRAM 地址 0x24800000 开始?我的图像的起始指针和入口指针是 0x24800240。 Tangsheng_Zhou_0-1784682563629.pngTangsheng_Zhou_0-1784682563629.png main_blob1.bin 是包含 IVT 标头的 blob 映像。 谢谢您! 顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 在进入睡眠模式之前,将完整的 IVT 映像(而不是 FSS 固件)复制到 AO_SRAM 中,以测试快速唤醒功能。   谢谢您! 顺祝商祺! 唐盛 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 整个 IVT blob 映像被复制到 AO_SRAM 的开头,包括 IVT 头部、FSS FW 头部和 FSS FW 二进制文件。 谢谢您! 顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 嗨@Tangsheng_Zhou , 为了确保我理解流程,你是将完整的 IVT blob 映像复制到 AO_SRAM 的开头,还是只复制用于快速唤醒启动的 FSS 固件映像? 顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 嗨@Tangsheng_Zhou , 请确认快速唤醒启动是否成功完成?如果确认唤醒过程运行正常,则可能表明映像存在问题。 我想逐步缩小可能的原因范围。   顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 我认为WKPU配置是正确的。据我了解,完全唤醒和快速唤醒的主要区别在于 WBMSR 配置。是这样吗? 还有其他需要考虑的设置或因素吗? 另外,能否请您分享正确的步骤,或者提供一张您或您的团队验证过的快速唤醒斑点图片? 感谢您的支持! 顺祝商祺! 唐生。 Re: S32N55: How to build a blob image for fast wake-up boot. 嗨@Tangsheng_Zhou , 团队目前面临着大量的版本发布任务。我会从我这边施加一些压力,进行一些调查,并尽快给你答复。   顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 嗨@Tangsheng_Zhou , WBMSR 是完全唤醒启动和快速唤醒启动之间的主要区别之一。然而,这并非唯一因素。 对于快速唤醒启动,BootROM 期望在进入睡眠状态之前,AON SRAM 中存在有效的映像(IVT + FSS 固件,如果需要,还需有唤醒 DCD)。除了 WBMSR 之外,还应验证唤醒源配置、AON SRAM 保持和有效的 IVT/FSS 标头。 预期的快速唤醒流程如下:   1. 生成包含 IVT + FSS FW 的 IVT 斑点图像。 2. 如有需要,添加唤醒 DCD。 3. 将 blob 图像复制到 AON SRAM 的开头。 4. 将系统配置为快速唤醒模式。 5. 进入睡眠状态并触发唤醒源 关于已验证的快速唤醒 blob 镜像,我正在进行内部核查,如有已验证的参考镜像可用,我会立即通知您。   希望这能帮上一点忙。   顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 嗨@Tangsheng_Zhou , 如果您认为所提供的答案合适,并且您对此工单没有其他疑问,请将答案标记为“接受为解决方案”。 今后请使用 NXP JIRA: Jira 项目 此外,如果我们在接下来的7天内没有收到回复,我们将结案。 顺祝商祺! 保罗 Re: S32N55: How to build a blob image for fast wake-up boot. 你好@PaulB0bes 谢谢你的回复。我按照您提供的步骤测试了快速唤醒功能,但问题仍然存在。请问您那边是否已经成功测试过了?   谢谢! 顺祝商祺! 唐生。
View full article
NXP 希望用户如何将 Mbed TLS 与 Plug & Trust 中间件集成? NXP 是否希望用户使用 Plug & Trust 中间件捆绑的 Mbed TLS 版本?如果是这样,NXP 是否能及时提供包含更新的 Mbed TLS 版本的中间件更新版本?例如,当前中间件捆绑了 Mbed TLS 3.6.2,尽管 Mbed TLS 3.6.7 已经可用。 SE050 Re: How Does NXP Expect Users to Integrate Mbed TLS with the Plug & Trust Middleware? 嗨@ph-yac , 感谢您的联系!我的评论如下: Plug & Trust MW 从下游的 MCUXpresso SDK 获取 Mbed TLS,并且更新遵循 NXP 的 H1/H2 SDK 发布计划,而不是跟踪每个上游 Mbed TLS 补丁版本。目前捆绑的版本是3.6.2,下一次更新将在下一个 SDK 下游版本周期中发布。 中间件已根据捆绑版本进行正式验证,但同一 3.6.x 版本内的补丁级别升级可能存在问题。LTS分支通常风险较低。欢迎客户尝试手动替换捆绑的 Mbed TLS 源文件;只需使用 `SSS_HAVE_MBEDTLS_3_X` CMake 标志验证构建兼容性即可。NXP 不会对 MW 版本之间的每个补丁版本进行正式验证。 最新版 MW 同时支持 Mbed TLS 2.28.x 和 3.6.x 版本。通过 `SSS_HAVE_MBEDTLS_2_X` / `SSS_HAVE_MBEDTLS_3_X` CMake 标志进行分支。请注意,与 Mbed TLS 3.x 集成时应使用 **SSS ALT**(而不是 PSA ALT)。 Plug & Trust 中间件对 Mbed TLS 4.x 的支持目前正在考虑中,预计将于 2027 年第一季度发布。虽然尚未做出正式承诺,但已列入计划。 希望对您有所帮助。 祝你有美好的一天, 坎 ------------------------------------------------------------------------------- 笔记: - 如果此回复解答了您的问题,请点击“标记为正确答案”按钮。谢谢你! - 我们会持续关注帖子,从最后一条回复发出后持续7周,之后的回复将被忽略。 如果您之后有相关问题,请另开新帖并引用已关闭的帖子。 -------------------------------------------------------------------------------
View full article
DESFire EV3 NDA 电子签名请求从未送达 MIFARE DESFire EV3 NDA 已获批准,但 Adobe Sign 请求从未交付——支持部门拒绝将此问题升级至 NXP 合同部门(案例 00996763) 你好, 我正在寻找恩智浦公司内部能够帮助我完成保密协议流程的人,该流程由于恩智浦方面的技术原因而陷入停滞。 背景: 我是一名捷克共和国的软件开发人员,正在开发一款基于 MIFARE DESFire EV3 (MF3DHx3) 的闭环 NFC 支付扩展的移动 POS 应用程序 (Android/iOS)。我需要 DocStore 提供的机密 EV3 文档(完整数据表/命令集、安全消息传递、密钥管理)。 2026 年 8 月 1 日,我通过 NXP 在线流程提交了 NDA 请求(支持案例 #00996763)。 8 月 1 日至 7 日期间,我提供了 NXP 合规部门要求的所有资料:公司网站、官方贸易登记文件、所有权结构、详细的项目描述、数量、设计阶段、最终用途。 8 月 12 日,NXP 技术支持确认 NDA 已获批准,并通过 NXP Contracts / Adobe Acrobat Sign 发送到我的签字邮箱。8月18日,他们确认了第二个电子签名请求。 问题: 两个 Adobe Sign 请求均未送达。收件箱里没有,垃圾邮件里也没有,我的 Adobe Sign 帐户里也没有,而且——最重要的是——在整个期间的 Microsoft 365 Exchange 邮件跟踪中,没有任何来自 adobesign.com / echosign.com 的投递尝试痕迹。交易在到达我的邮件服务器之前就失败了。 技术支持人员表示,“出于网络安全原因,我们无法重新发送文件”,他们“无法进一步验证我的电子邮件地址”,我应该通过授权代理商重新开始。要求将此案直接转交给 NXP Contracts,以便他们检查 Adobe Sign 交易并签发新协议(或将 NDA 以 PDF 格式发送以供手写签名)的请求尚未得到处理。 所涉电子邮件地址是我在我自己域名下的唯一商业地址,并且一直用于处理此事件中的所有其他通信,包括来自 [email protected] 的所有电子邮件。 我所请求的是: NXP Contracts、MIFARE 产品团队或任何有权访问 Adobe Sign 审计跟踪的人员能否查看案例 #00996763,并重新发出电子签名请求或以其他形式提供保密协议?尽职调查已经完成并获得批准——唯一缺少的步骤是提交一份文件。 任何能提供合适联系人的信息都将不胜感激。谢谢。 彼得·扎赫拉德尼克 捷克共和国 Re: DESFire EV3 NDA eSign request never delivered 你好,爱德华多, 谢谢你的回复。我明白,我也很乐意继续参与保密协议相关的讨论——问题是这个讨论实际上已经结束了: 技术支持部门两次回复说他们“无法在线处理”,我应该通过代理商重新开始,而我要求将此案转交给法律/合同团队的请求也没有得到处理。 所以我唯一的要求是:能否请您将案件编号 00996763 转交给内部的法律团队,以便有权限查看 Adobe Sign 交易记录的人员进行查看?保密协议于 8 月 12 日获得批准;但我始终没有收到电子签名请求(我的邮件服务器跟踪中根本没有投递尝试)。重新发出电子签名请求,或者将保密协议以 PDF 格式提供以便手写签名,即可立即解决问题。 我会在工单中添加一条备注,引用这个帖子。谢谢。 彼得 Re: DESFire EV3 NDA eSign request never delivered 你好@clexpert 希望你一切都好。 请接受我的歉意,这不是讨论保密协议相关问题的合适途径。在线提交保密协议表格后,所有流程均由我们的法务团队处理。 如需了解您的申请流程状态的更多信息,请继续通过您的 NDA 工单进行沟通。 问候, 爱德华多。 Re: DESFire EV3 NDA eSign request never delivered 你好,爱德华多, 再次感谢。按照您的建议,我继续处理 NDA 工单(案件 00996763),并明确要求将该案件转交给法律/合同团队,因为您提到他们负责处理这些案件。 今天我收到的唯一回复,也是第三次,只有一行信息:“请联系NXP代理商办理保密协议。”没有转发给法务部门,没有对 Adobe Sign 交付失败做出任何评论,也没有提及我询问的审计跟踪。 总结一下三周后的现状: - 该保密协议已于 8 月 12 日审核、批准并发布。 - 两封 Adobe Sign 请求从未到达我的邮件服务器(已通过完整的邮件跟踪确认 - 根本没有尝试投递)。 - 技术支持无法重新发布,只能重复代理商的建议。 - 我已同时联系了授权代理商,正在等待回复。 请您自行将内部事宜移交给法务/合同部门,或者给我提供该部门的直接联系方式?我希望将已经获得批准的保密协议交付给您——通过重新发出电子签名请求,或者以 PDF 格式手写签名。我尽量保持建设性的语气;我只是需要把这件事告诉能够采取行动的人。 谢谢。 彼得
View full article
AMMCLib 对 S32R294 e200z7 内核的支持 您好,NXP团队, 我们正在为 S32R294 开发一个应用程序,并希望在其 e200z7 内核上使用 AMMCLib。 是否有官方支持 S32R294 的 AMMCLib 版本?如果没有,您能否推荐另一个与 S32R294 e200z7 内核兼容的 NXP 提供的数学库? 另外,请与我们联系是否需要特定的 S32 Design Studio 工具链、SDK 或 RSDK 版本。 谢谢! C|C++库 Re: AMMCLib support for S32R294 e200z7 cores 嗨,彼得, 谢谢你的解释。 我们的目标应用是雷达信号处理流程。我们计划在 S32R294 e200z7 内核上运行以下算法: 基于DML的到达方向估计 少量FFT运算 卡尔曼滤波,包括矩阵乘法、转置和线性系统求解或矩阵求逆 利用向量、矩阵和统计运算进行特征提取和轻量级雷达目标分类 在 e200z7 内核上运行这些算法可以减少 SPT 和 e200z7 之间的数据传输和数据格式转换,从而提高处理效率。 我们正在寻找适用于 S32R294 e200z7 内核的优化 FFT、复数运算、矩阵运算、向量运算和线性代数运算函数。NXP是否为这些应用场景提供合适的数学或DSP库? 顺祝商祺! Re: AMMCLib support for S32R294 e200z7 cores 你好, 目前还没有正式支持 S32R294 平台的 AMMCLib 版本。 AMMCLib 设备支持列表目前包括几个 Power Architecture MCU 系列(例如 MPC577xK/MPC5775E),但 S32R294 未列为支持的目标。 对于 S32R294 开发,NXP 的主要软件产品是 S32R29x 的 Radar SDK 以及 S32 Design Studio 电源架构工具链。 目标应用应该是什么? 顺祝商祺! Peter
View full article
GMAC RX interrupt of S32K328 I use GMAC of S32K328, and want to use interrupt method to receive package from my PC. But found some differnt phenomenon: 1. Interrupt handler GMAC0_CH0_RX_IRQHandler can be called, and receive package normally. 2. Many seconds GMAC0_CH0_RX_IRQHandler called after PC send package. 3. GMAC0_CH0_RX_IRQHandler can't called, and no package receive? What might be the reason? How to solve that? Re: GMAC RX interrupt of S32K328 Hello @zyt , Thank you for sharing the configuration. Since I do not have EB tresos available, I reviewed the GMAC configuration manually from the provided files. I compared your Eth_43_GMAC configuration with a working S32K358 GMAC 1G lwIP FreeRTOS reference project. One significant difference is the Egress FIFO configuration. In your project, the Egress FIFO buffer length is configured to 128 bytes and the MTL Egress queue size is 256 bytes. In the reference project, the Egress FIFO buffer length is 1536 bytes and the MTL Egress queue size is 4096 bytes.   If your application transmits any frames or if the upper layer sends responses, this small TX/Egress configuration may be too limited for standard Ethernet frames, especially in 1G RGMII mode. As a test, please try increasing:   - EthCtrlConfigEgressFifoBufLenByte to 1536 - EthCtrlConfigMTLEgressQueueSizeInBytes to 4096   For the RX path, the RX buffer length itself is 1536 bytes, which looks reasonable. However, your MTL Ingress queue size is also 1536 bytes, while the reference project uses 4096 bytes. Therefore, as another test, please also try increasing:   - EthCtrlConfigMTLIngressQueueSizeInBytes to 4096   In addition, for debugging, please temporarily enable receive-all mode. Your current configuration has PKT_FILTER_RECV_ALL disabled, while the reference project enables it. This can help to exclude MAC filtering from the analysis.   There are also other differences like EthEnableCacheManagement and EthCtrlReleaseResourceAfterReception, but this is not necessarily wrong.   Best regards, Pavel Re: GMAC RX interrupt of S32K328 Hello: I have tried both unicast frames or broadcast frames, the delay between every frame is 1 second, I think it's enough slow. The phenomenon is the same, there is no RxStatsDropEvents at bigining, but it appears after a few frames. My EB configuration is like attachment, please help to check if it's convenience for you. Thanks. Re: GMAC RX interrupt of S32K328 Hello @zyt , RxStatsDropEvents suggests that some frames are seen by the GMAC, but are dropped somewhere in the RX path. This may be related to RX resource availability, RX FIFO/queue handling, descriptor/buffer availability, packet filtering or the upper-layer receive processing.   Please try the following checks:   1. Please send the same unicast frames slowly from the PC, for example one frame at a time or with a larger delay between frames, and compare the RX statistics before and after the test. If RxStatsDropEvents no longer increases, the issue may be related to RX buffer recycling, processing time, or burst traffic from the PC.   2. Please repeat the test with broadcast frames and then with unicast frames addressed exactly to the MAC address configured in the GMAC driver. This will help to exclude a MAC address/filtering issue.   Please also verify the RGMII clock and peripheral configuration. As a reference, I have published an S32K358 GMAC example on the NXP Community: https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K358-GMAC-1G-lwIP-FreeRTOS-S32DS-3-6-1-RTD600/ta-p/2355872     Please note that this example is for S32K358, not S32K328, so it must not be copied directly without checking the S32K328 pinout and clock configuration. However, it can be used as a reference for the overall clock setup, Eth_43_GMAC configuration and the DCMRWF register workaround.   If possible, could you please also share your zipped project? Without the project, it is difficult to determine whether the drops are caused by configuration, RX resource handling, queue routing or the application receive path. Best regards, Pavel Re: GMAC RX interrupt of S32K328 Hello: I read the frame info by RTD function Eth_43_GMAC_GetRxStats, it looks has drop event. zyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.png The RX flow all handled by RTD like below, I didn't modify. GMAC0_CH0_RX_IRQHandler -> GMAC_RxIRQHandler -> Eth_43_GMAC_RxIrqCallback -> Eth_43_GMAC_Receive What might be the reason for this? Thanks. Re: GMAC RX interrupt of S32K328 Hello @zyt , Thank you for the details.   Please also check Pins/Clocks/device_init() accordingly to this thread: S32K358 - GMAC Clock Configuration   From the screenshot, the GMAC0 interrupt vectors seem to be configured and mapped to the RTD handlers, including GMAC0_CH_0_RX_IRQHandler. Since this handler is sometimes entered and the frame can be received, the basic interrupt routing does not look completely wrong.   However, when using the AUTOSAR Eth_43_GMAC driver, please also check the receive flow above the low-level IRQ handler. The RX interrupt handler itself is not usually the complete application-level receive processing. The application or upper layer still needs to call the expected Eth_43_GMAC receive API flow, for example Eth_43_GMAC_Receive(), so that the received frame is read from the driver and passed further through the configured callback path.   Please check the following points:   1. Please confirm that Eth_43_GMAC_Receive() is called after the RX interrupt event, or periodically from your main/task context, according to your application design. If the interrupt occurs but the received frame is not consumed from the RX buffers, the following frames may not be received as expected.   2. Please verify that the received unicast frame destination MAC address exactly matches the MAC address configured in the GMAC driver. For debug purposes, you can temporarily enable receive-all/promiscuous mode to exclude MAC filtering as the reason.   3. Please check which RX queue/FIFO is used. Your screenshot shows RX interrupt handlers for CH0, CH1, and CH2. If the packet filter or queue configuration routes frames to another RX queue, the application must call the receive function with the corresponding FIFO index and handle that queue correctly.   4. Please verify RX buffer/descriptor availability. After a received frame is processed, the driver must be able to reuse or obtain RX buffers again. If the RX buffers are exhausted, the first frame may be received correctly, but later frames may be delayed or lost.   5. If cache is enabled, please verify that the GMAC descriptors and RX buffers are placed in a non-cacheable memory region, or that the required cache maintenance is performed. Otherwise, the CPU may see stale descriptor status or stale received data.   6. Since the frames are sent from a Python script as unicast frames, please also confirm by Wireshark that the PC really sends the frames continuously with the expected destination MAC address. If some frames require address resolution or if the destination is not reachable as expected, the PC side may introduce retries or delays, which can look like delayed RX interrupt behavior on the MCU side.   As a reference, I would recommend comparing the project with an adapted S32K3 Ethernet/lwIP example first. This can help to confirm that the RGMII PHY interface, clocks, MAC address, and basic RX path are working before focusing on the custom AUTOSAR Eth_43_GMAC interrupt receive implementation.   If the issue still remains, please share the Eth_43_GMAC receive part of the application, especially where Eth_43_GMAC_Receive() is called, the RX FIFO configuration, MAC address/filter configuration, and the GMAC DMA/MTL/MAC status registers after the failure. Bets regards, Pavel Re: GMAC RX interrupt of S32K328 Hello: 1.I use RGMII 2. I use RTD 6.0.0. 3. I use the Eth_43_GMAC driver. 4. Interruption is like the following: zyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.png 5. I send unicast frames with python script. All the packages I send are the same, and GMAC0_CH0_RX_IRQHandler is from RTD which is the lowest handler like picture above. Re: GMAC RX interrupt of S32K328 Hello @zyt , Could you please provide a few more details about your setup?   1. Which MAC/PHY interface are you using on S32K328, for example MII, RMII or RGMII? 2. Which S32K3 RTD version are you using? 3. Are you using the AUTOSAR MCAL Eth_43_GMAC driver or the lower-level GMAC IP driver? 4. Could you share the relevant interrupt configuration and the implementation of GMAC0_CH0_RX_IRQHandler? 5. What kind of frames are sent from the PC, for example ping/ICMP, UDP, raw Ethernet frames, broadcast or unicast frames?   As a reference test, I would also recommend trying to reproduce the behavior using an adapted S32K3 Ethernet/lwIP example first. This can help to separate a basic GMAC/PHY/clock/configuration issue from an application-specific interrupt or RX-buffer handling issue.     Regarding the symptoms, if the RX interrupt is sometimes called and the frame can be received correctly, the basic RX path is likely at least partially working. However, the inconsistent behavior may still be caused by one of the following points:   - RX buffer or descriptor handling: after a received frame is processed, the RX buffer/descriptor must be returned back to the driver/DMA. If this is not done correctly, RX buffers may become unavailable and further RX interrupts may stop or become inconsistent.   - Interrupt handling: please make sure that the RX interrupt is configured for the correct GMAC channel and that the expected driver interrupt handler/status clearing flow is used. If the interrupt status is not cleared correctly, the following RX events may not be reported as expected.   - Cache/memory coherency: if cache is enabled, please verify that the GMAC descriptors and RX buffers are placed in a suitable non-cacheable memory region, or that the required cache maintenance is performed. Otherwise, the CPU may see stale descriptor status or stale received data.   - Packet filtering/MAC address: for debug purposes, please try enabling receive-all/promiscuous mode temporarily. This helps to check whether the frame is rejected by the MAC address filter, VLAN filter, or another packet filter setting.   - Frame type and PC behavior: if the PC sends IP traffic such as ping, the first frames may be ARP requests/replies before ICMP traffic is sent. If ARP resolution fails or some frames are filtered/dropped, it may look like the interrupt is delayed by several seconds because the PC retransmits ARP or the application retries later.   - PHY link and clocks: please also confirm that the PHY link is up and that the required input clocks for the selected MII/RMII/RGMII interface are present and stable.   Please share the above configuration details and, if possible, the GMAC DMA/MTL/MAC status registers after the failure. This should help identify whether the issue is related to interrupt configuration, RX descriptor/buffer handling, packet filtering, or the external PHY/interface setup. Best regards, Pavel Re: GMAC RX interrupt of S32K328 Hello: I follow the configuration as your advice like below: zyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.png zyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.png zyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.png zyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.png The EthCtrlReleaseResourceAfterReception is gray could not be modified, because it's only applied when external data buffers are used. zyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.png After modify these, the result is the same, RxStatsDropEvents appeared. zyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.png The modified configuration file is like attachment. Could you give some more advice? Thanks. Re: GMAC RX interrupt of S32K328 Sorry, I forget you do not have EB. The attachment is the generated file after modification. Re: GMAC RX interrupt of S32K328 Hello @zyt , Thank you for the update. I reviewed your files again and I haven't seen anything suspicious. If the behavior remains unchanged after increasing the FIFO/queue resources, I would not continue changing configuration parameters blindly. The next step should be to identify which frames are actually counted as RxStatsDropEvents. Please check whether the drop counter increases only when your Python unicast frames are sent or also when no Python traffic is running, as PC-side background traffic or filtered frames may also affect the RX statistics. Bets regards, Pavel Re: GMAC RX interrupt of S32K328 Hello: Base my test, either broadcast or unicast frame can be drop, phenomenon are the same, and the PC will not send any other frames beyond my control. I find one thing special, when sometimes I send a frame, the RTD function  Gmac_Ip_ReadFrame go into below branch: zyt_0-1787101369298.pngzyt_0-1787101369298.pngzyt_0-1787101369298.pngzyt_0-1787101369298.pngzyt_0-1787101369298.png It's because (((Bd->Des3 & GMAC_RDES3_OWN_MASK) != 0U)  zyt_1-1787101442166.pngzyt_1-1787101442166.pngzyt_1-1787101442166.pngzyt_1-1787101442166.pngzyt_1-1787101442166.png The function call flow is like below, all belong to RTD driver: zyt_2-1787101651452.pngzyt_2-1787101651452.pngzyt_2-1787101651452.pngzyt_2-1787101651452.pngzyt_2-1787101651452.png At this time, Eth_43_GMAC_Receive will not read data of GMAC buffer. So after some times, the fifo of GMAC is full, so the frame come later will drop. Do you think my analysis make sense?? If so, why (((Bd->Des3 & GMAC_RDES3_OWN_MASK) != 0U) happened? What might be the reason? Thans. Re: GMAC RX interrupt of S32K328 Hello @zyt , Thank you for the update. Yes, the fact that the issue disappears when D_CACHE_ENABLE is removed strongly indicates a cache coherency or memory-region configuration issue.   However, Gmac_apxState itself does not normally need to be placed in non-cacheable memory. It contains CPU-side driver state and pointers and is not directly accessed by the GMAC DMA. The important objects shared between the CPU and GMAC DMA are the hardware descriptor rings and the RX/TX data buffers.   I checked the generated files shared previously. In Gmac_Ip_Cfg.h, the generated configuration contained:   #define GMAC_HAS_CACHE_MANAGEMENT (STD_OFF)   At the same time, Gmac_Ip_Cfg.c places the GMAC RX/TX descriptors and data buffers into the NO_CACHEABLE MemMap section. Therefore, the generated configuration appears to rely on these objects being mapped to a genuinely non-cacheable memory region rather than on explicit cache maintenance by the GMAC driver.   Please regenerate the complete RTD configuration and perform a clean build after enabling EthEnableCacheManagement. Then please check the value of GMAC_HAS_CACHE_MANAGEMENT in the Gmac_Ip_Cfg.h file that is actually compiled. If it still remains STD_OFF, the checkbox is not enabling the low-level GMAC cache maintenance in the generated build.   Please also share the linker map file and the relevant linker/MPU memory-region configuration. We need to verify the final sections and memory attributes of:   - GMAC_0_RxRing_0_DescBuffer - GMAC_0_RxRing_0_DataBuffer - GMAC_0_TxRing_0_DescBuffer - GMAC_0_TxRing_0_DataBuffer   The generated source places these objects into a non-cacheable section, but the linker script and MPU configuration must also map that section to a genuinely non-cacheable region. Otherwise, the CPU may read a stale cached descriptor value, for example OWN = 1, even after the DMA has updated the descriptor in RAM.   I would not recommend moving Gmac_apxState to non-cacheable memory at this point. The first step is to verify that all DMA-shared descriptors and buffers are placed in the correct non-cacheable MPU region, or alternatively that GMAC cache management is really enabled in the compiled driver configuration. Best regards, Pavel Re: GMAC RX interrupt of S32K328 Hello @zyt , Thank you for the detailed debugging information. Your observation is useful, but I would interpret the OWN bit differently.   When RDES3.OWN is set, the RX descriptor is owned by the DMA, not by the CPU. Therefore, Gmac_Ip_ReadFrame() correctly reports GMAC_STATUS_RX_QUEUE_EMPTY because the current descriptor has not yet been completed and returned to software. An RX descriptor with OWN = 1 is normally available to DMA, so this condition alone does not indicate that the RX ring is blocked or that the GMAC FIFO must become full.   The important question is why the RX interrupt callback is entered while RxCurrentDesc points to a descriptor that is still owned by DMA. The interrupt may have been caused by another RX/DMA status condition, or the completed descriptor may not match the current software descriptor pointer.   The generated code places the GMAC RX descriptors and RX data buffers into a non-cacheable MemMap section. However, I do not see the linker map file in the shared project, so I cannot verify whether this section is actually mapped to a non-cacheable memory region in the final executable.   Could you please share the linker map file generated by the build? In particular, I would like to check the final addresses and sections of:   - GMAC_0_RxRing_0_DescBuffer - GMAC_0_RxRing_0_DataBuffer - GMAC_0_TxRing_0_DescBuffer - GMAC_0_TxRing_0_DataBuffer   Please also confirm whether GMAC_STATUS_RX_QUEUE_EMPTY occurs on the first Gmac_Ip_ReadFrame() call after the RX interrupt or only after one or more frames have already been read successfully. An OWN bit set to 1 may simply indicate the normal end of the receive loop, where the next descriptor is already owned by DMA and waiting for another frame. Best regards, Pavel Re: GMAC RX interrupt of S32K328 Hello: The problem is caused by cache, when I delete macro D_CACHE_ENABLE from my project, all things go normal. Is that mean cache coherency problem? But when I add D_CACHE_ENABLE and Check the box below, the problem also occured. zyt_2-1787215536381.pngzyt_2-1787215536381.png I didn't modify any variable region settings of RTD, and I checked the RTD driver, GMAC_0_Rx/TXRing_0_Desc/DataBuffer is in no_cache region, but others don't, such as Gmac_apxState, it's in mcal_bss which is cached. It that reasonable? zyt_4-1787215940789.pngzyt_4-1787215940789.png So how to solve this problem with D_CACHE_ENABLE added? Thanks.
View full article
S32K328のGMAC RX割り込み 私はS32K328のGMACを使っていて、PCからパッケージを受け取るために割り込み方式を使いたいと思っています。しかし、いくつかの異なる現象が発見された。 1. 割り込みハンドラGMAC0_CH0_RX_IRQHandlerを呼び出し、通常通りパッケージを受信できます。 2. PCがパッケージを送信した後、何秒も通話GMAC0_CH0_RX_IRQHandler。 3. GMAC0_CH0_RX_IRQHandler電話できず、パッケージも届かない? その理由は一体何だろうか?どうすれば解決できるでしょうか? Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 設定情報を共有していただきありがとうございます。EB tresosが手元にないため、提供いただいたファイルからGMACの設定を手動で確認しました。 あなたのEth_43_GMAC構成を、正常に動作するS32K358 GMAC 1G lwIP FreeRTOSリファレンスプロジェクトと比較しました。大きな違いの一つは、Egress FIFO構成です。あなたのプロジェクトでは、Egress FIFOバッファ長は128バイト、MTL Egressキューサイズは256バイトに設定されています。一方、リファレンスプロジェクトでは、Egress FIFOバッファ長は1536バイト、MTL Egressキューサイズは4096バイトです。   もしアプリケーションがフレームを送信したり、上位層が応答を送る場合、この小さなTX/Egress構成は標準的なイーサネットフレーム、特に1G RGMIIモードでは制限が多すぎる可能性があります。テストとして、以下の値を増やしてみてください。   - EthCtrlConfigEgressFifoBufLenByte を 1536 に変更 - EthCtrlConfigMTLEgressQueueSizeInBytes を 4096 に変更   RXパスの場合、RXバッファの長さ自体は1536バイトで、これは妥当な値に見えます。しかし、あなたのMTLイングレスキューのサイズは1536バイトですが、参照プロジェクトでは4096バイトを使用しています。したがって、別のテストとして、以下の値も増やしてみてください。   - EthCtrlConfigMTLIngressQueueSizeInBytes を 4096 に変更   さらに、デバッグのために、一時的に全受信モードを有効にしてください。現在の設定ではPKT_FILTER_RECV_ALLが無効になっていますが、参照プロジェクトでは有効になっています。これにより、MACフィルタリングを分析から除外することができます。   EthEnableCacheManagementなど、他にも違いがあります。 EthCtrlReleaseResourceAfterReception ですが、これは必ずしも間違っているわけではありません。   よろしくお願いいたします。 パベル Re: GMAC RX interrupt of S32K328 こんにちは: ユニキャストフレームとブロードキャストフレームの両方を試しましたが、各フレーム間の遅延は1秒で、十分遅いと思います。 現象は同じで、最初は RxStatsDropEvents は発生しませんが、数フレーム後に発生します。 私のEB構成は添付ファイルの通りです。ご都合の良い内容かどうかご確認いただけますでしょうか。 ありがとうございます。 Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 RxStatsDropEventsは、一部のフレームがGMACによって認識されているものの、RXパスのどこかでドロップされていることを示唆しています。これはRXリソースの可用性、RX FIFO/キュー処理、ディスクリプタ/バッファの可用性、パケットフィルタリング、または上位層の受信処理に関連している場合があります。   以下の点を確認してください。   1. PCから同じユニキャストフレームをゆっくりと送信してください。例えば、一度に1フレームずつ送信したり、フレーム間に大きな遅延を設けたりして、テストの前後の受信統計を比較してください。もしRxStatsDropEventsが増加しなくなった場合、その問題はRXバッファのリサイクル、プロセッシング時間、またはPCからのトラフィックのバーストに関連している可能性があります。   2. ブロードキャストフレームでテストを繰り返し、その後GMACドライバで設定されたMACアドレスに正確に割り当てられたユニキャストフレームでテストを繰り返してください。これにより、MACアドレスやフィルタリングの問題を除外することができます。   RGMIIクロックとペリフェラルの設定も必ず確認してください。参考までに、NXPコミュニティでGMACのS32K358例を公開しています: https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K358-GMAC-1G-lwIP-FreeRTOS-S32DS-3-6-1-RTD600/ta-p/2355872     この例はS32K358向けでありS32K328用ではないため、S32K328ピン配置とクロック構成を確認せずに直接コピーしないでください。しかし、全体のクロック設定、Eth_43_GMAC設定、DCMRWFレジスタの回避策の参考として利用できます。   可能であれば、あなたのzip化プロジェクトも共有していただけますか?プロジェクトがなければ、ドロップが設定、RXリソース処理、キュールーティング、またはアプリケーションの受信経路によるものかを判断するのは困難です。 よろしくお願いいたします。 パベル Re: GMAC RX interrupt of S32K328 こんにちは: RTD関数のフレーム情報を読みEth_43_GMAC_GetRxStats、ドロップイベントがあるようです。 zyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.pngzyt_0-1787017861198.png RXフローはすべて以下のようにRTDによって処理され、私は変更していません。 GMAC0_CH0_RX_IRQHandler -> GMAC_RxIRQHandler -> Eth_43_GMAC_RxIrqCallback -> Eth_43_GMAC_Receive その理由は一体何だろうか?ありがとう。 Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 詳細を教えていただきありがとうございます。   また、このThreadに従ってピン/クロック/device_init()も確認してください: S32K358 - GMACクロック構成   スクリーンショットから判断すると、GMAC0割り込みベクタは、GMAC0_CH_0_RX_IRQHandlerを含むRTDハンドラに設定され、マッピングされているようです。このハンドラが時々入力され、フレームが受信されるため、基本的な割り込みルーティングは完全に間違っているわけではありません。   ただし、AUTOSAR Eth_43_GMACドライバーを使用する際は、低レベルIRQハンドラ上の受信フローも必ず確認してください。RX割り込みハンドラ自体は通常、完全なアプリケーションレベルの受信処理ではありません。アプリケーションや上位層は、例えばEth_43_GMAC_Receive()のように期待されるEth_43_GMAC受信APIフローを呼び出す必要があります。これにより、受信フレームがドライバから読み込まれ、設定済みのコールバックパスをさらに通過します。   以下の点をご確認ください。   1. Eth_43_GMAC_Receive()がRX割り込みイベント情報の後、またはアプリケーションデザインに応じてメイン/タスクコンテキストから定期的に呼び出されるかを確認してください。割り込みが発生したにもかかわらず、受信したフレームがRXバッファから消費されない場合、後続のフレームが期待どおりに受信されない可能性があります。   2. 受信されたユニキャストフレーム宛先MACアドレスがGMACドライバで設定されたMACアドレスと正確に一致しているか確認してください。デバッグの目的で、MACフィルタリングを理由に除外するために、一時的にReceive-all/promiscuousモードを有効にすることができます。   3. どのRXキュー/FIFOが使用されているか確認してください。スクリーンショットには、CH0、CH1、CH2のRX割り込みハンドラが表示されています。パケットフィルタやキュー構成がフレームを別のRXキューにルーティングする場合、アプリケーションは対応するFIFOインデックス付きの受信関数を呼び出し、そのキューを正しく処理しなければなりません。   4. RXバッファ/ディスクリプタが利用可能であることを確認してください。受信フレームが処理された後、ドライバはRXバッファを再利用または取得できる必要があります。受信バッファが枯渇した場合、最初のフレームは正しく受信される可能性がありますが、それ以降のフレームは遅延したり、失われたりする可能性があります。   5. キャッシュが有効になっている場合は、GMAC ディスクリプタと RX バッファがキャッシュ不可能なメモリ領域に配置されているか、必要なキャッシュメンテナンスが実行されていることを確認してください。そうしないと、CPUは古い記述子ステータスや古い受信データを認識する可能性があります。   6. フレームはPythonスクリプトからユニキャストフレームとして送信されるため、PCが期待される宛先MACアドレスでフレームを継続的に送信していることをWiresharkで確認してください。一部のフレームがアドレス解決を必要としたり、宛先に期待通り到達できない場合、PC側は再試行や遅延を導入し、MCU側での遅延RX割り込み動作のように見えることがあります。   参考までに、まずは改造されたS32K3イーサネット/lwIPの例と比較してみることをおすすめします。これにより、RGMII PHYインターフェース、クロック、MACアドレス、基本的なRXパスが動作しているか確認し、カスタムAUTOSAR Eth_43_GMAC割り込み受信実装に注力する前に確認できます。   それでも問題が解決する場合は、Eth_43_GMAC_Receive()が呼び出された場合、RX FIFO設定、MACアドレス/フィルター設定、失敗後のGMAC DMA/MTL/MACステータスレジスタなどのアプリケーションEth_43_GMAC受信部分を共有してください。 よろしくお願いいたします。 パベル Re: GMAC RX interrupt of S32K328 こんにちは: 1.私はRGMIIを使用しています 2. 私はRTD 6.0.0を使用しています。 3. 私はEth_43_GMACドライバを使用しています。 4. 中断とは次のようなものです。 zyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.pngzyt_0-1786962682804.png 5. Pythonスクリプトを使ってユニキャストフレームを送信します。 私が送信するパッケージはすべて同じで、GMAC0_CH0_RX_IRQHandler は RTD からのもので、上の図のように最も下位のハンドラです。 Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 あなたのセットアップについてもう少し詳しく教えていただけますか?   1. S32K328で使っているMAC/PHYインターフェースは、例えばMII、RMII、RGMIIのいずれかです。 2. 使用しているS32K3 RTDのバージョンは何ですか? 3. AUTOSAR MCAL Eth_43_GMACドライバーを使っていますか?それとも低レベルのGMAC IPドライバーを使っていますか? 4. 関連する割り込み設定とGMAC0_CH0_RX_IRQHandlerの実装について教えていただけますか? 5. PCから送信されるフレームの種類は、ping/ICMP、UDP、生のイーサネットフレーム、ブロードキャストフレームやユニキャストフレームなどです。   参考テストとして、まずは適応したS32K3イーサネット/lwIPの例を使ってこの挙動を再現してみることもおすすめします。これにより、基本的なGMAC/PHY/クロック/設定の問題と、アプリケーション固有の割り込みやRXバッファの処理問題を区別するのに役立ちます。     症状についてですが、時折RX割り込みが呼び出されフレームが正しく受信できれば、基本的なRXパスは少なくとも部分的に動作している可能性が高いです。しかし、この一貫性のない動作は、以下のいずれかの原因による可能性があります。   - RXバッファまたはディスクリプタ処理:受信フレームが処理された後、RXバッファ/ディスクリプタはドライバ/DMAに戻されなければなりません。これが正しく行われないと、RXバッファが使用できなくなり、その後のRX割り込みが停止したり、不安定になったりする可能性があります。   - 割り込み処理:RX割り込みが正しいGMACチャネルに設定されており、期待されるドライバー割り込みハンドラ/状態クリアリングフローが使用されていることを確認してください。割り込み状態が正しくクリアされていない場合、以下のRXイベント情報が期待通りに報告されないことがあります。   - キャッシュ/メモリの一貫性: キャッシュが有効になっている場合は、GMAC ディスクリプタと RX バッファが適切なキャッシュ不可のメモリ領域に配置されているか、必要なキャッシュメンテナンスが実行されていることを確認してください。そうしないと、CPUは古い記述子ステータスや古い受信データを認識する可能性があります。   - パケットフィルタリング/MACアドレス: デバッグ目的で、一時的に受信全モード/プロミスキャスモードを有効にしてみてください。これは、フレームがMACアドレスフィルタ、VLANフィルタ、またはその他のパケットフィルタ設定によって拒否されたかどうかを確認するのに役立ちます。   - フレームの種類と PC の動作: PC が ping などの IP トラフィックを送信する場合、ICMP トラフィックが送信される前に、最初のフレームは ARP 要求/応答である可能性があります。ARPの解像度が失敗したり、一部のフレームがフィルタリング・ドロップされた場合、PCがARPを再送信したり、アプリケーションが後で再試行したりして割り込みが数秒遅れているように見えることがあります。   - PHYリンクとクロック:PHYリンクが稼働していること、選択したMII/RMII/RGMIIインターフェースに必要な入力クロックが安定していることも確認してください。   上記の構成の詳細と、可能であれば、障害発生後のGMAC DMA/MTL/MACステータスレジスタを共有してください。これにより、問題が割り込み設定、RXディスクリプタ/バッファ処理、パケットフィルタリング、外部PHY/インターフェース設定に関連しているかどうかを特定するのに役立ちます。 よろしくお願いいたします。 パベル Re: GMAC RX interrupt of S32K328 こんにちは: 以下のように、ご指示いただいたとおりに設定しました。 zyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.pngzyt_0-1787045193851.png zyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.pngzyt_1-1787045222335.png zyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.pngzyt_2-1787045282610.png zyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.pngzyt_3-1787045358003.png EthCtrlReleaseResourceAfterReceptionは外部データバッファを使用した場合にのみ適用されるため、変更できません。 zyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.pngzyt_4-1787045508280.png これらを変更した後も結果は同じで、RxStatsDropEvents が表示されました。 zyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.pngzyt_5-1787045605969.png 変更された設定ファイルは添付ファイルのようなものです。 もう少しアドバイスをいただけますか?ありがとう。 Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 最新情報のご提供ありがとうございます。あなたのファイルを再度確認しましたが、不審な点は何も見つかりませんでした。FIFO/キューのリソースを増やしても動作が変わらない場合は、設定パラメータをむやみに変更し続けるべきではありません。次のステップは、実際にRxStatsDropEventsとしてカウントされるフレームを特定することです。ドロップカウンターが増加するのは、Pythonのユニキャストフレームが送信された時だけなのか、それともPythonのトラフィックが実行されていない時にも増加するのかを確認してください。PC側のバックグラウンドトラフィックやフィルタリングされたフレームも受信統計に影響を与える可能性があるためです。 よろしくお願いいたします。 パベル Re: GMAC RX interrupt of S32K328 すみません、あなたがEBに加入していないことを忘れていました。 添付ファイルは、修正後に生成されたファイルです。 Re: GMAC RX interrupt of S32K328 こんにちは: 私のテストでは、ブロードキャストフレームもユニキャストフレームもドロップでき、pヘノメノンは同じで、PCは私のコントロール外のフレームを送りません。 フレームを送信すると、RTD 関数 Gmac_Ip_ReadFrame が以下の分岐に入るという特別な現象が時々発生します。 zyt_0-1787101369298.pngzyt_0-1787101369298.pngzyt_0-1787101369298.pngzyt_0-1787101369298.pngzyt_0-1787101369298.png それは、(((Bd->Des3 & GMAC_RDES3_OWN_MASK) != 0U) だからです。 zyt_1-1787101442166.pngzyt_1-1787101442166.pngzyt_1-1787101442166.pngzyt_1-1787101442166.pngzyt_1-1787101442166.png 関数コールフローは以下の通りで、すべてRTDドライバーに属します: zyt_2-1787101651452.pngzyt_2-1787101651452.pngzyt_2-1787101651452.pngzyt_2-1787101651452.pngzyt_2-1787101651452.png 現時点では、Eth_43_GMAC_Receive は GMAC バッファのデータを読み取りません。 しばらくするとGMACのFIFOが満タンになると、後から来たフレームが落ちます。 私の分析は理にかなっていると思いますか? もしそうなら、なぜ(((Bd->Des3 & GMAC_RDES3_OWN_MASK) != 0U) が起こったのでしょうか?その理由は一体何だろうか? ありがとう。 Re: GMAC RX interrupt of S32K328 こんにちは: 問題はキャッシュが原因です。プロジェクトからマクロ D_CACHE_ENABLE を削除すると、すべて正常に戻ります。 それはキャッシュコヒーレンシの問題を意味しますか? しかし、D_CACHE_ENABLE を追加して下のチェックボックスをオンにすると、問題も発生しました。 zyt_2-1787215536381.pngzyt_2-1787215536381.pngzyt_2-1787215536381.pngzyt_2-1787215536381.png RTDの可変領域設定は一切変更していませんし、 RTDドライバーを確認したところ、GMAC_0_Rx/TXRing_0_Desc/DataBufferはno_cacheリージョンにありますが、Gmac_apxStateのようにキャッシュされているmcal_bssに入っていません。そんなに妥当なのか? zyt_4-1787215940789.pngzyt_4-1787215940789.pngzyt_4-1787215940789.pngzyt_4-1787215940789.png では、D_CACHE_ENABLEを加えた上でこの問題をどう解決すればいいのでしょうか? ありがとうございます。 Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 詳細なデバッグ情報をありがとうございました。あなたの指摘は参考になりますが、「OWN」の部分については、私は少し違った解釈をします。   RDES3.OWNが設定されている場合、RXディスクリプタはCPUではなくDMAによって所有されます。したがって、Gmac_Ip_ReadFrame()は現在の記述子がまだ完成してソフトウェアに戻されていないため、正しくGMAC_STATUS_RX_QUEUE_EMPTYを報告します。OWN = 1のRXディスクリプタは通常DMAに利用可能であるため、この条件だけでRXリングがブロックされていることやGMACのFIFOが満杯であることを示すわけではありません。   重要な疑問は、RxCurrentDescがまだDMAによって所有されているディスクリプタを指しているにもかかわらず、なぜRX割り込みコールバックが実行されるのかということである。割り込みは別のRX/DMAステータス条件によって引き起こされた場合や、完了した記述子が現在のソフトウェア記述子ポインタと一致しない可能性があります。   生成されたコードは、GMAC RX ディスクリプタと RX データバッファをキャッシュ不可能な MemMap セクションに配置します。しかし、共有プロジェクトにはリンカーマップファイルが見当たらないため、このセクションが最終実行ファイル内のキャッシュできないメモリ領域に実際にマッピングされているかどうか確認できません。   ビルドで生成されたリンカーマップファイルを共有してもらえますか?特に、以下の最終住所とセクションを確認したいと思います。   - GMAC_0_RxRing_0_DescBuffer - GMAC_0_RxRing_0_DataBuffer - GMAC_0_TxRing_0_DescBuffer - GMAC_0_TxRing_0_DataBuffer   また、GMAC_STATUS_RX_QUEUE_EMPTY が、RX 割り込み後の最初の Gmac_Ip_ReadFrame() 呼び出し時に発生するのか、それとも 1 つ以上のフレームが正常に読み取られた後にのみ発生するのかを確認してください。OWNビットが1に設定されている場合、それは単に受信ループの通常の終了を示している可能性があり、次のディスクリプタは既にDMAによって所有されており、別のフレームを待っている状態です。 よろしくお願いいたします。 パベル Re: GMAC RX interrupt of S32K328 こんにちは、 @zyt さん。 最新情報のご提供ありがとうございます。はい、D_CACHE_ENABLEを削除すると問題が解消されるという事実は、キャッシュの一貫性またはメモリ領域の設定に問題があることを強く示唆しています。   しかし、Gmac_apxState自体は通常、キャッシュ不可能なメモリに配置する必要はありません。CPU側のドライバの状態とポインタを含み、GMAC DMAから直接アクセスされることはありません。CPUとGMAC DMAの間で共有される重要なオブジェクトは、ハードウェア記述子リングとRX/TXデータバッファである。   以前共有された生成ファイルを確認しました。Gmac_Ip_Cfg.h では、生成された設定には以下が含まれていました。   #define GMAC_HAS_CACHE_MANAGEMENT (STD_OFF)   同時に、Gmac_Ip_Cfg.cGMACのRX/TX記述子とデータバッファをNO_CACHEABLE MemMapセクションに配置します。したがって、生成される構成は、これらのオブジェクトが本当にキャッシュできないメモリ領域にマッピングされることに依存しており、GMACドライバーによる明示的なキャッシュ保守に依存していないようです。   EthEnableCacheManagementを有効にした後、RTD構成全体を再生成し、クリーンビルドを実行してください。次に、Gmac_Ip_Cfg.h 内の GMAC_HAS_CACHE_MANAGEMENT の値を確認してください。実際にコンパイルされるファイル。STD_OFFのままの場合、生成されたビルドでは低レベルのGMACキャッシュメンテナンスが有効になっていません。   リンカーマップファイルと、関連するリンカー/MPUメモリ領域の設定も共有してください。以下の最終セクションとメモリ属性を検証する必要があります。   - GMAC_0_RxRing_0_DescBuffer - GMAC_0_RxRing_0_DataBuffer - GMAC_0_TxRing_0_DescBuffer - GMAC_0_TxRing_0_DataBuffer   生成されたソースコードはこれらのオブジェクトをキャッシュ不可能なセクションに配置しますが、リンカースクリプトとMPU構成もそのセクションを真にキャッシュ不可能な領域にマッピングする必要があります。そうしないと、DMAがRAM内の記述子を更新した後でも、CPUは古いキャッシュされた記述子値(例えばOWN = 1)を読み取ってしまう可能性があります。   現時点では、Gmac_apxStateをキャッシュ不可能なメモリに移動することはお勧めしません。最初のステップは、すべてのDMA共有ディスクリプタとバッファが正しい非キャッシュ可能なMPU領域に配置されているか、あるいはコンパイル済みドライバ構成でGMACキャッシュ管理が本当に有効であるかを確認することです。 よろしくお願いいたします。 パベル
View full article
S32N55: How to build a blob image for fast wake-up boot. Hello Team, As we know, the S32N55 supports Fast Wake-up Boot. I tried building a blob image using the same format as Full Wake-up Boot, but the boot process failed. Could you please guide me on how to correctly build a blob image for Fast Wake-up Boot? Thank you! Tangsheng_Zhou_0-1766369489644.pngTangsheng_Zhou_0-1766369489644.png Best regards, Tangsheng. FSS_FW Priority: MEDIUM Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou, The team has picked up the case and will provide an answer as soon as possible.  Best regards, Radu  Re: S32N55: How to build a blob image for fast wake-up boot. Hello @RaduBraga  I noticed that this ticket has been closed. Is there any update on the progress?   Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , I took over the case and will provide a response as soon as possible.   Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , If you are supporting a Direct Customer, please provide: BSSM Contract: Yes / No Customer Company*: Project Name*: Customer Contact Point* (Name & Email): Software & Hardware Information: SW Package Info*: HW* (Board/Chipset/Platform): SW Version*: *required I am still working with the development team for this case Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , Thank you for these details, I am working on this case and will provide an answer as soon as possible! Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  This case is not tied to any specific customer or project. However, I believe customers may encounter similar questions in the future, which is why I raised this request.   Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  Below are the detailed steps for testing.   1. built a small FSS image within AOSRAM memory region(reserved the IVT header), which only have a while loop in main.c Tangsheng_Zhou_0-1784553297963.pngTangsheng_Zhou_0-1784553297963.png 2. build the FSS Firmware image,  do I need to fill the FRB Threshold Reg? If so, how to fill it or any special thing need to be considered. Tangsheng_Zhou_1-1784553422329.pngTangsheng_Zhou_1-1784553422329.png 3. built the IVT blob image in IVT tool, with start address from 0x24800000 4. write the IVT blob image into flash at 0xD00000. 5. before the system enter sleep, copy the IVT blob image into AOSRAM, and configure the WKPU mode for FSS_WKUP0 as fast wake-up mode. Tangsheng_Zhou_2-1784553712231.pngTangsheng_Zhou_2-1784553712231.png Tangsheng_Zhou_3-1784553730808.pngTangsheng_Zhou_3-1784553730808.png 5. wakeup the system image via FSS_WAKUP0. The FSS could not reach the while(1) loop. It appears that a reset event was triggered during the wake-up process instead of a fast wake-up.   Thanks for your support!   Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hello @Tangsheng_Zhou , It would help if you could share the exact steps you followed when you tried to build the blob image. I think it would be easier for us to identify the issue that way.   Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hi @Tangsheng_Zhou , FRB is for TCM memory (ITCM +DTCM). In theory we have 2 cases 1: FAST wakeup Boot      for fast wakeup FRB is not needed, due to the fact that image boots from AON SRAM Memory. 2: FULL wakeup Boot      Can you tell me if you want to boot to ITCM? if yes FRB threshold 0 should be provided in FSS Image header, the address is 12 bit masked and address will be calculated as multiple of 8kb for FRB .       Hope this helps a little. Also could you provide me the IVT blob? Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  No, I just want to run the F-Core in AO-SRAM.  main_app1.bin is the FSS firmware image. How to fill these two field, should it be started from AO_SRAM address, 0x24800000? the start pointer and entry pointer of my image is 0x24800240. Tangsheng_Zhou_0-1784682563629.pngTangsheng_Zhou_0-1784682563629.png main_blob1.bin is the blob image that contain IVT header. Thanks! Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  The complete IVT image rather than the FSS Firmware was copied to AO_SRAM before entering sleep mode to test the fast wake-up functionality.   Thanks! Best regards, Tangsheng Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  The whole IVT blob image was copied to start of AO_SRAM, including IVT header and FSS FW header, and FSS FW binary. Thanks! Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hi @Tangsheng_Zhou , Just to make sure I understand the flow, are you copying the complete IVT blob image to the beginning of AO_SRAM before sleep, or are you copying only the FSS firmware image for Fast Wake-up Boot? Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hi @Tangsheng_Zhou , Could you please confirm that the Fast Wake-up Boot is completing successfully? If the wake-up process is confirmed to be working as expected, this may indicate an issue with the image.  I would like to narrow down the possible causes step by step   Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  I think the WKPU configuration is correct. As I understand it, the main difference between Full Wake-up and Fast Wake-up is the WBMSR configuration. Is that right? Are there any other settings or factors that need to be considered? Also, could you please share the correct steps or a fast wake-up blob image verified by you or your team? Thanks for your support! Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hi @Tangsheng_Zhou , The team is currently overloaded with releases. I’ll apply a bit of pressure on my side, do some investigation and get back to you with an answer as soon as possible.   Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hi @Tangsheng_Zhou , WBMSR is one of the key differences between Full Wake-up and Fast Wake-up Boot. However, it is not the only factor. For Fast Wake-up Boot, BootROM expects a valid image (IVT + FSS FW, with Wakeup DCD if required) to be available in AON SRAM before entering sleep. In addition to WBMSR, the wake-up source configuration, AON SRAM retention and valid IVT/FSS headers should also be verified. The expected Fast Wake-up flow is:   1. Generate the IVT blob image containing IVT + FSS FW. 2. Add Wakeup DCD if required. 3. Copy the blob image to the beginning of AON SRAM. 4. Configure the system for Fast Wake-up mode. 5. Enter sleep and trigger the wake-up source Regarding a verified Fast Wake-up blob image, I am checking internally and will update you if a validated reference image is available   Hope this helps a little.   Best regards, Paul Re: S32N55: How to build a blob image for fast wake-up boot. Hello @PaulB0bes  Thanks for your reply. I tested the fast wake-up function following the steps you provided, but the issue is still present. Could you please confirm whether you have tested it successfully on your side?   Thanks!  Best regards, Tangsheng. Re: S32N55: How to build a blob image for fast wake-up boot. Hi @Tangsheng_Zhou , If you believe the provided answer is appropriate and you have no further questions regarding the ticket, please mark the answer as "Accept as Solution". For future cases please use NXP JIRA: Jira Project  Additionally, if we do not receive a response within the next 7 days, we will close the case. Best regards,  Paul 
View full article
imx8mp-evk SAI5外部I2Sマイク(SPH0645) - クロック生成に失敗しました。正しいクロックについて助けが必要です。 こんにちは、 基板:i.MX8MPLUSLPD4-EVK(8MPLUS-BBベース基板)   SAI5に外部I2S MEMSマイクロフォン(Knowles SPH0645LM4H)を取り付けます。 J21(EXP_CN)に物理的に配線されているSoC側のピンを使用する ベースボードの回路図に従って、レベルシフターU57/U58を介して拡張ヘッダーを接続 (SPF-46370)   1. ハードウェア配線(回路図と照合し、オシロスコープで検証済み)   SPH0645 BCLK -> J21 ピン 40 ("PDM_CLK", SoC パッド SAI5_RXC) SPH0645 LRCL -> J21 ピン 32 ("PWM4_3V3", SoC パッド SAI5_RXFS) SPH0645 DOUT -> J21 ピン 38 ("PDM_STREAM_0"、SoC パッド SAI5_RXD0) SPH0645 SEL - > GND(左チャンネル) SPH0645 3V -> J21 ピン 1 SPH0645 GND  -> J21 ピン 6   外部I2S MEMSマイクロフォン(SPH0645)を接続しようとしています SAI5、J21拡張ヘッダーに配線(BCLK -> SAI5_RXC、LRCL -> SAI5_RXFS、DOUT > SAI5_RXD0、8MPLUS-BB回路図と照合して確認済み (オシロスコープで確認済み)。   私たちはこの問題に直面しており、解決のための支援を必要としています。   サウンドカードは正しく認識されています。   root@imx8mp-LPDDR4-EVK:~# Arecord -l カード2:SPH0645audio [SPH0645-オーディオ]、デバイス0:...   しかし、クロックエラーにより録音が失敗します。   root@imx8mp-lpddr4-evk:~# arecord -D hw:CARD=sph0645audio,DEV=0 \ -f S16_LE -r 48000 -c 1 mic.wav [  140.950940]fsl-sai 30c50000.sai:必要な処方率を算出できませんでした: 3072000 [  140.958042]fsl-sai 30c50000.sai:ASoC: 30c50000.sai の snd_soc_dai_hw_params でエラーが発生しました:-22 arecord: set_params:1435: ハードウェアパラメータをインストールできません   clk_summaryを確認すると、sai5は依然として24MHzから派生していることがわかります。 オーディオPLLではなくオシレーター:   sai_pll_out_div2      0  0  50000  Y   0  0  0  24576000 sai5                  0  0  50000  N   0  0  0  24000000 sai5_root             0  0  50000  N   0  0  0  24000000   現在の&sai5ノード:   &sai5 { #sound-dai-cells = <0> pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai5>; assignment-clocks = <&clk IMX8MP_CLK_SAI5>; assignment-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; 割り当てられたクロックレート = <12288000>; fsl、sai-mclk方向出力; fsl、sai非同期; fsl,dataline = <0 0x1 0x0>; ステータス = "okay" };   pinctrl_sai5: sai5grp { fsl,pins = < MX8MP_IOMUXC_SAI5_RXFS__AUDIOMIX_SAI5_RX_SYNC 0xd6 MX8MP_IOMUXC_SAI5_RXC__AUDIOMIX_SAI5_RX_BCLK 0xd6 MX8MP_IOMUXC_SAI5_RXD0__AUDIOMIX_SAI5_RX_DATA00 0xd6 > };   また、pinctrlグループが このボード上のSAI5_RXC/RXD0/RXFSと同じ物理パッドです。   SAI5のクロックをオーディオPLLに正しくルーティングするにはどうすればいいでしょうか。 24MHz発振器を使用する代わりに、3072000Hz(48kHz)を生成する パス?   参考までに画像も添付しました。   ありがとう。 IMG_8200.jpegIMG_8200.jpeg IMG_8205.jpegIMG_8205.jpeg    preview.jpgpreview.jpg preview (1).jpgプレビュー(1).jpg    Re: imx8mp-evk SAI5 external I2S mic (SPH0645) - clock derivation fails, need help with correct cloc こんにちは、 次の設定を試してみることをお勧めします。 &sai5 { #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai5>; assigned-clocks = <&clk IMX8MP_CLK_SAI5>; assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; assigned-clock-rates = <12288000>; clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_IPG>, <&clk IMX8MP_CLK_DUMMY>, <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_MCLK1>, <&clk IMX8MP_CLK_DUMMY>, <&clk IMX8MP_CLK_DUMMY>, <&clk IMX8MP_AUDIO_PLL1_OUT>, <&clk IMX8MP_AUDIO_PLL2_OUT>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k"; fsl,sai-asynchronous; fsl,dataline = <0 0x1 0x0>; status = "okay"; }; クロックやクロック名のバインディングがない場合、ドライバは24 MHz発振器にフォールバックします。また、マイクに接続しない場合は、fsl,sai-mclk-direction-outputプロパティは必要ありません。 よろしくお願いいたします。
View full article