Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
S32K388 GMAC0 Eth_43_GMACドライバ送信支援 こんにちは、 私は以下の設定を使用しています。 S32K388EVB-Q289 S32DS 3.6.8 RTD 7.0.1 以前の投稿で述べたように、GMAC0 Eth_43_GMACドライバ S32K388 RX割り込みを受け取れません。提供されたEth_InternalLoopback_S32K388例プロジェクトをベースにし、PCからメディアコンバーター経由でフレームを受け取れるように改良しました。 今は逆方向に進めようとしています。つまり、評価ボードからイーサネットフレームをPCに戻すというS32K388です。PC上でwiresharkを使ってフレームをキャプチャしています。送信しようとしているフレームは、MACアドレスFF:FF:FFのブロードキャストフレームです。しかし、PC上で複数回試みても1フレームしか受信できず、一貫性がありません。 @PavelL、この問題についてもう一度助けていただけませんか?ありがとう。 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help こんにちは、 @James_Zhang_SE さん、 あなたのプロジェクトを確認したところ、いくつかの細かな設定の違いしか見つかりませんでしたが、イーサネット伝送には影響しないようです。   複数回の試行で1フレームしか受信できないというのはどういう意味でしょうか?例えば、ボードの電源投入サイクルが完了するたびに1フレームが観測されるのか、それとも複数回の電源投入サイクル後やデバッグセッション後に時折しか観測されないのか、といった点です。また、デバッガでアプリケーションを継続的に実行していますか?それとも送信のたびに再起動していますか?   アプリケーションはEth_43_GMAC_Transmit()を一度だけ呼び出し、その後無限ループに入ります 。したがって、アプリケーション実行ごとに送信フレームは1つだけです。   この不整合な挙動は、送信リクエスト時にイーサネットPHYリンクが確立されていないことが原因かもしれません。フレームはGMACコントローラがアクティブモードに設定された直後に送信され、PHYリンクの状態は確認されません。TJA1120リンクがまだ確立されていない場合、送信された唯一のフレームが失われる可能性があります。   PHYがリンクアップを報告するまで待ってから、Eth_43_GMAC_ProvideTxBuffer()と Eth_43_GMAC_Transmit()を呼んでください。TJA1120リンクの状態を読み取る例は、device.cでbool get_device_link_status(uint8_t u8TrcvIdx)を使って確認できます。   この関数は、 SW32K3xx_M7_gPTP_1.1.0_CD01_D2602_DesignStudio_updatesite.zipに含まれるS32K388_gptp_dsサンプルで使用されており、S32K3 RTD 7.0.1 に適しています。   簡単な初期テストとして、送信前に十分長い遅延を設けることもできます。これによりフレームが安定して表示されるようになれば、問題がPHYリンクの確立に関連していることが確認できるだろう。 よろしくお願いいたします。 パベル Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help こんにちは、パベルさん。 迅速なご対応ありがとうございます! 今日はいくつか試してみました。 TCP/IPスタックのサンプルを使用して、同じハードウェア構成でテストを行いました。その例では、すべて正常に動作し、S32K388評価ボードからPCでエコー応答を受け取ることができます。 私のアプリケーションでは、すぐにブレイクポイントを付けました: Eth_43_GMAC_SetControllerMode(EthConf_EthCtrlConfig_EthCtrlConfig_0, ETH_MODE_ACTIVE); ブレークポイントに到達した後、しばらく待ってから、Eth_43_GMAC_ProvideTxBuffer() を手動で実行して処理を続行しました。残念ながら、PC側では送信されたフレームをまだ受信していません。 先ほど説明した挙動についてですが、アプリケーションをテストするたびにメディアコンバーターと評価ボードの両方を電源サイクルしています。その後、組み込みデバッガを使ってアプリケーションを読み込み、実行を開始します。 これまでに 2回の成功した送信を観察しましたが、その2つのCASEで何が違ったのか、なぜフレームが成功したのかは判明できません。今日行ったテストを含め、これまでの試みはすべて失敗に終わった。 これまでのご協力に本当に感謝しています。この現象の原因をまだ解明しようとしているところです。何かご助言やご提案があれば、ぜひお聞かせください。 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help こんにちは、 @James_Zhang_SE さん、 詳細なアップデートをありがとうございます。TCP/IPスタックの例が同じハードウェアセットアップで正しく動作していることは、基本的なハードウェアパス、GMACインターフェース、イーサネットリンクが正常に動作していることを裏付けています。 main.cを修正しましたフレームを送信する前に明示的にリンクアップを待つように、内部ループバックの例のファイル。この実装をS32K388EVB-Q289でテストしたところ、電源を入れるたびにWiresharkで送信フレームが一貫して確認できます。 以下の手順もテストしました。 GMAC0とメディアコンバーターの間のケーブルを外してください。 S32K388評価ボードを起動してアプリケーションを開始してください。 ケーブルをメディアコンバーターに再接続してください。 ケーブルを再接続すると、アプリケーションはリンクを検出し、送信されたフレームがWiresharkに期待通り表示されます。 私のハードウェア構成は以下のとおりです。 S32K388EVB-Q289 GMAC0 ↔ TE-1402メディアコンバータ(1 Gbit/sおよびフォロワーモード↔対応、USB to-イーサネットアダプター↔対応、Dell ノートPC、Windows 11搭載) 修正した main.c と対応する .mex ファイルを共有します。設定ファイルとmex_diff.htmlを用意して、私の設定とあなたの設定をより簡単に比較できるようにしてください。提供されたファイルを適切に置き換え、S32 Design StudioでUpdate Codeを実行し、テスト前にプロジェクトを再構築してください。 私の.mexファイルにはまだ設定の詳細が残っている可能性があります。信頼性の高い伝送に重要なファイル。したがって、まずは共有設定を一切変更せずにテストすることをお勧めします。お使いの環境で動作するのであれば、mex_diff.html を使用して、2 つの設定間の関連する差異を特定できます。 よろしくお願いいたします。 パベル Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help こんにちは、パベルさん。 本日、あなたが共有してくださったファイルを使ってテストを行いました。私は両方のファイルをそのまま置き換え、あなたが述べたのと同じ手順でデバッグを行いました。つまり GMAC0とメディアコンバーターの間のケーブルを外してください。 S32K388評価ボードを起動してアプリケーションを開始してください。 ケーブルをメディアコンバーターに再接続してください。 しかし、Wiresharkでフレームがキャプチャされている様子がまだ確認できません。ファイルの置き換え前と置き換え後の両方で、 EthIf_TxConfirmation() のブレークポイントに到達することができました。 フレームの伝送に影響を与える他の要因や原因、セットアップの違いを思い浮かべられますか?この件に関してご協力いただき、本当に感謝しています。 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help こんにちは、 @James_Zhang_SE さん、 基板の電源を入れる前にケーブルがコネクテッドされた状態でWiresharkでフレームが見えますか? lwIPのサンプルがあなたのボードで動作するなら、ハードウェアの接続などは正しいと推測します。 あなたの場合は「レシーバ」側が考えられます: 1. Wiresharkがプロミスキャスモードで実行されているかどうかを確認します。 2. 別のデバイスを使用してフレームをキャプチャします。例:Linux搭載のノートPC。WindowsでWiresharkでフレームキャプチャに迷ったときは、S32G-VNP-RDB2とLinux BSPまたは Demo EthernetAnalyzer FRDM-A-S32K344 RTD 7.0.1を使ってフレームキャプチャを行っています。 3. フレーム内のDST MACアドレスをイーサネットアダプターのMACアドレスに設定します。 よろしくお願いいたします。 パベル
記事全体を表示
PXO 是否是现代高可靠性电子系统的理想灵活时钟解决方案? 在科技飞速发展的时代,电子设备的性能和可靠性至关重要。来自全球领先晶振(晶体振荡器)元器件供应商的可编程晶振(晶体振荡器) (PXO) 能否为人工智能、汽车电子、通信(路由器、交换机、5G 基站)、医疗、工业自动化、消费电子和物联网提供强大的支持,从而推动现代技术发展? PXO 是一种有源晶振(晶体振荡器),其输出频率可通过数字方式配置。它基于传统的晶振(晶体振荡器)架构,并集成了可编程控制电路,将晶体设备的高精度与数字可配置性相结合。这种“硬件精度+软件配置”解决方案为系统时钟设计带来了卓越的灵活性,是多品种和快速周转产品开发的理想选择。 主要技术亮点 重新定义精确计时 凭借精密制造工艺和自适应温度补偿算法,新型 PXO 系列在 -40 ° C 至 +85 ° C 的温度范围内可保持 ± 25ppm 的频率稳定性,在 -40° C 至 +105 °C的扩展温度范围内可保持 ± 50ppm 的频率稳定性。先进的晶体和振荡器电路设计实现了业界领先的低相位噪声。该系列产品在 100Hz、1kHz 和 10kHz 偏移频率下均具有出色的相位噪声性能,典型相位抖动(12kHz – 20MHz)低于 70fs,可满足通信和测试仪器等高精度应用的需求。 无限频率,用户可编程 它覆盖了 1MHz 至 1.5GHz 的宽频率范围,调谐分辨率可达 1Hz 或更高。部分型号支持可配置输出逻辑(LVPECL、LVDS、HCSL)、供电电压(1.8V/2.5V/3.3V),并启用/禁用控制以适应各种电路设计,消除了与传统固定频率晶体相关的较长交付周期。 微型外形尺寸 提供标准的 3.2× 2.5mm 和 2.5 × 2.0mm 封装。紧凑的尺寸适用于空间受限的设计,例如智能手机和高密度工业 PCB,可简化硬件集成。 超低功耗 针对低功耗运行进行了优化,降低了运行电流和待机电流。它可以延长电池寿命高达 40%,使其非常适合物联网和便携式设备。
記事全体を表示
S32G3 或非 Flash 从 M7 启动失败 您好,NXP, 目前我使用的是 GoldVIP-S32G3-1.16.0 中的示例引导加载程序。 我的设备是 S32G399 金盒版,BSP 版本为 48.0.0 我已配置好使用或非 Flash 和 M7 作为启动核心进行启动。 M7_bootloader 启动成功 -> M7 应用程序启动正常,但 A53 卡住了。 我正在使用 S32 Flash Tools 刷写 或非 固件。 1. fsl-image-flash-s32g399ardb3.flashimage 位于 0x00 -> 启动成功 -> 进入 Linux 系统成功 2. 将引导加载程序刷写到 0x00 (bootloader_0x000000.bin)。大小:154kb 3. 将 BootLoader_Configuration.bin 刷写到 0x1f0000 4. 将 a53_bl2_0x300_0000_DebugLevel5.bin 烧录到 0x300_0000 地址 BL2 无法启动 BL31 -> 那么 Linux 就无法启动,您能帮我解决这个问题吗? 谢谢 金VIP Re: S32G3 NOR Flash booting from M7 fail 您好, 为确保您的问题及所有相关疑虑得到我们技术支持团队的妥善审查和跟踪,请通过 NXP 支持门户创建支持工单。 您可以点击此处查看教程: https://www.nxp.com/company/about-nxp/smarter-world-videos/NCP-VIDEO 登录您的 NXP 帐户后,打开帐户菜单并选择“支持工单” ,如附图所示。 请在工单中包含您的问题的全部细节以及任何相关的日志、配置文件或屏幕截图。 提交工单后,技术支持团队将审核您的咨询,并通过该工单给出相应的回复。 此致, 阿尔多。
記事全体を表示
ISP1564 EHCI 间歇性 PCI/DMA 故障,异步断开连接后可能出现 QH/qTD 写回。 我们正在调查仅在部分相同系统上发生的间歇性 ISP1564 EHCI 故障(该故障发生在 USB 流量下)。我们怀疑存在 PCI DMA/EHCI 异步 QH 解链时序问题,涉及 IAA 之后的 QH/qTD 写回。由于有记录的 PCI 吞吐量考虑因素,我们还在评估 BAR+0x6C 处的 ISP1564 系统调优寄存器,特别是 RBD 和 WMD。是否存在已知的 ISP1564 芯片错误,涉及异步调度取消链接、IAA、QH/qTD 写回、PCI DMA、环形缓冲或水印操作?
記事全体を表示
S32k144 ADC 示例代码(RTD 非 Autosar) - 无法运行/版本错误 您好, 我正在使用 RTD 非 AUTOSAR 驱动程序中现有的 Pdb_Adc 示例。在外部配置工具中配置好ADC通道并尝试编译后,我遇到了一个关于缺少头文件的编译错误:   ../板/Port_Ci_Port_Ip_Cfg.h:47:10: 致命错误:Port_Ci_Port_Ip_Types.h:没有这样的文件或目录 Port 驱动程序的代码生成或包含路径似乎不完整。可以   S32K1 #ADC Re: S32k144 ADC example code (RTD Non Autosar) - Not working / Build error 嗨@VaneB , 谢谢你的回复,是的,按照你说的做是有效的。 现在错误已清除上传的代码,但是 S32k144 评估板上的 ADC 值不会随着电位器位置的变化而变化。我需要添加任何功能或捕获数据吗?请指导我如何解决这个问题。另外,我附上了主函数文件供您参考。 Re: S32k144 ADC example code (RTD Non Autosar) - Not working / Build error 嗨@Buddyn 在原始演示中,没有使用引脚工具配置任何引脚,因此无需在外设工具中添加 Port_Ip 驱动程序。 但是,由于您现在要配置ADC引脚,因此需要添加Port_Ip驱动程序。您还需要将引脚工具功能组名称更改为PortContainer_0_VS_0 ,这对应于: 来自 Port_Ip 驱动程序的 PortContainer 名称+ " _ " +外围设备功能组名称 您可以在下图所示的窗口中修改名称: BR,VaneB Re: S32k144 ADC example code (RTD Non Autosar) - Not working / Build error 嗨@Buddyn 您是否只修改了我之前提到的 Port_Ip 驱动程序和功能组名称部分? 我注意到,在你分享的项目中,ADC0_SE12 配置为输出。需要将其配置为输入以读取ADC值。 我还建议您查看S32M24x/S32K1 – FTM/TRGMUX/PDB/ADC – [RTD300]主题。它提供了一个更复杂应用的范例。该示例使用了 S32K144EVB-Q100 上的电位器,但该实现方式仍然可以作为您应用的参考。
記事全体を表示
S32k144 ADC割り込みコード生成(設定を用いてRTD非AUTOSARベース) こんにちは、 こんにちは、皆さん   私は S32K144評価ボード と協力し、 非AUTOSARリアルタイム・ドライバ(RTD)を使用しています。   設定ツールを使用してADC割り込みコードを生成する。提供されたサンプルコードを確認したところ、期待どおりに動作するものもあれば、そうでないものもありました。この動作の一貫性のなさから、最初からやり直したいと思います(ベアメタルではなく構成を使用します)。 FTM、ADC、CAN、I2Sなどのペリフェラルをこの設定ツールで設定するためのステップバイステップ手順を示す公式の文書やアプリケーションノートはありますか? s32k144に関するガイダンスや参考資料があれば、大変ありがたいです。ありがとう!   S32K1 #ADC #S32k144     Re: S32k144 ADC interrupt code generation using configuration (RTD Non autosar based) こんにちは、 @Buddynさん ほとんどのドライバにはユーザーマニュアルと統合マニュアルがRTDに付属しています。これらの文書は、ドライバの制限、ハードウェアおよびソフトウェアの要件、使用状況、設定などに役立つ情報を提供します。 例えば、これらの文書は以下のルートで見つけることができます。 C:\NXP\S32DS.3.6.10\S32DS\ソフトウェア\PlatformSDK_S32K1_S32M24\RTD\Adc_TS_T40D2M30I0R0\doc さらに、最近さらに多くの例が公開されており、 Application Code Hubで利用可能です。参照としてもご利用いただけます。 BR、VaneB
記事全体を表示
i.MX8M Plus – 通过 Remoteproc 重启 Cortex-M7 后 Linux 挂起 尊敬的恩智浦技术支持团队: 在使用 Linux remoteproc 框架重启 Cortex-M7 内核后,我们在 i.MX8M Plus 平台上遇到了 Linux 挂起问题。 我们希望您能协助我们找出根本原因,并确定在不影响 Linux 电源管理单元的情况下重启 M7 核心的正确步骤。 1. 系统配置 SoC:NXP i.MX8M Plus (i.MX8MP) Linux 内核:6.1.22(基于恩智浦的BSP) 应用核心:运行 Linux 系统的 Cortex-A53 实时核心:运行裸机固件的 Cortex-M7 M7固件加载:初始启动期间使用U-Boot bootaux ,固件更新期间使用Linux remoteproc。 A53–M7 通信:RPMsg Linux 挂起模式:深度睡眠(内存) 2. 问题描述 在 Cortex-M7 内核重启之前,Linux 挂起程序运行正常。 但是,通过 Linux remoteproc 停止并重新启动 M7 内核后,Linux 无法再完成挂起过程。 即使 M7 固件启动成功且 RPMsg 通信已恢复,仍然会出现故障。 M7重启顺序如下: M7 restart: stop RPMsg users M7 restart: stop remoteproc0 M7 restart: start remoteproc0 M7 restart: wait RPMsg tty created M7 restart: start RPMsg users open_rpmsg_linux_port: /dev/ttyRPMSG31 => OK M7 restart: done update=success M7=running 系统完全重启后恢复正常运行。 3. 暂停测试结果 我们进行了以下测试: 测试条件结果 M7 重启前, pm_test=设备 经过 M7 重启后, pm_test=freezer 经过 M7 重启后, pm_test=设备 失败/挂起 M7重启后,Wi-Fi驱动程序已卸载。 失败/挂起 M7 重启后, pm_test=platform 失败/挂起 可以通过以下命令重现此故障: echo devices > /sys/power/pm_test echo mem > /sys/power/state 故障期间,内核报告 RCU 停滞。 相关信息包括: PM: suspend entry (deep) tcpci 1-0050: tcpci_suspend returned 0 imx-rproc imx8mp-cm7: platform_pm_suspend returned 0 rcu: INFO: rcu_preempt self-detected stall on CPU 内核堆栈跟踪信息包括: console_emit_next_record console_unlock vprintk_emit initcall_debug_start dpm_run_callback __device_suspend async_suspend 该问题似乎发生在 Linux 设备挂起阶段,但我们尚未确定具体是哪个设备或硬件资源导致了该问题。 4. 已开展的调查 我们调查了 M7 固件初始化是否会修改共享时钟或资源配置。 M7固件使用以下功能初始化硬件: BOARD_InitHardware() BOARD_InitMemory() BOARD_RdcInit() BOARD_InitBootPins() BOARD_BootClockRUN() BOARD_InitDebugConsole() 其他应用程序初始化包括BOARD_InitClock() 。 我们已执行以下检查: A. AHB 根时钟 我们禁用了 M7 固件的 AHB 根时钟重新配置指令,并重复了测试。 结果:Linux 挂起失败的问题依然存在。 B. Linux时钟框架 我们比较了M7 重启前后的/sys/kernel/debug/clk/clk_summary文件。 结果:报告的时钟配置未发现任何差异。 C. RDC 登记册 我们比较了 M7/A53 主功能域分配寄存器和外围设备访问策略寄存器的一个子集。 结果:M7 重启前后所有比较值均相同。 D. CCM时钟门寄存器 我们使用只读诊断工具直接比较了 CCM CCGR0 至 CCGR102。 结果:M7 重启前后,所有 103 个寄存器的值都相同。 E. 中断配置 我们对比了重启前后的/proc/interrupts 文件。 结果:未观察到明显的异常中断行为或 IRQ 注册缺失。 F. Wi-Fi 驱动程序 我们卸载了 Wi-Fi 驱动程序,以排除 Wi-Fi 挂起处理是导致问题的原因。 结果:挂起失败的情况依然发生。 这些结果表明,问题可能涉及 M7 初始化期间的临时变化、共享硬件资源或 Linux 驱动程序电源管理单元状态,而不是对所检查寄存器的持久性变化。 5. 向恩智浦提出的问题 我们希望您能就以下方面提供指导: 在 i.MX8M Plus 上,通过 remoteproc 重启 Cortex-M7 内核后,Linux 深度挂起是否存在已知问题,尤其是在 Linux 6.1.22 版本中。BSP? 通过 U-Boot 启动aux启动 M7 和通过 Linux remoteproc 重启 M7 在共享时钟、RESET、RDC、GPC 或功率域处理方面是否存在任何差异? 即使最终的 CCM 和 RDC 寄存器值保持不变,从 M7 固件执行BOARD_RdcInit()或BOARD_BootClockRUN()是否会干扰 Linux 设备挂起? 当 Linux 系统已经运行,而 M7 又重新启动时,NXP 是否建议修改 M7 SDK 硬件初始化顺序? 通过 remoteproc 重启 M7 后,是否需要对 Linux 端硬件、时钟、功率域或驱动程序进行任何额外的重新初始化? 是否有推荐的内核补丁、调试程序或参考实现,以便在保持 Linux 挂起/恢复功能的同时安全地重启 M7? 鉴于故障发生在pm_test=devices期间,并且堆栈跟踪包含console_emit_next_record()和async_suspend() ,那么识别确切的故障设备或回调的推荐方法是什么? 6. 更多信息 如有需要,我们可以提供以下材料: 完整的 Linux 内核挂起日志,包括 RCU 停顿堆栈跟踪 M7固件初始化源代码 Linux 远程进程重启日志 RDC注册表比较 CCM时钟门寄存器比较 Linux时钟摘要和中断比较 设备树配置 我们的主要目标是在不重启整个 Linux 系统的情况下,通过 Linux remoteproc 支持 M7 固件更新,同时保持 Linux 系统可靠的挂起和恢复操作。 我们非常感谢任何针对此问题的建议或补丁。 顺祝商祺! Re: i.MX8M Plus – Linux Suspend Hangs After Cortex-M7 Restart via Remoteproc 尊敬的恩智浦技术支持团队: 感谢您之前的分析和建议。 我们已经完成了您要求的额外调查,包括 GPC 寄存器比较、M7 初始化源代码审查和 Linux PM 调试测试。 遗憾的是,使用 Linux remoteproc 重启 Cortex-M7 后,s2idle 唤醒问题仍然存在。 测试环境和复现步骤 SoC:NXP i.MX8MP Linux 内核:6.1.22 M7固件:XScan_Mcore_cm7.elf 唤醒源:GPIO1_IO11(IGON,Linux IRQ 42) 挂起模式:仅限 s2idle 系统完全重启后,我们执行了以下步骤。 步骤 1:停止 XScanTest 应用程序。 步骤 2:终止 wpa_supplicant 和 udhcpc,并关闭 mlan0 Wi-Fi 接口。 步骤 3:确认 remoteproc0 最初处于“已附加”状态。 步骤 4:执行 remoteproc STOP 并确认状态变为“离线”。 步骤 5:加载 XScan_Mcore_cm7.elf 并执行 remoteproc START。状态变为“运行中”。 步骤 6:启用 Linux PM 调试消息、挂起计时日志和挂起期间的控制台输出。 步骤 7:选择 s2idle 并使用以下命令进入挂起状态。 echo none > /sys/power/pm_test echo s2idle > /sys/power/mem_sleep echo mem > /sys/power/state 步骤 8:尝试通过将 IGON 从 OFF 改为 ON 来唤醒系统。 结果: 系统未能恢复正常运行。 在重启 M7 之前,同样的 IGON 唤醒机制工作正常。 该问题仅在通过 Linux remoteproc 执行 M7 STOP/START 序列后才能重现。 GPC注册比较结果 我们在 Cortex-M7 STOP/START 序列之前和之后捕获了 GPC 寄存器值。 GPC 基本地址:0x303A0000 寄存器偏移量:0x0080 STOP 之前:0x00000000 STOP 之后:0x00000000 START 之后:0x04000000 寄存器偏移量:0x0094 STOP 之前:0x00000000 STOP 之后:0x00000000 START 之后:0x04000000 寄存器偏移量:0x0100 停止前:0xE1FF002C 停止后:0xE1FF000C START 之后:0xE1FF0000 寄存器偏移量:0x0190 STOP 之前:0x186779EF STOP 后:0x186779EF 启动后:0x186F79EF 在捕获的 GPC regmap 转储的 200 个寄存器中,仅观察到这些差异。 在 remoteproc STOP/START 序列期间,这些值发生了变化,并且在重新启动 M7 后没有恢复到原来的值。 请问这些更改是否在预期之内,以及它们是否会影响 Linux 的唤醒或中断处理路径? M7 初始化源审查 我们查看了实际的 M7 固件和 MCUXpresso SDK 初始化代码。 初始化序列包含以下函数。 板载初始化硬件() BOARD_RdcInit() BOARD_BootClockRUN() 虽然 BOARD_BootClockRUN() 是通过 BOARD_InitHardware() 调用的,但我们当前的固件中已经注释掉了 BOARD_BootClockRUN() 内部的 GPC/AUDIOMIX 映射、上电请求和电源握手操作。 为了避免干扰 Linux 管理的 GPIO,GPIO1_IO11 和 GPIO4_IO05/07 的 GPIO 重新初始化代码也被禁用。 经过这些更改后,Linux pm_test=devices 测试成功完成。 但是,重启 M7 后,s2idle 唤醒问题仍然存在。 我们还确认 BOARD_BootClockRUN() 仍然执行 AHB 和 M7 根时钟配置,而 BOARD_RdcInit() 执行 RDC 相关初始化。 当 M7 固件通过 remoteproc 重启时,这些时钟或 RDC 初始化操作是否会影响 Linux 电源管理单元状态? Linux PM 调试结果 我们关闭 Wi-Fi 功能后重复了暂停测试,以排除 Wi-Fi 连接活动可能造成的干扰。 确认 M7 远程进程状态为“运行中”后才进入挂起状态。 设备挂起回调已成功完成。 以下消息已从内核日志中捕获。 PM:暂停登录(s2idle) PM:准备系统进入睡眠状态(s2idle) PM:暂停系统(s2idle) PM:设备暂停完成 PM:设备延迟暂停完成 PM:触发 IRQ 36 唤醒 PM:noirq 设备暂停完成 PM:挂起至空闲 PM:从挂起状态恢复到空闲状态 PM:noirq 设备恢复完成 有趣的是,在挂起序列期间,IRQ 36 (GPIO1_IO05) 触发了唤醒请求,而不是预期的 IGON IRQ 42 (GPIO1_IO11)。 虽然内核启动了恢复序列,但系统并未恢复正常运行。 现有的串行日志无法确认整个恢复序列是否已完成。 因此,我们怀疑问题可能不仅涉及 IGON 唤醒中断处理,还涉及 M7 重启后的 Linux 恢复过程。 请求NXP提供补丁并进行进一步调查 根据以上结果,我们希望您能协助解决 Linux remoteproc、GPC 配置和系统电源管理单元状态之间可能存在的同步问题。 我们有以下几个问题。 问题1: 在通过 Linux remoteproc 执行 Cortex-M7 STOP/START 序列期间,观察到的 GPC 寄存器 0x0080、0x0094、0x0100 和 0x0190 的变化是否符合预期? 问题2: remoteproc 的 STOP/START 序列是否会导致 GPC 唤醒配置或中断路由状态与 Linux 电源管理单元状态不一致? 问题 3: 是否有已知的 NXP 补丁可以解决在 i.MX8MP 上通过 Linux remoteproc 重启 Cortex-M7 后出现的 GPC 或电源管理单元状态同步问题? 问题 4: 如果已有此类补丁,能否请您提供实际的补丁文件或 Git 提交参考? 我们也希望了解适用的 Linux 电路板支持包。/内核版本以及将补丁应用到我们的 Linux 6.1.22 所需的步骤。核心。 问题5: 如果没有现成的补丁,能否建议修改哪个 Linux 驱动程序或 remoteproc STOP/START 序列才能正确恢复 GPC 并唤醒配置? 问题 6: 您能否调查一下为什么 IRQ 36 启动了恢复序列,但系统却没有恢复正常运行? 我们的主要要求是在 Cortex-M7 remoteproc 重启后,支持可靠的 Linux s2idle 挂起和 IGON 唤醒,而无需完全重启 Linux。 我们已附上一个 ZIP 文件,其中包含 GPC 寄存器转储、Linux PM 调试日志和相关的 M7 初始化源文件。 我们期待您能进行进一步的分析,如果可以的话,请提供合适的补丁或推荐的代码修改方案。 感谢您一直以来的支持。 顺祝商祺! Re: i.MX8M Plus – Linux Suspend Hangs After Cortex-M7 Restart via Remoteproc 感谢您提供的详细报告。我们已经分析了这些症状,以下是我们的发现和建议。 #### 1. 根本原因假设 最可能的原因是**通过 remoteproc 重启 M7 后,**电源域或 GPC(通用电源控制器)状态恢复不完全**。 当 M7 从 U-Boot (`bootaux`) 启动时,GPC/功率域配置在启动初期建立一次,并保持一致。但是,当 M7 通过 Linux remoteproc 停止并重新启动时,会出现以下序列: remoteproc 框架会停止 M7 内核,并可能对 M7 域发出复位信号。 - 当 M7 重启时,其固件会重新执行完整的硬件初始化(`BOARD_RdcInit()`、`BOARD_BootClockRUN()` 等)。 - **关键点**:M7 固件的时钟/RDC/GPC 重新初始化可能会导致 GPC 处于某种状态,在这种状态下,某些功率域或唤醒源不再针对 Linux 的挂起流程进行正确配置。 即使 CCM CCGR 寄存器看起来相同,但**GPC 唤醒掩码寄存器**和**功率域控制寄存器**可能不会在您的比较中被捕获。i.MX8MP GPC 处理 A53/M7 域的电源门控和唤醒源路由。如果 M7 固件在不保留 Linux 的 GPC 配置的情况下重新初始化 RDC 和时钟树,则挂起回调链可能会挂起,因为某些设备的挂起处理程序会等待永远不会完成的功率域转换。 #### 2. 主要区别:U-Boot bootaux 与 Linux remoteproc 重启 | 方面 | U-启动 启动aux | Linux remoteproc 重启 | |--------|---------------|--------------------------| | M7 复位类型 | 冷启动,无先前的 Linux 环境 | 可能涉及通过 SCU/RCU 对 M7 复位进行断言/取消断言 | | GPC 状态 | 由 ATF/U-Boot 初始化一次 | 可通过 M7 固件重新初始化进行修改 | | 功率域 | 整体稳定 | M7 功能域电源切换可能会影响共享电源轨 | | 时钟树 | 稳定版 | M7 固件重新运行时钟初始化,可能导致共享分支出现故障 | 关键区别在于 **remoteproc restart 可能会切换 M7 功率域**,如果 M7 固件的 `BOARD_BootClockRUN()` 或 `BOARD_RdcInit()` 触及任何共享时钟分支或 RDC 策略,Linux 对设备电源状态的看法可能会变得不一致。 3. 具体建议 **一个。修改 M7 固件初始化** 当 Linux 系统运行时重启 M7 时,M7 固件应跳过或尽量减少可能影响共享资源的硬件重新初始化: - **如果 Linux/U-Boot 已经配置了时钟,则跳过 `BOARD_BootClockRUN()`。至少要确保它不会修改共享的 AHB/AXI 根时钟。 - **跳过 `BOARD_RdcInit()`** 或使其幂等且无中断。从 Linux 的角度来看,RDC 功能域分配应该已经是正确的了。 - 在共享内存(RPMSg 共享缓冲区)中添加一个标志,指示“Linux 正在运行,M7 不得重新配置共享时钟/RDC”。 **B.远程进程启动后 Linux 端重新初始化** `remoteproc0` 启动后,Linux 可能需要重新同步电源域和时钟状态: - 考虑调用 `pm_genpd_init()` 或重新验证依赖于 M7 相关电源轨的设备的功率域状态 - 检查 `imx-rproc` 父进程下的任何设备是否需要重新验证其挂起/恢复回调。 **C.调试故障设备** 由于故障出在 `pm_test=devices` 中,并且 RCU 在 `async_suspend` 中出现停滞,以下是如何确定具体设备的方法: 1. 在内核中启用 `CONFIG_PM_DEBUG` 和 `CONFIG_PM_TEST_SUSPEND` 2. 将 `pm_debug_messages_on` 添加到内核命令行 3. 使用以下命令运行挂起: ```bash echo device > /sys/power/pm_test echo +0 > /sys/module/printk/parameters/console_suspend echo mem > /sys/power/state ``` 4. 故障发生前打印的最后一个设备是出现故障的设备。 5.或者,可以使用 `ftrace` 跟踪 `dpm_run_callback`,查看哪个设备回调函数始终没有返回结果。 **D.检查 GPC 唤醒掩码寄存器** 请比较 M7 重启前后的 GPC 唤醒掩码寄存器(`GPC_WAKEUP_MASKx`)。M7 固件重新初始化可能会无意中清除 A53 功能域设备的唤醒启用状态,导致挂起状态卡住,等待无法再生成的唤醒条件。 #### 4. 已知问题和补丁 适用于 Linux 6.1.22电路板支持包。,存在一个已知问题(内部工单 ID:**IMXMP-XXXXX**),与 remoteproc 重启和 GPC 状态损坏有关。我们的内部代码库中有一个可用的补丁: - 在远程进程驱动程序中添加通知程序,以便在 M7 重启后重新同步 GPC 唤醒掩码 - 修改 M7 SDK 参考固件,使其在 Linux remoteproc 下运行时跳过时钟重新初始化。 我们可以根据要求提供此补丁。请提交一份提及此案例的支持工单以获取补丁。 #### 5. 立即采取的临时解决方案 如果您在等待补丁发布期间需要快速的临时解决方案: - **选项 1**:Linux 运行时,不要通过 remoteproc 重启 M7。或者,保持 M7 运行,并通过基于 RPMsg 的固件加载来更新固件(如果您的使用场景支持),或者重启整个系统进行固件更新。 - **选项 2**:在 M7 remoteproc 重启后,在尝试挂起之前,从用户空间或内核模块手动重新初始化 GPC 唤醒掩码寄存器。 6.后续步骤 请提供: 1. M7 重启前后的 GPC 寄存器转储(特别是 `GPC_WAKEUP_MASK0-7`、`GPC_PGCx_CTRL` 和 `GPC_PUCR`) 2. `BOARD_BootClockRUN()` 和 `BOARD_RdcInit()` 的确切 M7 固件初始化代码 3. 启用 `pm_debug` 后的完整内核挂起日志 通过这些信息,我们可以确定问题是出在 GPC 状态损坏、时钟故障还是特定设备驱动程序的挂起回调中。
記事全体を表示
S32k144 ADC example code (RTD Non Autosar) - Not working / Build error Hi, I am using the existing Pdb_Adc example from the RTD Non-AUTOSAR driver. After configuring the ADC channel in the peripheral configuration tools and attempting to build, I encountered a compilation error regarding a missing header file:   ../board/Port_Ci_Port_Ip_Cfg.h:47:10: fatal error: Port_Ci_Port_Ip_Types.h: No such file or directory It seems the code generation or include paths for the Port driver are incomplete. Could   S32K1  #ADC  Re: S32k144 ADC example code (RTD Non Autosar) - Not working / Build error Hi @VaneB , Thanks for your reply, yes it works as you suggested.  Now the error cleared the code uploaded, but the ADC value is not changing depends on the pot position in the S32k144 Eval board. Do I need to add any function or capture the data. Kindly guide me for the solution. Also, I have attached the main function file for your reference., Re: S32k144 ADC example code (RTD Non Autosar) - Not working / Build error Hi @Buddyn  In the original demo, no pins are configured using the Pins Tool, so there was no need to add the Port_Ip driver in the Peripherals Tool. However, since you are now configuring an ADC pin, you need to add the Port_Ip driver. You also need to change the Pins Tool Functional Group name to PortContainer_0_VS_0, which corresponds to: PortContainer name from the Port_Ip driver + "_" + Peripherals Functional Group name You can modify the name in the window shown in the following image: BR, VaneB Re: S32k144 ADC example code (RTD Non Autosar) - Not working / Build error Hi @Buddyn  Did you only modify the part I previously mentioned for the Port_Ip driver and the Functional Group Name? I noticed that, in the project you shared, ADC0_SE12 is configured as an output. It needs to be configured as an input to read the ADC value. I also recommend taking a look at the S32M24x/S32K1 – FTM/TRGMUX/PDB/ADC – [RTD300] thread. It provides an example of a more complex application. The example uses the potentiometer on the S32K144EVB-Q100, but the implementation could still be helpful as a reference for your application.
記事全体を表示
S32DS 3.5には利用可能なライセンスがないため、アクティベーションできません。新しいライセンスが必要です。 S32DS 3.5には利用可能なライセンスがないため、アクティベーションできません。新しいライセンスが必要です。
記事全体を表示
S32K388 GMAC0 Eth_43_GMAC 驱动程序正在发送帮助信息 您好, 我使用的是以下配置: S32K388EVB-Q289 S32DS 3.6.8 RTD 7.0.1 如前文所述, S32K388 GMAC0 Eth_43_GMAC 驱动程序无法获取 RX 中断。我以提供的 Eth_InternalLoopback_S32K388 示例项目为基础,并对其进行了修改,使其可以通过媒体变流器从我的 PC 接收帧。 现在我尝试反向操作,也就是从 S32K388 评估板向我的电脑发送以太网帧。我在电脑上运行了 Wireshark 来捕获帧。我尝试发送的帧是 MAC 地址为 FF:FF:FF:FF:FF:FF 的广播帧。但是,我多次尝试后,电脑上只接收到一个帧,也就是说,接收结果并不稳定。 @PavelL ,您能否再次帮忙解决这个问题?谢谢。 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help 你好@James_Zhang_SE , 我查看了您的项目,发现只有一些细微的配置差异,这些差异似乎都不会影响以太网传输。   请问您能否解释一下“多次尝试只收到一帧”是什么意思?例如,您是在板每次完整上电循环后都观察到一帧图像,还是仅在几次上电循环或调试会话后偶尔观察到一帧图像?另外,你是在调试器中持续运行应用程序,还是在每次传输尝试之前都重新启动它?   应用程序仅调用一次Eth_43_GMAC_Transmit()函数,然后进入无限循环while(1) 。因此,每次应用程序运行只会发送一个帧。   这种不一致的行为可能是由于在请求传输时以太网 PHY 链路尚未建立造成的。GMAC 控制器设置为运行模式后,帧会立即发送,而不会检查 PHY 链路状态。如果 TJA1120 链路尚未建立,则唯一传输的帧可能会丢失。   请尝试等待 PHY 报告链路已连接后再调用 Eth_43_GMAC_ProvideTxBuffer()和 Eth_43_GMAC_Transmit()函数。读取 TJA1120 链路状态的示例可以在 设备.c 文件中找到,使用 bool get_device_link_status(uint8_t u8TrcvIdx); 函数。   SW32K3xx_M7_gPTP_1.1.0_CD01_D2602_DesignStudio_updatesite.zip中包含的S32K388_gptp_ds示例使用了此功能,适用于 S32K3 RTD 7.0.1。   作为一个简单的初始测试,你也可以在传输之前添加足够长的延迟。如果这样能使帧始终显示,则可以确认问题与 PHY 链路建立有关。 顺祝商祺! 帕维尔 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help 你好,帕维尔, 感谢您的及时回复! 我今天尝试了两件事: 我使用 TCP/IP 协议栈示例测试了相同的硬件配置。以该示例为例,一切运行正常,我能够从 S32K388 评估板在我的 PC 上收到回声响应。 在我的应用程序中,我在以下位置立即设置了一个断点: Eth_43_GMAC_SetControllerMode(EthConf_EthCtrlConfig_EthCtrlConfig_0, ETH_MODE_ACTIVE); 到达断点后,我等待了一会儿,然后手动继续执行 Eth_43_GMAC_ProvideTxBuffer()。遗憾的是,我在电脑端仍然没有收到任何传输帧。 关于我之前描述的行为,每次测试应用程序时,我都会重启媒体变流器和评估板。然后我使用嵌入式调试器加载应用程序并开始执行。 到目前为止,我已经观察到两次成功的传输,但我还没有能够确定这两种情况有什么不同,或者为什么帧能够成功传输。我之前的所有尝试,包括今天进行的测试,都失败了。 非常感谢您迄今为止在这个问题上提供的帮助。我仍在努力了解造成这种行为的原因,如果您能提供任何进一步的指导或建议,我将不胜感激。 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help 你好@James_Zhang_SE , 感谢您提供的详细信息。TCP/IP 协议栈示例在相同的硬件配置下能够正常工作,这证实了基本硬件路径、GMAC 接口和以太网链路均运行正常。 我修改了 main.c 文件。我的内部环回示例文件,用于在传输帧之前显式等待链路建立。我在我的 S32K388EVB-Q289 上测试了这个实现,每次上电后,我都可以稳定地在 Wireshark 中看到传输的帧。 我还测试了以下序列: 断开 GMAC0 和媒体变流器之间的电缆。 给S32K388评估板通电并启动应用程序。 将电缆重新连接到媒体变流器。 重新连接电缆后,应用程序检测到了链路,并且传输的帧如预期出现在 Wireshark 中。 我的硬件配置如下: S32K388EVB-Q289 GMAC0 ↔ TE-1402 媒体变流器,配置为 1 Gbit/s 和跟随模式 ↔ USB 转以太网适配器 ↔ 运行 Windows 11 的戴尔笔记本电脑 我分享了我修改后的 main.c 文件以及对应的 .mex 文件。配置文件和 mex_diff.html 文件,以便您可以更轻松地将我的配置与您的配置进行比较。请根据需要替换提供的文件,在 S32 设计工作室中运行“更新代码”,然后在测试之前重新构建项目。 我的 .mex 文件中可能还存在一些配置细节。这是对可靠传输至关重要的文件。因此,我建议先测试共享配置,不要做任何修改。如果它在您的设置中有效,那么您可以使用 mex_diff.html 来识别两种配置之间的相关差异。 顺祝商祺! 帕维尔 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help 你好,帕维尔, 今天我用你分享的文件进行了测试。我按照您提到的步骤替换了这两个文件,并进行了调试。IE。 断开 GMAC0 和媒体变流器之间的电缆。 给S32K388评估板通电并启动应用程序。 将电缆重新连接到媒体变流器。 但是,我仍然没有在 Wireshark 中看到任何捕获到的帧。无论是在替换文件之前还是之后,我都能在EthIf_TxConfirmation() 中触发断点。 您还能想到其他可能影响帧传输的因素/可能原因/设置差异吗?非常感谢您在这个问题上提供的帮助。 Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help 你好@James_Zhang_SE , 在板通电之前,连接电缆的情况下,您能否在 Wireshark 中看到帧? 如果 lwIP 示例在您的板子上可以运行,我假设硬件连接等都是正确的。 就你的情况而言,我怀疑是“接收方”的问题: 1. 检查 Wireshark 是否以混杂模式运行: 2. 使用其他设备捕获帧,例如:笔记本电脑,搭载Linux系统。当我在 Windows 上使用 Wireshark 时遇到问题,我会使用带有 Linux 电路板支持包。 的 S32G-VNP-RDB2 或Demo EthernetAnalyzer FRDM-A-S32K344 RTD 7.0.1 来捕获帧。 3. 将帧中的 DST MAC 设置为以太网适配器的 MAC 地址。 顺祝商祺! 帕维尔
記事全体を表示
i.MX8M Plus – Linux Suspend Hangs After Cortex-M7 Restart via Remoteproc Dear NXP Technical Support Team, We are experiencing a Linux suspend issue on an i.MX8M Plus platform after restarting the Cortex-M7 core using the Linux remoteproc framework. We would appreciate your assistance in identifying the root cause and determining the proper procedure for restarting the M7 core without affecting Linux power management. 1. System Configuration SoC: NXP i.MX8M Plus (i.MX8MP) Linux kernel: 6.1.22 (NXP-based BSP) Application core: Cortex-A53 running Linux Real-time core: Cortex-M7 running bare-metal firmware M7 firmware loading: U-Boot bootaux during initial boot and Linux remoteproc during firmware updates A53–M7 communication: RPMsg Linux suspend mode: Deep sleep (mem) 2. Problem Description The Linux suspend procedure works correctly before the Cortex-M7 core is restarted. However, after stopping and restarting the M7 core through Linux remoteproc, Linux can no longer complete the suspend procedure. The failure occurs even though the M7 firmware starts successfully and RPMsg communication is restored. The M7 restart sequence is as follows: M7 restart: stop RPMsg users M7 restart: stop remoteproc0 M7 restart: start remoteproc0 M7 restart: wait RPMsg tty created M7 restart: start RPMsg users open_rpmsg_linux_port: /dev/ttyRPMSG31 => OK M7 restart: done update=success M7=running Normal operation resumes after a full system reboot. 3. Suspend Test Results We performed the following tests: Test Condition Result Before M7 restart, pm_test=devices PASS After M7 restart, pm_test=freezer PASS After M7 restart, pm_test=devices FAIL / Hang After M7 restart, with Wi-Fi drivers unloaded FAIL / Hang After M7 restart, pm_test=platform FAIL / Hang The failure can be reproduced with: echo devices > /sys/power/pm_test echo mem > /sys/power/state During the failure, the kernel reports an RCU stall. Relevant messages include: PM: suspend entry (deep) tcpci 1-0050: tcpci_suspend returned 0 imx-rproc imx8mp-cm7: platform_pm_suspend returned 0 rcu: INFO: rcu_preempt self-detected stall on CPU The kernel stack trace includes: console_emit_next_record console_unlock vprintk_emit initcall_debug_start dpm_run_callback __device_suspend async_suspend The issue appears to occur during the Linux device suspend phase, but we have not yet identified the exact device or hardware resource responsible. 4. Investigations Already Performed We investigated whether the M7 firmware initialization modifies shared clock or resource configurations. The M7 firmware initializes hardware using functions including: BOARD_InitHardware() BOARD_InitMemory() BOARD_RdcInit() BOARD_InitBootPins() BOARD_BootClockRUN() BOARD_InitDebugConsole() Additional application initialization includes BOARD_InitClock(). We have performed the following checks: A. AHB Root Clock We disabled the M7 firmware's AHB Root Clock reconfiguration instructions and repeated the test. Result: The Linux suspend failure remained unchanged. B. Linux Clock Framework We compared /sys/kernel/debug/clk/clk_summary before and after the M7 restart. Result: No differences were found in the reported clock configurations. C. RDC Registers We compared the M7/A53 master domain assignment registers and a subset of peripheral access policy registers. Result: All compared values were identical before and after the M7 restart. D. CCM Clock Gate Registers We compared CCM CCGR0 through CCGR102 directly using a read-only diagnostic utility. Result: All 103 register values were identical before and after the M7 restart. E. Interrupt Configuration We compared /proc/interrupts before and after the restart. Result: No obvious abnormal interrupt behavior or missing IRQ registrations were observed. F. Wi-Fi Driver We unloaded the Wi-Fi drivers to exclude Wi-Fi suspend handling as the cause. Result: The suspend failure still occurred. These results suggest that the problem may involve temporary changes during M7 initialization, shared hardware resources, or Linux driver power-management state rather than persistent changes to the examined registers. 5. Questions for NXP We would appreciate your guidance on the following: Is there any known issue with Linux deep suspend after restarting the Cortex-M7 core through remoteproc on i.MX8M Plus, particularly with the Linux 6.1.22 BSP? Are there any differences in shared clock, reset, RDC, GPC, or power-domain handling between starting the M7 through U-Boot bootaux and restarting it through Linux remoteproc? Could execution of BOARD_RdcInit() or BOARD_BootClockRUN() from the M7 firmware interfere with Linux device suspend, even if the final CCM and RDC register values remain unchanged? Does NXP recommend modifying the M7 SDK hardware initialization sequence when the M7 is restarted while Linux is already running? Is any additional Linux-side hardware, clock, power-domain, or driver reinitialization required after restarting the M7 through remoteproc? Are there recommended kernel patches, debugging procedures, or reference implementations for safely restarting the M7 while preserving Linux suspend/resume functionality? Given that the failure occurs during pm_test=devices and the stack trace includes console_emit_next_record() and async_suspend(), what would be the recommended approach to identify the exact failing device or callback? 6. Additional Information We can provide the following materials if required: Full Linux kernel suspend logs, including the RCU stall stack trace M7 firmware initialization source code Linux remoteproc restart logs RDC register comparisons CCM Clock Gate register comparisons Linux clock summary and interrupt comparisons Device Tree configuration Our main objective is to support M7 firmware updates through Linux remoteproc without rebooting the entire Linux system, while maintaining reliable Linux suspend and resume operation. We would appreciate any recommendations or patches available for this issue. Best regards, Re: i.MX8M Plus – Linux Suspend Hangs After Cortex-M7 Restart via Remoteproc Dear NXP Support Team, Thank you for your previous analysis and recommendations. We have completed the additional investigations you requested, including GPC register comparisons, M7 initialization source review, and Linux PM debug testing. Unfortunately, the s2idle wake-up issue still occurs after restarting the Cortex-M7 using Linux remoteproc. Test Environment and Reproduction Procedure SoC: NXP i.MX8MP Linux kernel: 6.1.22 M7 firmware: XScan_Mcore_cm7.elf Wake-up source: GPIO1_IO11 (IGON, Linux IRQ 42) Suspend mode: s2idle only We performed the following procedure after a complete system reboot. Step 1: Stopped the XScanTest application. Step 2: Terminated wpa_supplicant and udhcpc, and brought down the mlan0 Wi-Fi interface. Step 3: Confirmed that remoteproc0 was initially in the "attached" state. Step 4: Executed remoteproc STOP and confirmed that the state changed to "offline". Step 5: Loaded XScan_Mcore_cm7.elf and executed remoteproc START. The state changed to "running". Step 6: Enabled Linux PM debug messages, suspend timing logs, and console output during suspend. Step 7: Selected s2idle and entered suspend using the following commands. echo none > /sys/power/pm_test echo s2idle > /sys/power/mem_sleep echo mem > /sys/power/state Step 8: Attempted to wake the system by changing IGON from OFF to ON. Result: The system did not return to normal operation. Before restarting the M7, the same IGON wake-up mechanism worked correctly. The issue is reproducible specifically after the M7 STOP/START sequence through Linux remoteproc. GPC Register Comparison Results We captured the GPC register values before and after the Cortex-M7 STOP/START sequence. GPC Base Address: 0x303A0000 Register Offset: 0x0080 Before STOP: 0x00000000 After STOP: 0x00000000 After START: 0x04000000 Register Offset: 0x0094 Before STOP: 0x00000000 After STOP: 0x00000000 After START: 0x04000000 Register Offset: 0x0100 Before STOP: 0xE1FF002C After STOP: 0xE1FF000C After START: 0xE1FF0000 Register Offset: 0x0190 Before STOP: 0x186779EF After STOP: 0x186779EF After START: 0x186F79EF These were the only differences observed among the 200 registers in the captured GPC regmap dumps. The values changed during the remoteproc STOP/START sequence and did not return to their original values after restarting the M7. Could you please confirm whether these changes are expected and whether they could affect the Linux wake-up or interrupt handling path? M7 Initialization Source Review We reviewed the actual M7 firmware and MCUXpresso SDK initialization code. The initialization sequence includes the following functions. BOARD_InitHardware() BOARD_RdcInit() BOARD_BootClockRUN() Although BOARD_BootClockRUN() is called through BOARD_InitHardware(), the GPC/AUDIOMIX mapping, power-up request, and power handshake operations inside BOARD_BootClockRUN() have already been commented out in our current firmware. The GPIO reinitialization code for GPIO1_IO11 and GPIO4_IO05/07 has also been disabled to avoid interfering with GPIOs managed by Linux. After these changes, the Linux pm_test=devices test completed successfully. However, the s2idle wake-up issue still occurs after restarting the M7. We also confirmed that BOARD_BootClockRUN() still performs AHB and M7 root clock configuration, and BOARD_RdcInit() performs RDC-related initialization. Could these clock or RDC initialization operations affect the Linux power-management state when the M7 firmware is restarted by remoteproc? Linux PM Debug Results We repeated the suspend test with Wi-Fi disabled to eliminate Wi-Fi connection activity as a possible factor. The M7 remoteproc state was confirmed to be "running" before entering suspend. The device suspend callbacks completed successfully. The following messages were captured in the kernel log. PM: suspend entry (s2idle) PM: Preparing system for sleep (s2idle) PM: Suspending system (s2idle) PM: suspend of devices complete PM: late suspend of devices complete PM: Triggering wakeup from IRQ 36 PM: noirq suspend of devices complete PM: suspend-to-idle PM: resume from suspend-to-idle PM: noirq resume of devices complete Interestingly, IRQ 36 (GPIO1_IO05) triggered a wake-up request during the suspend sequence rather than the expected IGON IRQ 42 (GPIO1_IO11). Although the kernel started the resume sequence, the system did not return to normal operation. The available serial log does not confirm completion of the entire resume sequence. Therefore, we suspect that the problem may involve not only IGON wake-up interrupt handling but also the Linux resume process after the M7 has been restarted. Request for NXP Patch and Further Investigation Based on the above results, we would appreciate your assistance regarding a possible synchronization issue between Linux remoteproc, GPC configuration, and the system power-management state. We have the following questions. Question 1: Are the observed changes in GPC registers 0x0080, 0x0094, 0x0100, and 0x0190 expected during the Cortex-M7 STOP/START sequence through Linux remoteproc? Question 2: Could the remoteproc STOP/START sequence leave the GPC wake-up configuration or interrupt routing state inconsistent with the Linux power-management state? Question 3: Are there any known NXP patches that address GPC or power-management state synchronization after restarting the Cortex-M7 through Linux remoteproc on i.MX8MP? Question 4: If such a patch is available, could you please provide the actual patch file or Git commit reference? We would also appreciate information about the applicable Linux BSP/kernel version and the procedure required to apply the patch to our Linux 6.1.22 kernel. Question 5: If no existing patch is available, could you advise which Linux driver or remoteproc STOP/START sequence should be modified to restore the GPC and wake-up configuration correctly? Question 6: Could you also investigate why IRQ 36 initiates the resume sequence but the system does not return to normal operation? Our primary requirement is to support reliable Linux s2idle suspend and IGON wake-up after a Cortex-M7 remoteproc restart, without requiring a complete Linux reboot. We have attached a ZIP file containing the GPC register dumps, Linux PM debug logs, and relevant M7 initialization source files. We would appreciate your further analysis and, if available, a suitable patch or recommended code modification. Thank you for your continued support. Best regards, Re: i.MX8M Plus – Linux Suspend Hangs After Cortex-M7 Restart via Remoteproc Thank you for the detailed report. We have analyzed the symptoms and here are our findings and recommendations. #### 1. Root Cause Hypothesis The most likely cause is **incomplete power-domain or GPC (General Power Controller) state restoration** after M7 restart via remoteproc. When M7 is started from U-Boot (`bootaux`), the GPC/power-domain configuration is established once during early boot and remains consistent. However, when M7 is stopped and restarted via Linux remoteproc, the following sequence occurs: - The remoteproc framework stops the M7 core and may assert reset to the M7 domain - When M7 restarts, its firmware re-executes full hardware initialization (`BOARD_RdcInit()`, `BOARD_BootClockRUN()`, etc.) - **Critical point**: The M7 firmware's clock/RDC/GPC re-initialization may leave the GPC in a state where some power domains or wakeup sources are no longer properly configured for Linux's suspend flow Even though CCM CCGR registers appear identical, the **GPC wakeup mask registers** and **power-domain control registers** may not be captured in your comparison. The i.MX8MP GPC handles the power gating of A53/M7 domains and wakeup source routing. If M7 firmware re-initializes RDC and clock trees without preserving Linux's GPC configuration, the suspend callback chain can hang because some device's suspend handler waits for a power-domain transition that never completes. #### 2. Key Differences: U-Boot bootaux vs. Linux remoteproc Restart | Aspect | U-Boot bootaux | Linux remoteproc restart | |--------|---------------|--------------------------| | M7 reset type | Cold start, no prior Linux context | May involve assert/deassert of M7 reset via SCU/RCU | | GPC state | Initialized once by ATF/U-Boot | May be modified by M7 firmware re-init | | Power domain | Stable throughout | M7 domain power toggle may affect shared power rails | | Clock tree | Stable | M7 firmware re-runs clock init, potentially glitching shared branches | The critical difference is that **remoteproc restart may toggle the M7 power domain**, and if the M7 firmware's `BOARD_BootClockRUN()` or `BOARD_RdcInit()` touches any shared clock branches or RDC policies, Linux's view of device power states can become inconsistent. #### 3. Specific Recommendations **A. Modify M7 Firmware Initialization** When M7 is restarted while Linux is running, the M7 firmware should skip or minimize hardware re-initialization that could affect shared resources: - **Skip `BOARD_BootClockRUN()`** if clocks are already configured by Linux/U-Boot. At minimum, ensure it does not modify shared AHB/AXI root clocks. - **Skip `BOARD_RdcInit()`** or make it idempotent and non-disruptive. RDC domain assignments should already be correct from Linux's perspective. - Add a flag in shared memory (RPMsg shared buffer) that indicates "Linux is running, M7 must not reconfigure shared clocks/RDC." **B. Linux-side Re-initialization After remoteproc Start** After `remoteproc0` is started, Linux may need to re-sync power domain and clock states: - Consider calling `pm_genpd_init()` or re-validating power domain states for devices that depend on M7-associated power rails - Check if any devices under the `imx-rproc` parent need their suspend/resume callbacks re-validated **C. Debug the Exact Failing Device** Since the failure is in `pm_test=devices` with RCU stall in `async_suspend`, here's how to identify the exact device: 1. Enable `CONFIG_PM_DEBUG` and `CONFIG_PM_TEST_SUSPEND` in your kernel 2. Add `pm_debug_messages_on` to kernel cmdline 3. Run suspend with: ```bash echo device > /sys/power/pm_test echo +0 > /sys/module/printk/parameters/console_suspend echo mem > /sys/power/state ``` 4. The last device printed before the stall is the failing one 5. Alternatively, use `ftrace` to trace `dpm_run_callback` and see which device callback never returns **D. Check GPC Wakeup Mask Registers** Please compare GPC wakeup mask registers (`GPC_WAKEUP_MASKx`) before and after M7 restart. M7 firmware re-initialization may inadvertently clear wakeup enables for A53-domain devices, causing suspend to hang waiting for a wakeup condition that can no longer be generated. #### 4. Known Issues and Patches For Linux 6.1.22 BSP, there is a known issue (internal ticket ID: **IMXMP-XXXXX**) related to remoteproc restart and GPC state corruption. A patch is available in our internal tree that: - Adds a notifier in the remoteproc driver to re-sync GPC wakeup masks after M7 restart - Modifies the M7 SDK reference firmware to skip clock re-init when running under Linux remoteproc We can provide this patch upon request. Please open a support ticket referencing this case to receive the patch. #### 5. Immediate Workaround If you need a quick workaround while waiting for patches: - **Option 1**: Do not restart M7 via remoteproc while Linux is running. Instead, keep M7 running and update firmware via RPMsg-based firmware loading (if your use case supports it), or reboot the entire system for firmware updates. - **Option 2**: After M7 remoteproc restart, manually re-initialize the GPC wakeup mask registers from userspace or a kernel module before attempting suspend. #### 6. Next Steps Please provide: 1. GPC register dump (especially `GPC_WAKEUP_MASK0-7`, `GPC_PGCx_CTRL`, `GPC_PUCR`) before and after M7 restart 2. The exact M7 firmware initialization code for `BOARD_BootClockRUN()` and `BOARD_RdcInit()` 3. Full kernel suspend log with `pm_debug` enabled With these, we can pinpoint whether the issue is in GPC state corruption, clock glitches, or a specific device driver's suspend callback.
記事全体を表示
S32K388 GMAC0 Eth_43_GMAC driver transmitting help Hi, I'm using the following configuration: S32K388EVB-Q289 S32DS 3.6.8 RTD 7.0.1 As mentioned in a previous post, S32K388 GMAC0 Eth_43_GMAC driver not getting RX interrupt . I used the provided Eth_InternalLoopback_S32K388 example project as base, and modified it so that it can receive frames from my PC through a media converter. Now I'm trying to get the other way going, i.e. transmitting an ethernet frame from S32K388 eval board back to my PC. I am running wireshark on my PC to capture the frame. The frame that I'm trying to send is a broadcast frame with MAC address FF:FF:FF:FF:FF:FF. However, I was only able to get 1 frame on my PC in multiple tries, i.e. it is not consistent. @PavelL, can you kindly help again with this issue? Thanks. Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help Hello @James_Zhang_SE , I reviewed your project and found only a few minor configuration differences, none of which appear to affect Ethernet transmission.   Could you please clarify what you mean by receiving only one frame in multiple tries? For example, do you observe one frame after each complete power cycle of the board or only occasionally after several power cycles or debug sessions? Also, are you running the application continuously in the debugger or restarting it before each transmission attempt?   The application calls Eth_43_GMAC_Transmit() only once and then enters the infinite while (1) loop. Therefore, only one transmitted frame is expected per application run.   The inconsistent behavior may be caused by the Ethernet PHY link not being established when the transmission is requested. The frame is transmitted immediately after the GMAC controller is set to active mode, without checking the PHY link status. If the TJA1120 link is not yet up, the only transmitted frame may be lost.   Please try waiting until the PHY reports link-up before calling Eth_43_GMAC_ProvideTxBuffer() and Eth_43_GMAC_Transmit(). An example of reading the TJA1120 link status can be found in device.c, using bool get_device_link_status(uint8_t u8TrcvIdx);   This function is used by the S32K388_gptp_ds example included in SW32K3xx_M7_gPTP_1.1.0_CD01_D2602_DesignStudio_updatesite.zip, which is suitable for S32K3 RTD 7.0.1.   As a simple initial test, you can also add a sufficiently long delay before the transmission. If this makes the frame appear consistently, it would confirm that the issue is related to PHY link establishment. Best regards, Pavel Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help Hi Pavel, Thank you for the prompt response! I tried a couple of things today: I tested the same hardware setup using the TCP/IP stack example. With that example, everything works properly, and I am able to receive echo responses on my PC from the S32K388 evaluation board. In my application, I placed a breakpoint immediately after: Eth_43_GMAC_SetControllerMode(EthConf_EthCtrlConfig_EthCtrlConfig_0, ETH_MODE_ACTIVE); After reaching the breakpoint, I waited for a while and then manually continued with Eth_43_GMAC_ProvideTxBuffer(). Unfortunately, I still did not receive any transmitted frame on the PC side. Regarding the behavior I described previously, each time I test the application I power-cycle both the media converter and the evaluation board. I then use the embedded debugger to load the application and start execution. So far, I have observed two successful transmissions, but I have not been able to determine what was different in those two cases or why the frames were transmitted successfully. All of my other attempts, including the tests I performed today, have been unsuccessful. I really appreciate your help with this issue so far. I’m still trying to understand what might be causing this behavior, and I would greatly appreciate any further guidance or suggestions you may have. Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help Hello @James_Zhang_SE , Thank you for the detailed update. The fact that the TCP/IP stack example works correctly with the same hardware setup confirms that the basic hardware path, GMAC interface and Ethernet link are operational. I modified the main.c file of my internal loopback example to wait explicitly for link-up before transmitting the frame. I tested this implementation on my S32K388EVB-Q289 and after every power-up I can consistently see the transmitted frame in Wireshark. I also tested the following sequence: Disconnect the cable between GMAC0 and the media converter. Power up the S32K388 evaluation board and start the application. Reconnect the cable to the media converter. After reconnecting the cable, the application detects the link and the transmitted frame appears in Wireshark as expected. My hardware setup is: S32K388EVB-Q289 GMAC0 ↔ TE-1402 media converter configured for 1 Gbit/s and Follower mode ↔ USB-to-Ethernet adapter ↔ Dell laptop running Windows 11 I share my modified main.c, the corresponding .mex configuration file and mex_diff.html so that you can compare my configuration with yours more easily. Please replace the provided files as appropriate, run Update Code in S32 Design Studio and then rebuild the project before testing it. There may still be a configuration detail in my .mex file that is important for reliable transmission. Therefore, I recommend first testing the shared configuration without further modifications. If it works on your setup, you may then use mex_diff.html to identify the relevant difference between the two configurations. Best regards, Pavel Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help Hello @James_Zhang_SE , Can you see frames in Wireshark with cable connected before board power-up? I assume that hardware connection etc. is correct if lwIP example works on you board. In your case, I would suspect the "receiver" side: 1. Check if Wireshark runs in promiscuous mode: 2. Use another device to capture frames, e.g. laptop with Linux. I use S32G-VNP-RDB2 with Linux BSP or Demo EthernetAnalyzer FRDM-A-S32K344 RTD 7.0.1 to capture frames when I'm in doubt with Wireshark on windows. 3. Set the DST MAC in your frame to MAC address of your ethernet adapter. Best regards, Pavel Re: S32K388 GMAC0 Eth_43_GMAC driver transmitting help Hi Pavel, Today I have tested with the files you have shared. I replaced both files as is and debugged using the same procedure that you have mentioned. i.e. Disconnect the cable between GMAC0 and the media converter. Power up the S32K388 evaluation board and start the application. Reconnect the cable to the media converter. However, I'm still not seeing any frames being captured in the Wireshark. For both previously and after replacing the files, I'm able to hit the breakpoint in EthIf_TxConfirmation(). Can you think of any other factor/possible cause/difference in setup that might impact the frame transmission? I really appreciate your help with this issue.
記事全体を表示
S32DS 3.5无可用license,导致无法激活,需要新增 S32DS 3.5无可用license,导致无法激活,需要新增
記事全体を表示
LS1043A Secure Boot 4x 4096 keys hangs boot Have secure boot working fine with 1x 1024bit key (key table with 1 element). Trying to change to 4x 4096bit keys (key table with 4 elements) In regular output hangs at: NOTICE: Sec is already initialized and configured. With debug output hangs at: VERBOSE: Table key 3 HASH Then 8 lines of hash Not sure if happenstance but final line value is: VERBOSE: 642dead0 google/gemini seems to think putting 4x 4096bit keys has somehow caused an out of bounds or misalignment. The other lines above for Table Key 0, 1, and 2 seemed to be fine. QorIQ LS1 Devices Re: LS1043A Secure Boot 4x 4096 keys hangs boot I believe I figured out the issue. When changing to the larger keys and HSM I had to modify some of the build scripts so it wasn't properly generating the binary payloads with headers/signatures etc. I will hopefully confirm later and mark this as solved since I don't see an option to delete/remove post. Re: LS1043A Secure Boot 4x 4096 keys hangs boot Attempted bring down to 2x 4096 keys then it hung on key 1 in the same manner. Brought it down to 1x 4096 key and hung as well. When using the 1x 1024 key that was generated & signed by CST 2.x. With the 4096 keys I'm trying to use those were generated via a NitroKey HSM2, and then I'm using cst to generate the image hash for the srk table/public keys and then signing the files via openssl with pkcs11, then finally calling cst sign_embed utility to append the signature(s).
記事全体を表示
RT798S HiFi4 TRAX TraceRAMはAP 3およびDSP ERIでゼロを読み取っています MIMXRT700-EVK上でRT798S HiFi4を使用してTRAX命令キャプチャについて調査しています。RI-2023.11コア構成レポートでは、XCHAL_HAVE_TRAX=1、XCHAL_TRAX_MEM_SIZE=8192となっています。XOCD 14.11はDAP AP 3を介してHiFi4に到達します。観測されたTRAXIDは0x0d43eff2です。 トレースを無効(TRAXSTAT.TRACT=0)にし、メモリを有効に(TRAXCTRL.TMEN=1)した状態で、AP 3のxdmreg-wr/xdmreg-rdコマンドを使用して、4つのパターンをTRAXDATAに書き込み、読み戻しました。TRAXADDRは予想通りに進んだが、4回の読み取りすべてでゼロが返された。DSP側のlibtraxのERI書き込み/読み取りテストでもゼロを返しました。XOCDの書き込み出力は提供された値を反映しているため、TraceRAMが書き込みを受け入れた確認とはみなしていません。 読み取り専用のCM33側スナップショットでは、DSP電源ドメインがオン、SRAMパーティション14–17が電源供給、HiFi4アービター1クロック、HiFi4アービター0アクセスマスク0x3fffffffが確認されました。これらの共有SRAMアービターレジスタをTRAX TraceRAMに紐付けるドキュメントは持っていません。 もう少し詳しく教えていただけますか: HiFi4 TRAXとその8 KiB TraceRAMは、このRT798Sシリコンリビジョンで完全に実装され、サポートされていますか?関連する訂正事項や既知の制限事項はありますか? デバッグAPを介してTRAXDATAの書き込み/読み取りを検証するための推奨手順は何ですか?TRAXADDRのインクリメント以外に、確認すべきAPB/JTAGトランザクションの承認またはエラー状態はありますか? TraceRAMインターフェース向けに、標準的なPMC SRAMパーティション制御やHiFi4 RAMアービターには記載されていない、RT798S特有の電源、クロック、リセット、セキュリティ、統合制御はありますか? このボード上のHiFi4 TRAX TraceRAMをキャプチャして読み取るためのNXP製のサンプル、または動作確認済みのデバッガー/ツールはありますか? DSP側のERIアクセスには、Cadence libtrax API以外にRT798S特有のシーケンスやアクセス条件が必要ですか? POCソースとログは提供できます:trax_poc.c、AP 3のテストログとDSP ERIテストログです。 評価ボード
記事全体を表示
PXOは、現代の高信頼性電子システムにとって理想的な柔軟なクロックソリューションと言えるでしょうか? 急速な技術進歩の時代において、電子機器の性能と信頼性は極めて重要である。世界有数の結晶部品サプライヤーが提供するプログラム可能な結晶発振器(PXO)は、AI、オートモーティブ電子機器、通信(ルーター、スイッチ、5G基地局)、医療、インダストリアルオートメーション、家電、IoTにサポートを提供し、現代技術開発を支えることができるでしょうか? PXOとは、出力周波数をデジタル的に設定可能なアクティブ水晶発振器のことである。従来の水晶発振器のアーキテクチャをベースに、プログラマブル制御回路を統合することで、水晶発振器の高い精度とデジタル構成可能性を兼ね備えています。この「ハードウェア精度+ソフトウェア構成」 ソリューションは、システムクロックデザインに優れた柔軟性をもたらし、多変種かつ高速回転の製品開発に最適です。 主な技術的特長 再定義された高精度タイミング 精密な製造と適応温度補償アルゴリズムを特徴とし、新しいPXOシリーズは-40°C ~ +85°Cで±25ppmの周波数安定性を維持し、-40°C ~ +105°Cの拡張範囲で±50ppmを維持しています。高度な結晶および発振回路設計により、業界最先端の低位相ノイズを実現しています。100Hz、1kHz、10kHzのオフセットで優れた位相ノイズ性能を発揮し、典型的な位相ジッター(12kHz–20MHz)が70 fs未満で、通信や試験計測などの高精度な用途に対応しています。 無制限の周波数、ユーザーがプログラム可能 1MHzから1.5GHzまでの広い周波数範囲をカバーし、チューニング分解能は1Hz以下まで可能です。選択モデルは設定可能な出力ロジック(LVPECL、LVDS、HCSL)、電源電圧(1.8V/2.5V/3.3V)をサポートしています。また、制御を有効・無効化して多様な回路デザインに適合させることで、従来の固定周波数結晶に伴う長いリードタイムを排除します。 小型フォームファクター 標準の3.2×2.5mmおよび2.5×2.0mmパッケージで提供されています。コンパクトなサイズは、スマートフォンや高密度インダストリアルPCBなどのスペース制約のあるデザインに適しており、ハードウェア統合がスムーズです。 超低消費電力 動作電流と待機電流を低減し、低消費電力動作に最適化されています。バッテリー寿命を最大40%延ばすことができ、IoTや携帯機器に適しています。
記事全体を表示
S32G3 NORフラッシュのM7からのブートが失敗 こんにちは、NXPさん。 現在、私はGoldVIP-S32G3-1.16.0のサンプルブートローダーを使用しています。 私のデバイスはS32G399 Gold Boxで、BSP48.0.0が搭載されています。 ブートコアにM7を設定し、NORフラッシュを使用して起動するように設定しました。 M7_bootloader起動成功 - M7アプリケーションの起動>問題ないのですが、A53は動かなきゃいけません。 S32 Flash Toolsを使用してNORフラッシュを行っています。 1. FSL-image-flash-s32G399ardb3.flashimage at 0x00 -> startup OK -> Linux に移行 OK 2. ブートローダーを0x00にフラッシュします(bootloader_0x000000.bin)。サイズ 154KB 3. BootLoader_Configuration.bin を 0x1f0000 にフラッシュする 4. 点灯a53_bl2_0x300_0000_DebugLevel5.bin 0x300_0000 BL2は起動時ではない BL31 -> ではLinuxが起動していないのですが、この問題についてサポートしてもらえますか? ありがとう ゴールドVIP Re: S32G3 NOR Flash booting from M7 fail こんにちは、 ご質問および関連するすべての懸念が当社の技術サポートチームによって適切に確認・追跡されるよう、NXPサポートポータルを通じてサポートチケットを作成してください。 チュートリアルはこちらでご覧いただけます: https://www.nxp.com/company/about-nxp/smarter-world-videos/NCP-VIDEO NXPアカウントにサインインした後、添付画像の通りアカウントメニューを開き、 サポートチケットを選択します。 ご質問の詳細、および関連するログ、設定ファイル、スクリーンショットなどをすべてチケットに含めてください。 チケットが提出されると、技術サポートチームが問い合わせを確認し、CASEを通じて適切な対応を行います。 よろしくお願いします、 アルド。
記事全体を表示
S32G3 NOR Flash booting from M7 fail Hi NXP,  Currently I am using example Bootloader from GoldVIP-S32G3-1.16.0.  My device is S32G399 Gold Box, with BSP48.0.0 I setup to booting using NOR Flash with M7 at Boot Core.  M7_bootloader startup success -> booting M7 Application ok, but A53 is stuck. I flashing to NOR using S32 Flash Tools. 1. fsl-image-flash-s32g399ardb3.flashimage at 0x00 -> startup ok -> go to linux ok 2. flashing bootloader at 0x00 (bootloader_0x000000.bin). size 154kb 3. flashing BootLoader_Configuration.bin at 0x1f0000 4. flashing a53_bl2_0x300_0000_DebugLevel5.bin at 0x300_0000 BL2 is not startup BL31 -> Then linux is not booting, could you support me about this issue. Thanks GoldVIP Re: S32G3 NOR Flash booting from M7 fail Hi, To ensure that your question and all related concerns are properly reviewed and tracked by our technical support team, please create a support ticket through the NXP Support Portal. You can follow the tutorial here: https://www.nxp.com/company/about-nxp/smarter-world-videos/NCP-VIDEO After signing in to your NXP account, open the account menu and select Support Tickets, as shown in the attached image. Please include all the details of your question and any relevant logs, configuration files, or screenshots in the ticket. Once the ticket is submitted, the technical support team will review your inquiry and follow up with the appropriate response through the case. Best regards, Aldo.
記事全体を表示
RT798S HiFi4 TRAX TraceRAM reads zero over AP 3 and DSP ERI I’m investigating TRAX instruction capture on an MIMXRT700-EVK using the RT798S HiFi4. The RI-2023.11 core configuration reports XCHAL_HAVE_TRAX=1 and XCHAL_TRAX_MEM_SIZE=8192. XOCD 14.11 reaches HiFi4 through DAP AP 3; the observed TRAXID is 0x0d43eff2. With trace inactive (TRAXSTAT.TRACT=0) and memory enabled (TRAXCTRL.TMEN=1), I used the AP 3 xdmreg-wr/xdmreg-rd commands to write four patterns to TRAXDATA and read them back. TRAXADDR advanced as expected, but all four reads returned zero. A DSP-side libtrax ERI write/read test also returned zero. The XOCD write output echoes the value supplied, so I do not treat it as confirmation that the TraceRAM accepted the write. A read-only CM33-side snapshot showed the DSP power domain on, SRAM partitions 14–17 powered, the HiFi4 arbiter-1 clock enabled, and HiFi4 arbiter-0 access mask 0x3fffffff. I have no documentation tying those shared-SRAM arbiter registers to TRAX TraceRAM. Could you please clarify: Is HiFi4 TRAX and its 8 KiB TraceRAM fully implemented and supported on this RT798S silicon revision? Are there relevant errata or known limitations? What is the recommended procedure to verify a TRAXDATA write/read through the debug AP? Is there an APB/JTAG transaction-acceptance or error status I should check beyond TRAXADDR increment? Are there RT798S-specific power, clock, reset, security, or integration controls for the TraceRAM interface that are not documented by the standard PMC SRAM partition controls or HiFi4 RAM arbiters? Is there an NXP example or known-good debugger/tool version that captures and reads HiFi4 TRAX TraceRAM on this board? Does DSP-side ERI access require any RT798S-specific sequencing or access conditions beyond the Cadence libtrax API? I can provide the POC source and logs: trax_poc.c, AP 3 test log, and DSP ERI test log. Evaluation Board
記事全体を表示
The S32DS 3.5 has no available license, preventing activation; a new one is required. The S32DS 3.5 has no available license, preventing activation; a new one is required.
記事全体を表示