Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
S32DS for PA v2.1 license is going to expire Hello, My S32DS for PA v2.1 license is going to expire. Please help extend the maintenance. Thanks a lot. 回复: S32DS for PA v2.1 license is going to expire Hello, the validity period of my entry here has not changed. Is it because I did something wrong in my operation? Re: S32DS for PA v2.1 license is going to expire Hi Zipeng, Go to the following link Power Architecture Development Tools | NXP Semiconductors Click Download. Login to your software account. The updated license key should appear here: Let me know if you encounter any issues. Thank you. Regards, Will Re: S32DS for PA v2.1 license is going to expire Hi Zipeng, Thanks for your feeback. I have forwarded your question to the FlexNet team. Once I receive a response, I will update you. Thank you! Regards, Will Re: S32DS for PA v2.1 license is going to expire The team shared this link. Please let me know if it does not work for you. How to extend my CodeWarrior Evaluation Software Regards, Will
記事全体を表示
连续两次测量中接收灵敏度相差 10dB 我发现我们一款使用 QN9083 BLE SoC 的产品出现了异常行为。当我测量设备接收器灵敏度时,我发现连续两次测量之间有高达 10dB 的差异。我正在使用 CMW100 的广播模式进行测量,该设备放置在屏蔽的射频盒中。在不打开盒子和/或改变设备位置的情况下,连续进行 RxS 测量,设备的响应差异高达 10dB(即 -91dBm 和 -81dBm),这是意料之外的,以前从未发生过。这种行为是随机的。我正在寻找硬件和软件方面可能的原因。
記事全体を表示
在NXP i.MX6上使用UART端口实现高波特率 我们计划在 NXP i.MX6 (Cortex-A9) 上使用 UART 通信,波特率为 230.4 kbps 或 460.8 kbps。 根据以下已解决的讨论串, 已解决:回复:如何提高 imx6 的 UART 波特率 - NXP 社区 据称,当波特率高于 115.2 kbps 时,处理器似乎无法及时接收所有字节,内核返回“Rx FIFO 溢出”随机错误。 为解决这个问题,建议采用以下两种方法: 修改驱动程序代码以启用 DMA 传输 增加DMA接收缓冲区,使其每帧的字节数高于上述值。 我有两个问题。(第二个选项是可选的。) ① 请问修改驱动程序代码以启用 DMA 传输的具体步骤是什么? ② 如果您有关于在上述条件下运行的错误率方面的信息,也请您分享一下。 Re: Using the uart port for high baud rate on NXP i.MX6 嗨@INOUE , 感谢您联系恩智浦技术支持! 遗憾的是,我们没有任何文档或应用笔记来描述此过程。 您需要根据参考手册中提供的信息自行实施和验证。 有关硬件详情、寄存器说明和推荐的编程顺序,请参阅参考手册。 此致, 查维拉 Re: Using the uart port for high baud rate on NXP i.MX6 很抱歉回复晚了。 首先,我明白了。我们将按照参考手册进行实施。
記事全体を表示
i.MX8MPLUS uSDHC HS400モード(ストロボ機能強化) HS400の強化ストロボを有効にするための推奨手順はありますか?MIX_CTRLレジスタのEN_HS400_MODEを設定するだけで十分でしょうか、それともSTROBE_DLL_CTRLレジスタに追加の変更が必要でしょうか? よろしくお願いいたします。 ステファン Re: i.MX8MPLUS uSDHC HS400 mode with enhanced strobe こんにちは、 @Stefan_CIT HS400ESでは、eMMC側とホスト側の両方で同時に設定を行う必要があります。EN_HS400_MODEを設定するだけでは、ホスト側の設定の一部に過ぎず、HS400拡張ストロボ機能を有効にするには不十分です。 Linux BSPを使っている場合、ドライバーは自動的にDLLとチューニングの設定を完成させます。 よろしくお願いします、 志明
記事全体を表示
NXPには外部メモリでtflite NPUモデルを動かすチュートリアルはありますか? NXPが外部にNPUモデルをeiqで動かす記事tflm_label_image_ext_mem例メモリ https://docs.nxp.com/bundle/AN14700/page/topics/external_memory.html を見ました EIQ例については言及だけで、外部メモリの新しいNPUモデルに適用する例をどのように修正するかの詳細は触れられていませんでした。一方、NXPはSRAM上で新しいNPUモデルを動かすためのソースコード変更の詳細なガイドラインを https://docs.nxp.com/bundle/AN14700/page/topics/Note_about_the_source_code_in_the_document.html 現在、外部メモリ上でNPUモデルを展開したいと考えています。 詳細なガイドラインをお持ちでしたら、ぜひ共有してください。 よろしくお願いします。 Re: Does NXP have any tutorial to run tflite NPU model on external memory? こんにちは、 @nnxxpp さん。 私たちの製品にご関心を寄せ、コミュニティをご利用いただき、本当にありがとうございます。 外部メモリからNPUモデルを実行したい場合は、通常のSRAMベースのtflm_label_image例ではなく、tflm_label_image_ext_mem例から始めることをお勧めします。 詳細については、tflm_label_image_ext_mem MCUXpresso SDKのドキュメントをご参照ください。 tflm_label_image_ext_mem — MCUXpresso SDK ドキュメント お役に立てれば幸いです。 よろしくお願いいたします。 5月 Re: Does NXP have any tutorial to run tflite NPU model on external memory? @mayliu1 ありがとう。いくつかの試行を試しましたが、あなたが言及したように、モデルを外部メモリで見つける際に シーケンサー は使わないべきだと分かりました。 あなたが添付したNXPのドキュメントを初めて見ました。役立つドキュメントをありがとうございます。 Re: Does NXP have any tutorial to run tflite NPU model on external memory? こんにちは、 @nnxxpp さん。 ご意見ありがとうございます。ドキュメントが役に立ってよかったです。 今後新しい質問があれば、どうぞNXPコミュニティに投稿してください。 喜んでお手伝いいたします。 よろしくお願いいたします。 5月
記事全体を表示
外部MCUリンクデバッグプローブを使う場合、FRDM-MCXA153に電源を入れるUSBはどれですか? こんにちは、私はNXPのマイクロコントローラとMCUxpresso IDEは初心者です。FRDM-MCXA153とMCU-Linkデバッグプローブも購入しました。外部デバッグプローブを使用したいのは、自作のプリント基板でそれを使用する予定だからです。Blinky LEDの例コードを動作させ、外部デバッグポートJ18とMCU-Link Debug Probeを使って動作させました。 私の質問は、外部デバッガを使用している間、FRDMボードのJ18またはJ8に電源を供給するために、FRDMボード上のどのUSBコネクタを使用すればよいかということです。 よろしくお願い申し上げます。 開発ボード
記事全体を表示
S32k144 EVB 板上的电能表 我正在尝试使用 Modbus RTU 将 NXP S32K144 板与基于 RS-485 的电能表连接起来。 S32K144 作为 Modbus 主站 电能表作为 Modbus 从站(RS-485) 用于测试的 USB 转 RS485 变流器 S32 设计工作室(用于调试的实时表达式) 我应该如何连接 S32K144 和电能表之间的 RS-485 信号(A/B、DE/RE)? 如何在S32K144上配置UART/SCI以进行RS-485 Modbus通信? 如何使用调试器/实时表达式实时验证 Modbus 数据传输? 该电能表通过 USB 转 RS485 与 PC Modbus 工具配合使用可以正常工作,但我需要指导如何在 S32K144 上实现和调试它。 Re: Energy meter on S32k144 EVB board 嗨@Turtledove S32K144 EVB 不包含原生 RS-485 收发器,因此需要在 MCU UART 和电能表之间使用外部 RS-485 PHY(例如 MAX3485、SN65HVD 系列等)。将 S32K144 的 UART TX/RX 连接到收发器的 DI/RO 引脚,并将收发器的 A/B 差分对连接到仪表的 A/B 线。DE 和 \RE 可以通过 GPIO 驱动(通常连接在一起用于半双工 Modbus RTU 操作)。 对于软件,配置其中一个 LPUART 实例以进行仪表设置(通常为 9600/19200 波特率,8 位数据位,根据仪表规格,无奇偶校验或偶校验,1 位停止位)。在发送 Modbus 帧之前,置位 DE,发送帧,等待传输完成,然后取消置位 DE 并切换回接收模式。Modbus RTU 本身是在 UART 驱动程序之上以软件形式实现的。 调试时,首先使用示波器或逻辑分析仪验证 UART 通信。您还可以使用 S32 设计工作室中的监视变量或实时表达式来监测已发送的请求、已接收的响应、CRC 状态和已解码的寄存器值。实时表达式可以显示应用程序变量,但不能直接解码总线上的 Modbus 帧。 此致, Lukas
記事全体を表示
使用外部MCU链路调试探针时,应该使用哪个USB接口为FRDM-MCXA153供电? 您好,我是 NXP 微控制器和 MCUxpresso IDE 的新手。我购买了 FRDM-MCXA153 和 MCU-Link 调试探针。我想使用外部调试探针,因为我将在我的定制印刷电路板上使用它。我已经成功运行了闪烁 LED 示例代码,并且可以使用 MCU-Link 调试探针通过外部调试端口 J18 进行调试。 我的问题是,在使用外部调试器时,我应该使用 FRDM 板上的哪个 USB 接口(J18 或 J8)为电路板供电? 谢谢 开发板
記事全体を表示
S32k144 EVBボードのエネルギーメーター 私はModbus RTUを使ってNXPのS32K144ボードとRS-485ベースのエネルギーメーターをインターフェースしようとしています。 S32K144をModbusマスターとして使用 Modbusスレーブとしてのエネルギーメーター(RS-485) テスト用USBからRS485へのコンバーター S32 Design Studio(デバッグ用のリアルタイム表現) RS-485信号(A/B、DE/RE)をS32K144とエネルギーメーターの間にどう接続すればよいでしょうか? S32K144でRS-485 Modbus通信用のUART/SCIを設定する方法は? デバッガーやリアルタイム式を使ってModbusのデータ転送をリアルタイムでどのように検証できますか? エネルギーメーターはUSB-RS485経由でPCのModbusツールで正しく動作しますが、S32K144上で実装やデバッグの指導が必要です。 Re: Energy meter on S32k144 EVB board こんにちは、 @Turtledove S32K144 EVBにはネイティブのRS-485トランシーバが搭載されていないため、MCU UARTとエネルギーメーターの間に外部RS-485 PHY(例:MAX3485、SN65HVDシリーズなど)が必要です。UART TX/RXをS32K144からトランシーバーのDI/ROピンに接続し、トランシーバーA/B差動ペアをメーターのA/Bラインに接続します。DEと\REはGPIOによって駆動可能で(多くの場合、半二重Modbus RTU動作のために連結されています)。 ソフトウェアでは、メーター設定(通常9600/19200ボー、8ビットデータ、パリティなし、メーター仕様によってパリティなし、ストップビット1ビット)をLPUARTインスタンスのいずれかに設定してください。Modbusフレームを送信する前に、DEを主張し、フレームを送信し、送信が完了するまで待機し、DEを解除して受信モードに戻ります。Modbus RTU自体はUARTドライバの上にソフトウェアで実装されています。 デバッグを行うには、まずオシロスコープまたはロジックアナライザを使用してUARTトラフィックを確認してください。また、S32 Design Studioではウォッチ変数やリアルタイム式を使って送信リクエスト、受信応答、CRCの状態、デコードされたレジスタ値を監視することも可能です。リアルタイム式はアプリケーション変数を表示することはできますが、バス上のModbusフレームを直接デコードすることはできません。 よろしくお願いいたします。 ルーカス
記事全体を表示
Rx sensitivity differs by 10dB between consecutive measurements I am observing unexpected behavior for one of our products using QN9083 BLE SoC. When I measure the device receiver sensitivity, I am seeing deltas up to 10dB between consecutive measurements. I am using a CMW100 in advertiser mode to perform measurement and the device is placed in a shielded RF box. Performing consecutive RxS measurements, without opening the box and/or changing device location, the device responds with up to 10dB difference (i.e., -91dBm and -81dBm) which is unexpected and never happened before. The behavior is random. I am looking for possible causes both hardware and software.
記事全体を表示
NXP i.MX6でUARTポートを使用して高ボーレート通信を行う NXP i.MX6(Cortex-A9)でUART通信を230.4 kbpsまたは460.8 kbpsのボーレートで使用する予定です。 以下の解決済みスレッドによると、 解決済み:IMX6のuartボーレート向上方法 - NXPコミュニティ 115.2 kbpsを超えるボーレートでは、 プロセッサがすべてのバイトをタイムリーに受信できず、カーネルは「Rx FIFO overrun」とランダムに返すと述べられています。 このマターを解決するために、2つの方法が提案されています。 DMA転送を有効にするためにドライバーコードを修正してください フレームあたり上記のバイト数を超えるDMA受信バッファを増やす 質問が2つあります。(2つ目は任意です。) (1) DMA転送を有効にするためにドライバーコードを修正する 具体的な手順 を教えていただけますか? (2) 上記の条件下での誤差率に関する情報があれば、ぜひ共有していただけると幸いです。 Re: Using the uart port for high baud rate on NXP i.MX6 こんにちは@INOUE。 NXPサポートにご連絡いただきありがとうございます! 残念ながら、この手続きについてのドキュメントやアプリケーションノートは一切ありません。 リファレンス・マニュアルに記載されている情報に基づいて、ご自身で実装し検証する必要があります。 ハードウェアの詳細、レジスタの説明、推奨されるプログラミング手順については、RM(リファレンスマニュアル)を参照してください。 よろしくお願いします、 チャビラ Re: Using the uart port for high baud rate on NXP i.MX6 返信が遅くなり申し訳ありません。 まず、理解しました。リファレンス・マニュアルに基づいて実施 します 。
記事全体を表示
i.MX8MPLUS uSDHC HS400 mode with enhanced strobe Is there a recommended procedure to activate the enhanced strobe in HS400? Is it sufficient to set the EN_HS400_MODE in the MIX_CTRL register or does it need some additional modifications in the STROBE_DLL_CTRL register? Regards, Stefan Re: i.MX8MPLUS uSDHC HS400 mode with enhanced strobe Hi @Stefan_CIT  The HS400ES requires simultaneous configuration on both the eMMC and host sides. Setting EN_HS400_MODE alone is only part of the host-side configuration and is not sufficient to enable the HS400 Enhanced Strobe feature. If you are using Linux BSP, the driver automatically completes the DLL and tuning configurations. Best Regards, Zhiming
記事全体を表示
i.MX8MPLUS uSDHC HS400 模式,带增强型频闪功能 HS400 是否有推荐的激活增强型频闪功能的步骤?是否只需在 MIX_CTRL 寄存器中设置 EN_HS400_MODE 即可,还是需要在 STROBE_DLL_CTRL 寄存器中进行一些额外的修改? 此致, 斯特凡 Re: i.MX8MPLUS uSDHC HS400 mode with enhanced strobe 嗨@Stefan_CIT HS400ES 需要同时在 eMMC 端和主机端进行配置。单独设置 EN_HS400_MODE 只是主机端配置的一部分,不足以启用 HS400 增强型频闪功能。 如果您使用的是 Linux BSP,驱动程序会自动完成 DLL 和调优配置。 此致, 志明
記事全体を表示
MCXW71 - Packet loss and instability at 2 Mbps half-duplex due to 2.4 GHz co-existence / RF robustne Hi NXP Community, I am currently working on a project using the  #MCXW71C wireless MCU. I have developed a half-duplex communication protocol between two MCXW71C chips running at a 2 Mbps data rate. While the communication is perfectly stable in a clean RF environment, I am experiencing severe instability and significant packet loss as soon as other 2.4 GHz RF devices (such as smartwatches, wireless earbuds, or smartphones with Bluetooth enabled) are brought close to our hardware (within a distance of about 30 cm). Here are some important details about our setup: Hardware: This is a custom PCB design (not an evaluation board). We designed and implemented the impedance matching network ourselves for the RF front-end. PHY / Protocol: GENFSK NXP SDK Version: SDK_2.25.09.00_MCXW716C Frequency Hopping: not us FHSS Given that our custom board works well in isolation but suffers in congested RF environments, we suspect the receiver might be desensitized or saturated by adjacent 2.4 GHz interferers. Could you please provide some guidance? Are there specific hardware tuning guidelines or registers for the MCXW71 to optimize receiver selectivity, AGC (Automatic Gain Control) behavior, or LNA gain in noisy environments? Is there a recommended software Coexistence configuration or CCA (Clear Channel Assessment) threshold tuning to better handle packet collisions? Could a slight mismatch in our custom impedance network degrade the selectivity/blocking performance of the transceiver specifically in the presence of strong out-of-band/adjacent interferers? Board Design Re: MCXW71 - Packet loss and instability at 2 Mbps half-duplex due to 2.4 GHz co-existence / RF robu Hello, Hope you are doing well.   Since you are using a custom board, I would recommend comparing its performance against the FRDM-MCXW71 under the same conducted test setup. Before modifying radio registers, it is important to verify factors such as the RF layout, grounding, antenna matching network, power supply noise, and any enclosure-related coupling effects. You can also run PER tests while sweeping the CCA threshold to find a practical operating point. CCA can help reduce packet collisions by preventing transmission when the channel is already busy, but the threshold should be validated empirically in the target RF environment. The following document describes RF performance testing methods and how to use them to evaluate CCA behavior: AN14399 MCXW71 Connectivity Test for 802.15.4 Applications To further validate your RF design, you may also find the following documents useful: UG10146 MCXW71 Hardware Design Guide AN14374 FRDM-MCXW71 RF System Evaluation Report for Bluetooth LE and IEEE 802.15.4 Applications AN2731 Compact Planar Antennas for 2.4 GHz Communication Best regards, Sofia.
記事全体を表示
TJA1120A RGMII Auto-Ethernet We are working on TJA1120A RGMII Auto-Ethernet on our Custom Board based on TI AM62A7 Kindly help us with how to enable this interface on Yocto Linux  We have tried following DTS node format as in https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/net/nxp%2Ctja11xx.yaml But driver didnt probe on Kernel dmesg We understand that this PHY has vendor ID D001B:B031 We have also enabled CONFIG_NXP_TJA11XX_PHY in kernel config CONFIG_NXP_C45_TJA11XX_PHY Re: TJA1120A RGMII Auto-Ethernet Hello @vikyhre , To narrow this down, could you please share: 1) Does U-Boot detect the PHY on the MDIO bus at the expected address? (e.g. output of “mdio list” / “mii info”) 2) Please share the relevant DTS snippets for the CPSW port node and the MDIO/PHY node (phy-handle, phy-mode, PHY reg/address), plus the boot log lines related to MDIO/PHY init: dmesg | egrep -i "mdio|cpsw|phy|tja|nxp" With these two items we can quickly determine whether the PHY is not visible on MDIO (HW/pinmux/reset/address) or if it’s a DT binding/reference issue. Best regards, Pavel Re: TJA1120A RGMII Auto-Ethernet We are using AM62A7 based iWave SoM, we didnt touch the u-boot/bootloader firmware residing in the eMMC as of now U-Boot SPL 2023.04-g2b8a667ace (May 24 2024 - 11:27:05 +0000) SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)') am62a_init: board_init_f done SPL initial stack usage: 17040 bytes am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Trying to boot from MMC1 am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed Starting ATF on ARM64 core... NOTICE: BL31: v2.9(release):d7a7135d3-dirty NOTICE: BL31: Built : 09:34:15, Aug 24 2023 U-Boot SPL 2023.04-g2b8a667ace (May 24 2024 - 11:27:05 +0000) SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)') am62a_init: board_init_f done am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Trying to boot from MMC1 am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed am62a_init: spl_boot_device: devstat = 0x374b bootmedia = 0x9 bootindex = 0 Authentication passed U-Boot 2023.04-g2b8a667ace (May 24 2024 - 11:27:05 +0000) SoC: AM62AX SR1.0 HS-FS Model: iW-RainboW-G55M-TI-AM62AX OSM DRAM: 2 GiB Core: 60 devices, 29 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial@2800000 Out: serial@2800000 Err: serial@2800000 Board Info: BSP Version : iW-PRHAZ-SC-01-R2.0-REL1.0-Linux6.1.46 SOM Version : iW-PRHAZ-AP-01-R2.0 Net: eth0: ethernet@8000000port@1 Hit any key to stop autoboot: 0 iWave-G55M > mdio list mdio@f00: ethernet@8000000port@1: 4 - Generic PHY <--> ethernet@8000000port@1 iWave-G55M > mii info  U-Boot firmware is something we didnt change, we just boot our Linux from SD-Card I have attached k3-am62a7-iwg55m.dtsi, where both ethernets eth0,eth1 are disabled &cpsw3g { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_rgmii1_pins_default>, <&main_rgmii2_pins_default>; cpts@3d000 { /* MAP HW3_TS_PUSH to GENF1 */ ti,pps = <2 1>; }; }; &cpsw_port1 { status = "disabled"; phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "disabled"; phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy1>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { reg = <4>; adi,rx-internal-delay-ps = <2000>; }; cpsw3g_phy1: ethernet-phy@1 { reg = <5>; qca,disable-smarteee; vddio-supply = <&vddio0>; vddio0: vddio-regulator { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; }; }; In k3-am62a7-iwg55s-prgjj-41.dts, i enabled both eth0 and eth1 with appropiate DT entries &cpsw_port1 and &cpsw3g_phy0 corresponds to our Auto-Ethernet &cpsw_port1 { status = "okay"; phy-mode = "rgmii"; }; &cpsw_port2 { status = "okay"; phy-mode = "rgmii"; }; &cpsw3g_phy0 { //compatible = "ethernet-phy-id001b.b031", "ethernet-phy-ieee802.3-c45"; compatible = "ethernet-phy-id001b.b030"; nxp,rmii-refclk-in; reg = <4>; }; &cpsw3g_phy1 { compatible = "ethernet-phy-id0022.1620"; reg = <0>; txc-skew-ps = <900>; rxc-skew-ps = <900>; rxd0-skew-ps = <420>; rxd1-skew-ps = <420>; rxd2-skew-ps = <420>; rxd3-skew-ps = <420>; txd0-skew-ps = <420>; txd1-skew-ps = <420>; txd2-skew-ps = <420>; txd3-skew-ps = <420>; rxdv-skew-ps = <420>; txen-skew-ps = <420>; }; Here, my PHY TJA1120A has PHY Identification Register 1: 1B and PHY Identification Register 2: B030. So appropiate driver should be  compatible = "ethernet-phy-id001b.b030" Response for dmesg | egrep -i "mdio|cpsw|phy|tja|nxp" root@am62ax-iwg55m-osm:/sys/class/hwmon/hwmon0# dmesg | egrep -i "mdio|cpsw|phy|tja|nxp" [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys). [ 1.349271] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000 [ 1.358577] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver Micrel KSZ9031 Gigabit PHY [ 1.368066] davinci_mdio 8000f00.mdio: phy[4]: device 8000f00.mdio:04, driver unknown [ 1.375925] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006 [ 1.388839] am65-cpsw-nuss 8000000.ethernet: Use random MAC address [ 1.395108] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5 [ 1.402236] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512 [ 1.412875] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1 [ 1.422952] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19 [ 6.876699] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:00] driver [Micrel KSZ9031 Gigabit PHY] (irq=POLL) [ 6.893353] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii link mode [ 6.937861] am65-cpsw-nuss 8000000.ethernet eth0: validation of rgmii with support 00000000,00000000,00006280 and advertisement 00000000,00000000,00002280 failed: -EINVAL I have also attached dmesg Re: TJA1120A RGMII Auto-Ethernet Hello @vikyhre , Please note that Community threads are actively monitored for 7 days after the last post. After this period, we only receive subscription email notifications for further updates, and such notifications can occasionally be missed.   If you need additional assistance in the future, we recommend creating a new Community query or supporting ticket https://support.nxp.com/s/?language=en_US . Anyway, here's my analyses. Please note that the Linux commands below are provided as suggested diagnostic checks. Since I do not have access to your exact build and runtime environment, I cannot directly verify them on your setup and minor adaptations may be needed depending on your system configuration. The following thread might be useful as a reference: No packet transmission with TJA1120 and i.MX8 Eval hardware From the log, the MDIO access itself seems to be working, because Linux detects two PHY devices on the MDIO bus: [ 1.358577] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver Micrel KSZ9031 Gigabit PHY [ 1.368066] davinci_mdio 8000f00.mdio: phy[4]: device 8000f00.mdio:04, driver unknown So the TJA1120A appears to be visible at MDIO address 4, but it is not bound to the NXP C45 TJA11xx PHY driver yet. This is likely why the CPSW port later fails during RGMII validation. As a first step, please try updating the TJA1120A PHY node to explicitly specify Clause 45: &cpsw_port1 {     status = "okay";     phy-mode = "rgmii";      /* or rgmii-id / rgmii-rxid / rgmii-txid depending on your board delay design */     phy-handle = <&cpsw3g_phy0>; };   &cpsw3g_phy0 {     compatible = "ethernet-phy-id001b.b030", "ethernet-phy-ieee802.3-c45";     reg = <4>;     status = "okay"; }; Also, please remove this property from the TJA1120A node:  nxp,rmii-refclk-in; This property is related to RMII reference clock configuration and should not be used for your RGMII TJA1120A setup.   After rebuilding and booting with the updated DTB, please check whether the driver is attached, for example: dmesg | egrep -i "mdio|cpsw|phy|tja|nxp"   The expected result is that the PHY at address 4 is no longer shown as driver unknown , but is attached to the NXP C45 TJA11xx/TJA1120 driver. If it still remains driver unknown , please also confirm that the running kernel really contains the driver support: zcat /proc/config.gz | egrep "NXP.*TJA|C45|PHYLIB" find /lib/modules/$(uname -r) -name "*tja*"   Best regards, Pavel
記事全体を表示
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! 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.
記事全体を表示
Question Regarding Critical Section Protection for OTP and NVM Access Services Hi, We previously encountered an issue caused by a background process when modifying the OTP (Secure Debug Password) and Life Cycle (LC) in HSE_B. As a result, we were advised to protect the OTP and LC update operations by using a critical section. In addition, would it also be necessary to protect service requests that access the NVM area, rather than the OTP, such as ImportKey, FormatKeyCatalogs, SmrEntryInstall, and CrEntryInstall, by using a critical section? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi @lukaszadrapa, thank you for your reply. In that case, instead of entering a critical section, would it be sufficient to check the HSE_CONFIG_GPR3 register before accessing the flash to ensure that flash access is available? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi @wodudwo  To have full picture, I recommend to read description in HSE Firmware reference manual rev. 2.7 in section: “14.6.5  Synchronizing flash read/write access between HSE and application core”: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 There are tables 149, 150 and 151 where you can find details about typical scenarios. In short: if HSE firmware is executing, it’s not possible to program a flash block from which the firmware is running from. In case of S32K344 and FULL_MEM version (just an example) it’s block 3, in case of AB_SWAP it’s block 1. It’s necessary to wait until HSE is in idle state and then do not trigger other HSE services. If HSE is performing flash operation on SYS-IMG (like key catalog formatting, importing a key, writing NVM attribute…) then, in addition, it is not possible to access data flash memory. If HSE is writing OTP data (attribute, life cycle advancing, programming password etc.) it is not possible to access UTEST and also flash block 0 because UTEST and flash block 0 are in the same read partition. And this seems to be the key point if you have a problem with ADKP programming and with life cycle advancing. Please take a look at this post where I described what needs to be relocated from flash block 0: https://community.nxp.com/t5/S32K/S32K324-HSE-Setting-ADKP-Issue/m-p/2369325/highlight/true#M58774 And when talking about synchronization between flash and HSE, notice that the support for synchronization between FLS and CRYPTO modules in RTD was added in version 5.0.0 and higher. Here is a screenshot from 6.0.0: If you use older RTD version, it needs to be handled by users. Notice that this synchronization does not solve the problem with programming OTP attributes to UTEST. The code still needs to be relocated from flash block 0. Regards, Lukas Re: Question Regarding Critical Section Protection for OTP and NVM Access Services It depends on scenario. “In addition, would it also be necessary to protect service requests that access the NVM area, rather than the OTP, such as ImportKey, FormatKeyCatalogs, SmrEntryInstall, and CrEntryInstall, by using a critical section?” For this scenario – no. HSE_CONFIG_GPR3 informs users if read/execute or program/erase is blocked for application by HSE on some flash block. But this is not a protection similar to critical section in your code. Critical section will ensure that there will be no interrupt which could access data flash or which could somehow interfere with the operations. But this has nothing to do with status of HSE_CONFIG_GPR3. Anyway, mentioned services like ImportKey, FormatKeyCatalogs, SmrEntryInstall, and CrEntryInstall are crucial configuration services which should be executed sequentially in controlled environment. It makes sense to use critical section. If it is necessary to handle some important interrupts in the meantime, it’s necessary to ensure that used interrupt resources does not interfere with HSE and flash blocks used by HSE. Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi, @lukaszadrapa  Thank you for your explanation. If I understand correctly, checking the HSE_CONFIG_GPR3 register alone is not sufficient, and protection using a critical section is still required. My understanding is that even if an interrupt occurs, checking the HSE_CONFIG_GPR3 register before accessing the flash should prevent the application core and the HSE core from accessing the same flash block simultaneously. If a critical section is not used, are there any other potential issues that could occur besides simultaneous flash access between the application core and the HSE core? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Conversely, is it also an issue if the application core performs a program/erase operation while HSE is already performing a program/erase operation? - Yes, it is an issue because no more flash operations can run at the same time.   If so, can this situation be prevented by checking not only bits 21:16 but also bits 29:24 of the HSE_CONFIG_GPR3 register before the application core starts the program/erase operation? - Yes. This would help in situation when HSE is already programming the flash and application core want to also start another flash operation.   If this approach is not sufficient to prevent such conflicts, would using a critical section be the recommended solution for protecting these service requests? - When HSE performs mentioned NVM operations (catalog format, key import…), application should not start other flash operations and should not access flash block which is being programmed by HSE. If anything like that is done by the interrupt handlers, yes, critical section would prevent this conflict.   Additionally, the tables do not explicitly describe the case where the application core is executing code from a code flash block while HSE is performing a program/erase operation on the same code flash block. Is this scenario considered safe without any synchronization, or does it also require some form of protection? - Code flash memory is being programmed by HSE only when HSE/SBAF installs/updates/recovers/erases HSE firmware. This is done either out of reset automatically or it is triggered by software. HSE firmware is located it the end of code flash (in FULL_MEM version) or at the end of active and passive block (AB_SWAP version). It is expected that the application starts from lower flash blocks and it also waits until initialization is done and until HSE finishes the initialization (and possible flash operations). So, there’s no risk in this case. If application triggers an update of HSE firmware, it’s up to user to ensure that corresponding flash block is not access during this operation. If protection is required for this scenario, what would be the recommended way to implement it? - As described above – after reset, do not access flash block which contains HSE firmware until initialization is completed. And do not access the flash block when your software initiates HSE firmware update.   Re: Question Regarding Critical Section Protection for OTP and NVM Access Services hi, @lukaszadrapa  Thank you for your explanation. Your answers have been very helpful.  Re: Question Regarding Critical Section Protection for OTP and NVM Access Services Hi, @lukaszadrapa  Thank you for your reply. According to Tables 149, 150, and 151 in the HSE Firmware Reference Manual, which describe synchronization requirements for concurrent flash program/erase operations, the following is stated: No synchronization steps to be followed. It is expected that the M7_0/1 core does not issue any command to HSE which involves program/erase operation when it is programming data flash. Conversely, is it also an issue if the application core performs a program/erase operation while HSE is already performing a program/erase operation? If so, can this situation be prevented by checking not only bits 21:16 but also bits 29:24 of the HSE_CONFIG_GPR3 register before the application core starts the program/erase operation? If this approach is not sufficient to prevent such conflicts, would using a critical section be the recommended solution for protecting these service requests? Additionally, the tables do not explicitly describe the case where the application core is executing code from a code flash block while HSE is performing a program/erase operation on the same code flash block. Is this scenario considered safe without any synchronization, or does it also require some form of protection? If protection is required for this scenario, what would be the recommended way to implement it? Re: Question Regarding Critical Section Protection for OTP and NVM Access Services We are getting back to tables 149, 150 and 151 from HSE firmware reference manual which I mentioned earlier. It's necessary to evaluate the program flow, compare it with scenarios described in the tables and decide if countermeasures are needed or not. Otherwise there could be a risk that HSE will disrupt application core(s) or vice versa.  Regards, Lukas
記事全体を表示
使用安卓操作系统时,NXP SD8987 Wi-Fi+蓝牙组合模块的蓝牙高频功能无法正常工作。 您好, 我正在使用 NXP 芯片 sd8987 (M2-JODY-W263-10C) 和 TI SoC am62p。我使用的是安卓系统。A2DP协议工作正常,但免提功能无法使用。我只有一个带音频解码功能的扬声器。 从引脚的角度来看,M2-JODY-W263-10C (sd8987) 模块有什么需要注意的地方吗? 此致 罗珊 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 请问您的安卓系统版本是多少? 您是否在 SD8987 M2-JODY-W263 - 10C 模块上使用 PCM/I2S 接口进行 SCO 控制? 请您提供设备启动后的完整日志,包括完整的“A2DP 已连接但 HFP 无法工作”的过程日志? 顺祝商祺! Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 嗨,克里斯汀, 我没有使用 pcm/i2s 引脚。基于 UART 的软件 HFP 路径。 我使用的是 TI am62p SoC,安卓版本为 16。 已附上蓝牙管理器日志。 此致 罗珊 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 感谢您提供的系统文件和信息。 从你的 dumpsys 文件中,我看到 RFCOMM 已经打开,SCO 也已成功创建,并且处理程序也已经启动。 为了进一步调试,请您提供以下信息: 1.蓝牙HCI监听日志,包括完整的连接过程、A2DP连接但HFP无法工作的过程? 在 Android 上,您可以通过启用此功能来捕获 HCI 日志。 蓝牙 HCI 窥探日志 在 开发者选项 ,切换一次蓝牙以开始捕获,然后导出日志  adb  。 步骤: 打开 开发者选项 使能够 蓝牙 HCI 窥探日志 切换蓝牙 断断续续地 正在尝试重现该问题。 使用 ADB 命令提取日志文件。 2. adb shell dumpsys media.audio_policy> audio_policy.txt adb shell dumpsys media.audio_flinger> audio_flinger.txt adb logcat -b all -d > logcat_log.txt(从设备启动时获取)   顺祝商祺! Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 请您提供所需的日志,以便我们继续处理此问题? 顺祝商祺! Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS 你好, @Roshan888 您的问题解决了吗? 您仍然需要我们的支持吗? 如果可以,请您提供所需的日志,以便我们继续处理此问题? 顺祝商祺! Christine。
記事全体を表示
32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) I am currently trying to configure a 32-bit parallel Shifter to receive data from an external device with one of the pins (FLEX_D4/DATA_VALID) being used as a signal to Shift in the data.  The progress I have made has allowed me to read in the 32-bit data when DATA_VALID has triggered and move the data into an eDMA Ping-Pong buffer. I am currently testing through Printf statements of reading the buffer data to a console and if the Shifter has any errors (usually indicating Overrun according to the datasheet) they will print to the console as well.  I believe my main issue is with the TimerConfig as it is triggering the Shifter to read too many times on one rising edge of DATA_VALID but I have not found a configuration that allows me to read only once while actually moving the correct data.  Console Output:  Reading Buffer A: 0x3fffefff Shifter Error Code: 0x8 Shifter Status: 0x0 SHIFTSDEN: 0x8 DMA CSR: 0x0 DMA Error: 0x0 TCD BITER: 0x2 CSR: 0x12 CH_MUX: 0x40 Reading Buffer B: 0x3fffefff Shifter Error Code: 0x8 Shifter Status: 0x0 SHIFTSDEN: 0x8 DMA CSR: 0x0 DMA Error: 0x0 TCD BITER: 0x2 CSR: 0x12 My FLEX_IO setup is attached. Thank you. Clock|Timers Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) Development Board MCXN Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Update: I was able to deduce that "kFLEXIO_TimerDisableOnTriggerFallingEdge" was keeping my CPU in the callback. I believe I want to disable after a Timer Compare but with this option SHIFTBUF only reports a value of 0x0 but with no SHIFTERR flag.  Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Hi  @Flexin_On_The_IO  Thank you for your post! Could you please share the current behavior you see in your register?  Which test data are you trying to receive and what you currently get?  Could you please share which MCXN are you using?  Is it a custom board? if not, please specify the board you are using Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Hi @carlos_o thank you for the reply! I was able to get the Timer reading on DATA_VALID edge like I wanted but did not update the thread. My current code is attached. The problem I am facing now is getting the FlexIO to keep up with other devices. In my current setup I am basically sampling DATA_VALID and at higher speeds, the Shifter can get Overrun. My thinking is that my design requires a shared clock between the MCX & host device that would be sending the 32-bit data. I can use a pin within the 32-bit data bus to be this signal so I do not need to breakup the FlexIO pins. Any input on this idea would be welcome! To answer your previous questions: 1. The registers are populating as intended at lower speeds. On every DATA_VALID falling edge, the SHIFTBUF stores data from the 32 Pins and the EDMA transfers to my Ping-Pong buffer via a Scatter-Gather method. 2. I am simulating input through an Analog Discovery 2, since that only has 16 data pins I am just writing the upper values of the 32-bits, simulating a clock on the DATA_VALID pin, and tying the unused pins down. Test data is matching correctly at low speeds. 3. I am using the FRDM-MCXN947 Re: 32-Bit Parallel Receive on Rising Edge Pin (FRDM-MCXN947) Hi @Flexin_On_The_IO  Apologize the late reply,  Could you please specify the speeds you are trying to achieve?  You could review AN14284: Timing Parameter Tuning for FlexIO Emulated Interface, this app note could have some helpful information to your goal.   
記事全体を表示
RAM retention not working across functional reset (S32K3xx) Hi Team, We are trying to retain a variable across functional reset on S32K3xx, but it is not working. Implementation: Variable placed in custom RAM section: __attribute__((section(".int_sram_results"))) uint32_t retain_var;               The value is being updated before reset (for testing retain_var= 0x11223344) . Reset type: Functional reset (software-triggered) Observed behaviour: But value is always 0 (cleared) RAM retention is not happening Reference checked: Already referred this discussion and tried the suggested approach: https://community.nxp.com/t5/S32K/S32K311-noinit-ram/td-p/2123035 The example provided there did not work in our case Request: Please share a working example or minimal snippet for retaining RAM across functional reset on S32K3xx Thanks, Yusup S32K3 S32DS-ARM S32K31XEVB-Q100  Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, The startup code most likely initializes the entire SRAM to zero (for ECC initialization) after every reset—I haven’t seen your specific startup code. You could consider skipping the ECC initialization when the reset is functional. Refer to this answer: https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/m-p/1764143 BR, Daniel Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, What do you mean by “it does not work”? The files you posted do not seem to reflect the latest changes. Can you step through the startup code and observe the variable in SRAM after a functional reset? This should clearly show where the variable gets overwritten. To attach the debugger after the functional reset, you can add a simple loop at the beginning of the startup code, for example: Loop: mov r0, #1 cmp r0, 0 /* Change r0 to 0 in register view */ bne Loop /* Capture after power-on reset */ Regards, Daniel Any support, information, and technology (“Materials”) provided by NXP are provided AS IS, without any warranty express or implied, and NXP disclaims all direct and indirect liability and damages in connection with the Material to the maximum extent permitted by the applicable law. NXP accepts no liability for any assistance with applications or product design. Materials may only be used in connection with NXP products. Any feedback provided to NXP regarding the Materials may be used by NXP without restriction. Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek I have simplified the setup to isolate the RAM retention behavior. I placed the variable in a dedicated SRAM section and used a minimal main function with LED indication and watchdog-triggered reset. The idea is: Green LED → value retained after reset Red LED → value lost Below is the test code being used: C __attribute__((section(".int_sram_results"), used)) volatile uint32_t retain_var; int main(void) { Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); DIO_Init(); WDT_Init(); if (retain_var == 0xAABBCCDD) { Siul2_Dio_Ip_SetPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); Siul2_Dio_Ip_ClearPins(LED_RED_PORT, (1UL << LED_RED_PIN)); } else { Siul2_Dio_Ip_SetPins(LED_RED_PORT, (1UL << LED_RED_PIN)); Siul2_Dio_Ip_ClearPins(LED_GREEN_PORT, (1UL << LED_GREEN_PIN)); } retain_var = 0xAABBCCDD; while (1) { /* watchdog reset */ } } Show less Observation: When running with debugger, the behavior is as expected. However, after power-on reset, there is no LED indication, which suggests the code may not be executing as expected. I have attached the latest linker and startup files for reference. Please let me know if you see anything missing on the startup or reset handling side. S32DS-ARM S32K31XEVB-Q100  Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek I replaced the startup instructions below with the changes you shared, but it did not work. For your reference, I have uploaded the relevant files. The .s and .ld files were uploaded with a .c extension. Please review them and let me know if you need any additional information. RamInit: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __RAM_INIT is not set */ beq SRAM_LOOP_END ldr r0, =MCRGM_DES ldr r1, [r0] ldr r2, =MCRGM_DES_F_POR and r1, r1, r2 cmp r1, 0 beq NO_INIT_STANDBY_REGION ldr r2, =__INT_SRAM_START ldr r3, =__INT_SRAM_END b ZERO_64B_RAM The above instructions updated with  RamInit: /* Check MC_RGM DES register, if it's non-zero, jump to RAMInit_Start. (RAM init is needed if Destructive reset occurred) */ /* To make it work, customer should clear the MC_RGM DES register in application code. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] cmp r4, #0x0 bne RamInit_Start /* Check MC_RGM FES register, if the F_EXR bit or ST_DONE bit is set, jump to RAMInit_Start. */ /* RAM init is needed if external reset occurred, or BIST Done functional reset occurred. */ /* To make it work, customer should clear the MC_RGM FES F_EXR register bit in application code. */ ldr r4, =MC_RGM_BASE_ADDR ldr r4, [r4, #0x8] ldr r5, =MC_RGM_FES_MASK_RAM_INIT and r4, r4, r5 cmp r4, #0x0 bne RamInit_Start b SRAM_LOOP_END RamInit_Start: /* Initialize SRAM ECC */ ldr r0, =__RAM_INIT cmp r0, 0 /* Skip if __SRAM_INIT is not set */ beq SRAM_LOOP_END ldr r1, =__INT_SRAM_START ldr r2, =__INT_SRAM_END Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) Can you share the whole test project so that I can easily test it on my side? Thank you, Daniel Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek Below are the observations from our testing:  Debug mode behaviour: Power-on reset (RED LED): retain_var = 0x5AA55AA5 @ 0x20407B00 After watchdog reset (GREEN LED): retain_var = 0xAABBCCDD @ 0x20407B00 This confirms that RAM retention across functional reset is working when running under debugger. However, when running standalone (without debugger): After power-on reset, there is no LED indication. It appears that the program is not executing or not reaching the application code. Could you please help identify what might be causing this behaviour? Also, we are planning to use the complete .int_sram_results section to retain multiple parameters across functional reset. Please suggest if any additional changes are required for reliable retention. Additionally, could you please suggest if there is any API or recommended method to trigger a functional reset (alternative to watchdog)? For reference, I have included the changes made in the startup and linker files, and the same can be verified in the shared project. startup file (old code) RamInit:     /* Initialize SRAM ECC */     ldr  r0, =__RAM_INIT     cmp  r0, 0     /* Skip if __RAM_INIT is not set */     beq SRAM_LOOP_END     ldr r0, =MCRGM_DES     ldr r1, [r0]     ldr r2, =MCRGM_DES_F_POR     and r1, r1, r2     cmp r1, 0     beq NO_INIT_STANDBY_REGION     ldr r2, =__INT_SRAM_START     ldr r3, =__INT_SRAM_END     b   ZERO_64B_RAM startup file (new code) .equ MC_RGM_BASE_ADDR, 0x4028C000 .equ MC_RGM_FES_MASK_RAM_INIT, 0xFFFFFFFF RamInit:                /* Check MC_RGM DES register, if it's non-zero, jump to RAMInit_Start. (RAM init is needed if Destructive reset occurred) */                /* To make it work, customer should clear the MC_RGM DES register in application code. */                ldr r4, =MC_RGM_BASE_ADDR   /* 0x4028C000 */                ldr r4, [r4, #0x0]                cmp r4, #0x0                bne RamInit_Start                /* Check MC_RGM FES register, if the F_EXR bit or ST_DONE bit is set, jump to RAMInit_Start. */                /* RAM init is needed if external reset occurred, or BIST Done functional reset occurred. */                /* To make it work, customer should clear the MC_RGM FES F_EXR register bit in application code. */                ldr r4, =MC_RGM_BASE_ADDR                ldr r4, [r4, #0x8]                ldr r5, =MC_RGM_FES_MASK_RAM_INIT                and r4, r4, r5                cmp r4, #0x0                bne RamInit_Start                b SRAM_LOOP_END                RamInit_Start:                /* Initialize SRAM ECC */                ldr r0, =__RAM_INIT                cmp r0, 0                /* Skip if __SRAM_INIT is not set */                beq SRAM_LOOP_END                ldr r1, =__INT_SRAM_START                ldr r2, =__INT_SRAM_END     b   ZERO_64B_RAM linker file changes old code:     .int_results (NOLOAD):     {         . = ALIGN(4);         KEEP(*(.int_results))         . += 0x100;     } > int_sram_results new code:                    .int_results (NOLOAD):     {         . = ALIGN(4);         KEEP(*(.int_results))     } > int_sram_results    S32K31XEVB-Q100  Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, I have debugged it found that the code below was incorrect. It used R1 and R2 instead of R2 and R3: We need R2 and R3 because of this: Where did you get this startup code? With the debugger connected, the debugger initializes the SRAM ECC. Without the debugger, there was a Hardfault at 0x20400090. Regards, Daniel Re: RAM retention not working across functional reset (S32K3xx) Hi @danielmartynek  After fixing to use R2/R3, the application is running. However, RED LED always blinks and GREEN never turns ON, indicating the value is not retained after reset. I’ve applied the startup changes from your shared link, but retention is still not working as expected. S32K3 S32DS-ARM  https://community.nxp.com/t5/S32K/SRAM-ECC-Initialization-for-S32K344/m-p/1764143 Thanks, Yusup Re: RAM retention not working across functional reset (S32K3xx) @danielmartynek  Any update on this? S32DS-ARM S32K31XEVB-Q100  Thanks, Yusup. Re: RAM retention not working across functional reset (S32K3xx) Hi @yusupkhan241, Sorry for the delay; I wasn't able to get to the testing until now. I have now tested it and used the simple code below to skip the SRAM initialization when only a Functional Event Status (FES) reset occurred and no Destructive Event Status (DES) reset was detected. /* * Initialize SRAM ECC only after a Destructive Reset. * * Functional reset shall preserve SRAM content, so MC_RGM_FES is not used * here to trigger SRAM initialization. * * Note: * To make this check work correctly, the application should clear MC_RGM_DES * after processing the destructive reset reason. */ /* Check MC_RGM DES register. * If DES is non-zero, a destructive reset occurred and SRAM init is needed. */ ldr r4, =MC_RGM_BASE_ADDR /* 0x4028C000 */ ldr r4, [r4, #0x0] /* MC_RGM_DES */ cmp r4, #0x0 bne RamInit_Start /* No destructive reset detected. * Skip SRAM ECC initialization to preserve SRAM content across Functional Reset. */ b SRAM_LOOP_END In main(), clear the DES register: IP_MC_RGM->DES = 0xFFFFFFFF; BR, Daniel
記事全体を表示