Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
CircO2 Nitric Oxide Tablets Review: A Complete Buyer's Guide CircO2 is a nitric oxide support supplement made by Advanced Bionutritionals. Unlike a lot of pills you swallow with water, CircO2 comes in a quick-dissolving tablet (sometimes called a lozenge) that melts in your mouth. This is one of the things that makes it stand out from other CircO2 Tablets on the market. The main idea behind CircO2 Oxygen Booster and Circulation Support is simple: help your body make more nitric oxide, so your blood vessels can relax and widen. When that happens, blood (and the oxygen it carries) can move more freely through your body. That can mean more energy, warmer hands and feet, and better stamina during the day.   Re: CircO2 Nitric Oxide Tablets Review: A Complete Buyer's Guide CircO2 is a nitric oxide support supplement in USA, Canada, UK, Australia and New Zealand from Advanced Bionutritionals designed to promote healthy circulation. Unlike traditional supplements that you swallow with water, ORIGINAL CircO2 comes as a fast-dissolving tablet, or lozenge, that melts in your mouth. This convenient format helps set it apart from many other circulation-support tablets. The goal of CircO2 Oxygen Booster and Circulation Support is to support the body’s natural production of nitric oxide. Nitric oxide helps blood vessels relax and expand, which may allow blood and oxygen to circulate more efficiently throughout the body. By supporting healthy blood flow, CircO2 may help promote everyday energy, stamina, and circulation, including helping hands and feet feel warmer.
記事全体を表示
S32k344 MBIST LBIST 我正在 Green Hills 的一个项目中实施 S32k344 BIST。由于我不使用 Tresos 或 NXP DS,所以我使用的是源代码形式的 SW32K3_SPD_1.0.6_D2512。我能够导入大部分 bist 函数,但有一些我不确定的定义(到处都找不到它们)。请问有人能回答以下问题吗? 1. 当 S32k344 处于锁定步进模式时,我可以运行 LBIST MBIST 吗? 2. 我通过检查代码猜测以下定义是否正确? #define BIST_MBIST_0 1U #define BIST_MBIST_1 2U #define BIST_MBIST_2 3U #define BIST_MBIST_3 4U #define BIST_MBIST_4 5U #define BIST_MBIST_5 6U #define BIST_MBIST_6 7U #define BIST_MBIST_7 8U #define BIST_MBIST_8 9U #define BIST_MBIST_9 10U #define BIST_MBIST_10 11U #define BIST_LBIST_0 0U 我使用的配置数据如下: static const BIST_CHANNEL_CONFIG_TYPE BistConfig[BIST_SAFETYBOOTCFG_NB] = { { (BIST_CHANNEL_TYPE)BIST_MBIST_0, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_1)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_1, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_2)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_2, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_3)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_3, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_4)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_4, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_5)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_5, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_6)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_6, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_7)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_7, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_8)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_8, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_9)) }, //#endif { (BIST_CHANNEL_TYPE)BIST_MBIST_9, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_10)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_10, (BIST_CONTROL_TYPE)(0x00100000U) }, { (BIST_CHANNEL_TYPE)BIST_LBIST_0, (BIST_CONTROL_TYPE)((0x00001108U) | BIST_LBIST_PTR_VAL(BIST_NIL)) } }; Re: S32k344 MBIST LBIST 你好, 1. 当 S32k344 处于锁定步进模式时,我可以运行 LBIST MBIST 吗? 是的。S32K344 锁步架构不会阻止 STCU2 LBIST/MBIST 的执行。BIST 机制是设备功能安全基础设施的一部分,旨在测试由 STCU2 管理的逻辑和存储器。The S32K3 功能安全 Manual explicitly lists both lockstep and STCU2 LBIST/MBIST as safety mechanisms of the 设备. 2. 我通过检查代码猜测以下定义是否正确? 对于 S32K344 来说,这些数值基本正确,但从功能安全角度来看,在功能安全启动配置中包含 MBIST_10 (HSE_ROM) 并非必需,建议直接使用经过验证的 SPD 配置。 顺祝商祺! Peter Re: S32k344 MBIST LBIST 彼得 非常感谢您的回复。我这几天一直被BIST测试问题困扰着。我正在使用 S32k344 白板进行测试,代码是用 Green Hills Multi IDE rev 8.1 版本 的。安全靴自检未通过。我确信核心和外设都满足最大时钟频率要求。我的核心时钟频率为 160MHz,来自外部晶振 16MHz 和 PLL,AIPS_PLAT_CLK 为 80MHz,AIPS_SLOW_CLK 为 40MHz,DCM_CLK 为 40MHz,LBIST_CLK 为 40MHz,QSPI_MEM_CLK 为 160MHz。当设备从 BIST 运行复位时,出现以下错误:DES 寄存器为 0x00408175,一些保留位被设置,FES 寄存器为 0x2000(这没有意义)。请问您能否回答以下问题? 1. 对于上面提到的所有时钟信号,是否应该通过 MC_CGM->MUX_0_DC_x 寄存器启用它们?我正在获得 信息相互矛盾,目前这些功能已启用。 2. 在参考手册的 STCU2 章节中,有这样一段话:“在 EMAC 时间戳存储器上运行 MBIST 时,应适当配置 MC_CGM.MUX_9_DC_0[DIV],以确保 EMAC_CLK_TS 至少是 AIPS_SLOW_CLK 频率的 1.5 倍。”那是不是意味着我必须配置时钟并在 MC_CGM->MUX_9_DC_0 寄存器中启用它? 3. 如果我想查看 SW32K3_SPD_1.0.6_D2512 软件包中的示例代码 S32_SPD_Demo,我猜我需要安装最新的 NXP Design Studio,将 spd zip 文件作为更新站点导入,还需要 RTD 软件包,是这样吗? 4. 我认为 MBIST 10 是 HSE_RAMS,MBIST 11 是 HSE_ROMS,请参阅 SPD 文档文件夹中的下表。 MBIST BIST ID BIST实例名称 RESET 功能域 安全靴 功能安全诊断 0 SYS0_RAMS 主要 ü ü 1 SYS1_RAMS 主要 ü ü 2 DMA_TCD_RAM 主要 ü ü 3 CM7_0_TOP 主要 ü ü 4 CM7_1_TOP 主要 ü ü 5 FLEX_CAN_RAMS 主要 ü ü 6 QSPI_PERI_RAMS 主要 ü ü 7 EMAC_TSN_RAM 主要 ü ü 8 EMAC_RAMS 主要 ü ü 9 b03_ETF_RAMS 主要 ü ü 10 HSE_RAMS 主要 ü ü 11 HSE_ROMS 主要   ü Re: S32k344 MBIST LBIST 我的问题有了新的进展,在我启用 STCU_RUNSW_REG 中的第 8 位和第 9 位以使用 PLL 之后,我一直看到 DES 寄存器为 0x11,FES 寄存器为 0x10。bist_get_exec_status(BIST_SAFETYBOOT_CFG) 返回值为 NOT RUN (0x03)。BIST ERR_STAT 寄存器中没有任何内容,END 标志也没有设置。FCCU NCF_S0 寄存器中的第 2 位已设置。BIST 似乎没有启动,但我确实看到了 RESET。我通过写入另一侧银行的闪存来捕获寄存器设置。 Re: S32k344 MBIST LBIST 我检查了所有可能的时钟,我相信它们是正确的。我还将寄存器中的配置数据与 NXP studio spd 示例项目中的值进行了比较,它们也是正确的。一条新信息。系统从 BIST RESET 后,我在 DCMROD3 寄存器中看到值 0x18。我该如何解决这个错误?谢谢。 XRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.png Re: S32k344 MBIST LBIST 你好, STCU 自检序列正在进入并到达 ST_DONE RESET 阶段。但是,STCU 还报告了一个不可恢复的故障 (STCU_URF),这就解释了为什么 SAF BIST 驱动程序随后报告 BIST_NORUN。因此,问题似乎是 STCU 执行/配置失败,而不是 BIST 从未触发信号的情况。 在 S32K3 上,同时看到破坏性复位和功能性复位指示通常表明您正在查看复位历史记录,而不是当前的复位源。 既然你在移植软件,我建议先从仅进行 MBIST 测试开始,看看它是否能从 PLL 源通过。 另外,我建议你再检查一下测试的时钟设置。 顺祝商祺! Peter Re: S32k344 MBIST LBIST 你好, 在 S32K344 上,RCCU 报告锁步不匹配,并且当连接到调试器时,经常会出现与 RCCU 相关的故障,而这些故障在独立执行中永远不会发生。 如果您按照示例中的设置进行操作,您将看到完整的 BIST(内置自测试)。 示例已测试,默认情况下完全可用。 但是您的端口报告 URF 故障,这说明并非所有部件都相同。 查阅STCU文档,用户可以设置指向测试的指针。 54.9.4 STCU2 配置 (CFG) petervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.png 您可以先尝试减少测试用例,然后慢慢添加更多测试用例。 在 MBIST 和 LBIST 控制寄存器中,您可以设置哪个测试将是最后一个: petervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.png 例如,通过指向 CFG 寄存器中的某个位置,您可以执行单个 MBIST 分区: petervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.png petervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.png 顺祝商祺! Peter Re: S32k344 MBIST LBIST 我尝试按顺序运行 mbist,也尝试过单独运行 mbist 测试 ID。结果相同,未观察到新的状态。能否在触发之前确认以下用于安全启动的 SCU2 寄存器设置?谢谢。 XRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.png Re: S32k344 MBIST LBIST 这是为社区中在 S32k344 微控制器中实现 LBIST/MBIST 时遇到困难的人们准备的。经过数日毫无进展后,我终于看到测试通过了。我通过对 SPD 驱动程序 1.06 进行自定义移植实现了这一点。驱动程序代码运行正常,只是需要将故障配置为不可恢复故障。以下是需要配置的时钟,如果其中任何一个没有正确设置,测试将失败,状态为 BIST_NORUN(0x03),因为测试序列是并发运行的,看不到其他状态,也没有设置完成位。 1. 配置 FXOSC 模块 CTRL 寄存器以使用外部振荡器或晶体,这是获得 160MHz(S32k344 的最大频率)的唯一方法。 2. 配置 PLL 电路的 PLLDIG 模块,通过配置 PLLDV 寄存器中的 rdiv、mfi 和 odiv2 位,确保输出最大频率。 3. 按照参考手册中的步骤,设置 MC_CGM_MUX_x 寄存器,为 core_clk 和 emac_clk 切换 PLL 时钟。 4. 配置 MC_CGM-MUX_0 和 MC_CGM-MUX_9 寄存器以获取以下时钟信号。 AIPS_PLAT_CLK 设置为 80 MHz AIPS_SLOW_CLK 设置为 40 MHz HSE_CLK 设置为 80 MHz DCM_CLK 设置为 40 MHz LBIST_CLK 设置为 40MHz QSPI_MEM_CLK 设置为 160MHz EMAC_CLK 设置为 80MHz 注意:不要设置 RUNSW 寄存器中的第 8 位和第 9 位,如果设置了它们,测试将失败。SPD驱动程序代码中没有实现这一点。我之所以提到这一点,是因为参考手册中存在相互矛盾的信息。
記事全体を表示
PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value As part of the code migration task, we are facing an issue where the BSF flag is being set. Due to the BSF flag being set, the EMON bit in the Minutes register is also getting set. As a result, the Minutes value displayed on the screen is showing an arbitrary value. Additionally, the Year value is not being saved correctly and continuously shows 2000 even after setting the RTC date and time. I tried to test the condition mentioned below, but the problem still persists.  I set the flag register (0x43) to 0x00 and read it immediately; it showed 0x00. However, when I read the register again after 3 seconds, the value was set again to 0x08 (or 0x00).   Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value Hello Ris_eek Good day! The BSF flag is not simply failing to clear. Instead, the RTC is detecting a new battery switch-over event and setting BSF again. According to the datasheet, BSF is set whenever the battery switch-over logic detects a power transition event The fact that it re-asserts after ~3 seconds means the VDD supply is repeatedly dropping below the battery switch-over threshold causing repeated VDD>VBAT>VDD transitions. Each transition re-sets the BSF. RafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.png This constant voltage fluctuation causes the RTC to constantly reset, which is why it only shows the year 2000. I recommend checking if there's a problem with the power supply signal. I hope this information has helped you, please let me know if you need help with anything else. Have a great day and best of luck. Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value Dear Rafar; Thanks for your mail.    In the hardware, the VDD (4.93 VDC) and VBAT (3.02 VDC) voltages are constant. As a precaution against voltage fluctuations, a 100 nF capacitor is connected across the battery supply. The Battery Switch Register (26h) is set to 0x00. Therefore, the BSM (Battery Switch Mode) is configured to switch at the Vth level. The Vth level is 1.5 V because the BSTH (Battery Switch Threshold Voltage) bit is set to 0. As per Figure 25, referenced in previous email: When VDD < Vth, the BSF is set to 1. When VDD > VBAT, the BSF should be cleared. However, under the power-ON condition, the measured voltage is VDD = 4.93 VDC, which is greater than VBAT = 3.02 V. Even then, the BSF is not cleared. Could you please clarify why the BSF remains set even though VDD is greater than VBAT? Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value Hello Ris_eek Good day! The datasheet says the following: The assertion of the flag BSF (register Flags, address 2Bh) can be used to generate an interrupt at pins INTA and INTB. The interrupt can be generated as a pulsed signal or alternatively as a permanently active signal, which follows the condition of bit BSF. BSF remains set until cleared by command. The reference image I sent also indicates the following: "cleared via interface." It’s not automatically, you have to cleared I hope this information has helped you, please let me know if you need help with anything else. Have a great day and best of luck. Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value Okay RafaR Thank you for this. But the BSF flag is cleared in software, but after some time, it is set again, as described in my previous post.
記事全体を表示
i.MX8M Plus 上的 U-Boot 进行 SWUpdate A/B OTA 更新 您好,NXP团队: 我正在使用以下方法在i.MX8M Plus LPDDR4 EVK上实现 OTA: 约克托·沃诺斯 Linux 6.18.20 U-Boot 2026.04 SWUpdate 2026.05.1 当前进展 SWUpdate 已成功集成到 Yocto 中。 已成功生成 .swu 文件代码包,软件包. SWUpdate软件包安装正常。 硬件兼容性检查正在进行中。 使用 SWUpdate 成功更新了 /etc/ota-version。 原始文件处理程序正在运行。 现在我想实现生产级别的 A/B OTA,具备自动回滚和签名更新功能。 问题 请问NXP推荐的以下解决方案是什么? A/B 根文件系统分区布局。 基于 U-Boot 启动计数/启动限制的回滚。 SWUpdate 与 U-Boot 环境集成。 更正 fw_env.config / libubootenv 配置。 签名 .swu包裹核实。 防回滚/版本保护。 安全启动 + 软件更新集成。 目前,OTA 更新已完成,但 SWUpdate 报告: Cannot initialize environment from /etc/fw_env.config Cannot persistently store update state NXP是否有关于i.MX8M Plus上SWUpdate + A/B + U-Boot回滚 + 签名OTA的参考设计、应用笔记或示例? 谢谢。 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Yocto Project Re: SWUpdate A/B OTA with U-Boot on i.MX8M Plus 你好, 我们不提供开箱即用的标准 EVK A/B 更新框架。A/B 更新、回滚策略和断电故障保护启动选择是系统级功能,您必须使用 U-Boot + SWUpdate 来实现。最接近的参考文献有: AN12900 - 使用 CAAM 和 Mender 或 SWUpdate 的 Linux 安全 OTA 原型。 AN13872 - 启用 SWUpdate。 meta-swupdate-imx - 带有 SWUpdate 的 NXP Yocto 层。 顺祝商祺! Re: SWUpdate A/B OTA with U-Boot on i.MX8M Plus 嘿vp1 , 虽然我没有确切的答案,但我希望您知道 Torizon 现在支持任何 i。MX SoC。它已在全球许多关键的 i.MX8MPlus 产品中部署(主要在 Toradex 系统模块上)。它确实具有高度可靠的OTA升级功能(默认是OSTree,但可以更改)。 它包含开箱即用的安全启动、防回滚、漏洞管理(符合欧盟 CRA 标准)等功能。 该操作系统是免费开源的;如果您需要帮助,我们很乐意提供帮助。如果您想在 i.MX8M Plus LPDDR4 EVK 或您自己的硬件上进行尝试,请联系我们。 www.torizon.io 不好意思打个广告,我在Torizon工作,觉得这个话题可能跟我相关。
記事全体を表示
Audifort评测:它真的能一夜之间消除耳鸣吗? Audifort评测:它真的能一夜之间消除耳鸣吗? 如果你每天都要忍受耳朵里持续不断的铃声、嗡嗡声或咔哒声,你就知道寻求缓解这种痛苦有多么令人绝望。在网上寻找解决方案时,您可能会遇到诸如液体营养滴剂之类的铺天盖地的广告。 奥迪福特 这暗示着可以立即见效或一夜之间缓解耳鸣。 简而言之,答案是否定的:Audifort 并不能在一夜之间消除耳鸣。 没有任何口服补品或天然滴剂能在 24 小时内立即治愈慢性耳鸣或重建受损的听觉神经。 但这并不意味着该公式毫无用处。如果将 Audifort 视为一种天然膳食补充剂而不是灵丹妙药,那么它提供的营养成分可以滋养内耳血管,并随着时间的推移镇静过度活跃的神经信号。 在此 Audifort 评测,我们超越销售营销,分析滴剂的实际作用原理、核心成分、合理的预期时间、潜在的副作用,以及如何避免虚假的在线信息。
記事全体を表示
CircO2 一氧化氮片剂评测:完整购买指南 CircO2 是由 Advanced Bionutritionals 公司生产的一氧化氮支持补充剂。与许多需要用水吞服的药片不同,CircO2 采用速溶片(有时称为锭剂)的形式,可在口中融化。这是它与其他市面上的 CircO2 片剂相比脱颖而出的原因之一。 CircO2 氧气增强剂和循环支持剂背后的主要理念很简单:帮助你的身体产生更多的一氧化氮,从而使你的血管放松和扩张。这时,血液(以及血液携带的氧气)就能更自由地在体内流动。这意味着白天精力更充沛、手脚更温暖、耐力更好。   Re: CircO2 Nitric Oxide Tablets Review: A Complete Buyer's Guide CircO2 是 Advanced Bionutritionals 公司在美国、加拿大、英国、澳大利亚和新西兰销售的一种一氧化氮支持补充剂,旨在促进健康的血液循环。与需要用水吞服的传统补充剂不同, ORIGINAL CircO2是一种速溶片剂或锭剂,可在口中融化。这种便捷的形式使其有别于许多其他促进血液循环的片剂。 CircO2 氧气增强剂和循环支持剂的目标是支持人体自然产生一氧化氮。一氧化氮有助于血管放松和扩张,从而使血液和氧气更有效地在体内循环。CircO2 通过促进健康的血液流动,有助于提升日常精力、耐力和血液循环,包括帮助手脚感觉更温暖。
記事全体を表示
PCF85263AT/AJ -- 画面に表示される分数が任意の値を示しています コード移行作業の一環として、BSFフラグが設定されてしまうという問題に直面しています。BSFフラグが設定されていることにより、分レジスタのEMONビットも設定されます。 その結果、画面に表示される「分」の値は任意の値を示しています。さらに、年の値が正しく保存されず、RTCの日付と時刻を設定した後でも、2000年と表示され続けます。 下記の条件でテストを試みましたが、問題は依然として解決していません。 フラグレジスタ(0x43)を0x00に設定し、すぐに読み取ったところ、0x00が表示されました。しかし、3秒後にレジスタを再度読み取ったところ、値は再び0x08(または0x00)に設定されていた。 Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value こんにちは、Ris_eekさん 良い一日! BSFフラグが単にクリアできないというだけではない。代わりにRTCは新しいバッテリー切り替えイベントを検出し、再びBSFを設定しています。データシートによると、バッテリー切り替えロジックが電源遷移イベントを検出したときにBSFが設定されます 約3秒後に再アサートされるという事実は、VDDの電源が繰り返しバッテリー切り替え閾値を下回り、繰り返しVDD>VBAT>VDDの切り替えを引き起こしていることを意味します。各遷移はBSFをリセットします。 RafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.png この絶え間ない電圧変動により、RTC(リアルタイムクロック)が常にリセットされるため、常に2000年と表示されるのです。電源信号に問題がないか確認することをお勧めします。 この情報がお役に立てば幸いです。他に何かご不明な点がありましたら、お気軽にお問い合わせください。 良い一日をお過ごしください。幸運を祈ります。 Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value こんにちは、Ris_eekさん 良い一日! データシートには次のように記載されています。 フラグBSF(レジスタフラグ、アドレス2Bh)の主張は、ピンINTAおよびINTBで割り込みを生成するために使用できます。割り込みはパルス信号として生成されるか、あるいはビットBSF条件に従う恒常アクティブ信号として生成されることがあります。BSFはコマンドによって解除されるまで設定されたままになります。 私が送った参照画像には「インターフェース経由でクリア済み」と記載されています。 自動的にクリアされるわけではなく、クリアする必要があります。 この情報がお役に立てば幸いです。他に何かご不明な点がありましたら、お気軽にお問い合わせください。 良い一日をお過ごしください。幸運を祈ります。 Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value 親愛なるラファールへ メールありがとうございます。   ハードウェアにおいては、VDD(4.93VDC)とVBAT(3.02VDC)の電圧は一定である。電圧変動を防ぐため、バッテリー供給には100 nFのコンデンサが接続されています。 バッテリースイッチレジスタ(26h)は0x00に設定されています。したがって、BSM(バッテリースイッチモード)はVレベルでスイッチングするように設定されています。Vレベルが1.5Vなのは、BSTH(バッテリースイッチ閾値電圧)ビットが0に設定されているためです。 前回のメールで参照した図25に示すように: VDD < Vth の場合、BSF は 1 に設定されます。 VDD > VBAT の場合、BSF をクリアする必要があります。 しかし、電源投入状態では、測定された電圧はVDD = 4.93 VDCであり、これはVBAT = 3.02 Vよりも大きい。それでも、BSFは許可されない。 なぜBDDがVBATより大きいのにBSFが固定されているのか、説明していただけますか? Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value 了解、ラファール ありがとうございます。 しかし、BSFフラグはソフトウェア上でクリアされますが、しばらくするとまた設定されます。これは私の前回の投稿で説明した通りです。
記事全体を表示
S32K312:SWT0 功能 RESET 升级、破坏性 RESET 状态和 SRAM 保持 您好,NXP团队, 我正在使用 S32 Design Studio 和 AUTOSAR RTD 7.0.1 / AUTOSAR 4.9 开发 S32K312 Cortex-M7。 我目前正在测试 MC_RGM 复位行为,特别是 SWT0 功能复位、功能复位升级、破坏性复位、SRAM 保持、SBAF/恢复行为以及电源 IP 复位 API。 1. SWT0 功能重置升级 我使用 SWT0 超时来生成功能性重置。 我的 MC_RGM 配置如下: MC_RGM_FRET_FRET((uint32)15U), MC_RGM_DRET_DRET((uint32)0U) 我观察到功能 RESET 计数器不断增加: SWT0 功能复位 #1 -> FREC = 1 SWT0 功能复位 #2 -> FREC = 2 ... SWT0 功能复位 #14 -> FREC = 14 下一次 SWT0 重置后,FREC 被清除/重置,但我没有观察到预期的结果: DES[MC_RGM_FRE] = 1 我的问题是: SWT0_RST 是否参与 S32K312 上的 MC_RGM 功能复位升级计数器 (FREC)? 当 FREC 达到 FRET = 15 时,是否应该生成 MC_RGM_FRE 并设置 DES[MC_RGM_FRE]? 升级后,FES、DES、FREC、FRET、Power_Ip_GetResetReason() 的确切值应该是什么? SWT0参与FRET升级是否需要任何额外的配置? SBAF/恢复处理是否会干扰FRET增强? 是否存在与 SWT0/FRET 升级相关的已知勘误或已知的 S32K312 行为? 当我连续运行该应用程序时,在第 15 次功能性 RESET 后,应用程序/调试器停止运行,而不是让我观察到预期的破坏性 RESET。我想知道这是否与复位序列、SBAF 恢复或调试器有关。 2.我希望每次 SWT0 功能重置都具有破坏性。 为了测试目的,我还想实现以下目标: SWT0 超时 ↓ 功能复位 ↓ 立即进行破坏性重置 而不是等待 15 次功能性 RESET。 能否通过配置来实现: 共振频率 = 1U; 具体来说: FRET = 1 是否会导致第一次符合条件的 SWT0 功能 RESET 升级为破坏性 RESET? 是否需要进行任何额外的 MC_RGM 配置? SWT0 是否一定符合此次升级的资格要求? SBAF/恢复行为会影响这一点吗? RTD 7.0.1 配置是否直接支持此功能? 3.每次功能 RESET 后,SRAM 数据都会被清除。 根据我对 S32K3xx 参考手册的理解,SRAM/系统存储器在功能复位后应该能够保留。 我创建了一个SRAM测试变量: #define SRAM_TEST_ADDR ((volatile uint32_t *)0x204007d4U) 并用它来验证功能 RESET 后的数据保留情况。 但是,我观察到在功能复位后,SRAM 数据被清除/重写为零。 我的问题是: SRAM 在功能复位期间是否由硬件保留,但之后被软件覆盖? S32K312 中哪些 SRAM 区域能够保证在功能 RESET 后保留其内容? 将变量放入 SRAM 中,使其内容在功能 RESET 后得以保留的推荐方法是什么? 我应该使用专用的 .noinit 吗?或者保留SRAM部分? 保持数据是否需要特定的 MC_RGM/SRAM 配置? 对于 RTD 7.0.1 版本,在功能 RESET 后保留应用程序数据的推荐方法是什么? 4. 直接软件破坏性 RESET 我还在测试使用 Power IP 进行直接软件破坏性重置: Power_Ip_Init(&Power_Ip_HwIPsConfigPB); gVar= Power_Ip_GetResetReason(); for (count = 0; count < 10125000; count++); Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB); 我当前的 MC_RGM 配置包含: static const Power_Ip_MC_RGM_ConfigType Power_Ip_MC_RGM_ConfigPB = { (MCU_DEST_RESET), ... MC_RGM_FRET_FRET((uint32)15U), MC_RGM_DRET_DRET((uint32)0U) }; 破坏性重置发生,但调试器反复失去通信并重新建立通信。 我看到类似这样的信息: 信息:DAP IDCODE = 0x6BA02477 信息:DAP 已成功启动。DP CTRL/STAT = 0xF0000000 重复多次,随后是: 已收到中断命令。停止执行。 我想了解: 在破坏性 RESET 过程中,DAP 是否会反复重新连接? 在破坏性重置序列中,Cortex-M7 究竟发生了什么? 破坏性 RESET 后,CPU 何时才能再次可用? 调试单个软件破坏性重置的推荐方法是什么? 5. Power_Ip_PerformReset() 之前的断点行为 我无法可靠地在以下位置立即触发断点: Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB); 我在 API 调用前添加了一个延迟,希望调试器有足够的时间获取访问权限。 有时只有在我手动暂停目标程序并恢复执行后,才能到达断点。 我想了解: 为什么即使 RESET API 之前有延迟,调试器仍然会错过断点? 这是否与目标设备反复重置以及调试器通过 DAP 重新连接有关? 是否有推荐的方法可以在破坏性 RESET 之前或之后立即捕获 CPU 状态? RTD DISABLE_DEBUGGER_TRAP 选项与此行为有关吗? 6.电源 IP 初始化和 Power_Ip_SetMode() 我的RTD产品提供: void Power_Ip_Init( const Power_Ip_HwIPsConfigType *HwIPsConfigPtr); void Power_Ip_SetMode(const Power_Ip_ModeConfigType *ModeConfigPtr); void Power_Ip_PerformReset( const Power_Ip_HwIPsConfigType *HwIPsConfigPtr ); Power_Ip_ResetType Power_Ip_GetResetReason(void); Power_Ip_RawResetType Power_Ip_GetResetRawValue(void); 我目前使用: Power_Ip_Init(&Power_Ip_HwIPsConfigPB); 和: gVar = Power_Ip_GetResetReason(); 我的模式配置为 POWER_IP_RUN_MODE。 我想澄清以下问题: 在使用 Power IP 重置 API 之前,Power_Ip_Init(&Power_Ip_HwIPsConfigPB) 是否是正确的初始化方法? 软件功能/破坏性RESET测试是否需要 Power_Ip_SetMode() 函数? 由于我选择的模式是 POWER_IP_RUN_MODE,那么对于此 RESET 测试,是否可以省略 Power_Ip_SetMode()? 如何使用 RTD 7.0.1 配置单独的软件功能RESET和软件破坏性RESET配置? 环境 MCU:S32K312 核心:Cortex-M7 S32DS:S32 设计工作室 AUTOSAR:4.9 RTD:7.0.1 RESET 源:SWT0 格子:15 DRET:0 我可以提供完整的测试应用程序 Power_Ip_PBcfg.c,链接器配置、MC_RGM 寄存器捕获和调试器日志(如有需要)。 谢谢! Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好@Sharif417 , 1. SWT0 功能 RESET 升级 SWT0_RST 参与 S32K312 的 FREC,当 FREC 达到 15 时,DES[MC_RGM_FRE] 将被设置,您可以通过调用 Power_Ip_GetResetReason() 并返回“MCU_MC_RGM_FRE_RESET”来读取该值。 所有未被降级(通过 MCRGM.FERD)的功能复位源均符合递增 FREC 的条件。 请注意,Power_Ip_Init() 会清除 MC_RGM.DES(在保存其值之后),因此请尝试在初始化电源模块之前获取寄存器值,或者直接读取复位原因。 如果阈值大于 8,则恢复模式可能会对此产生影响,因为恢复模式默认设置为“8”。sBAF 也可能干扰DRET,而不是 FRET 。您可以看到,如果阈值为“0”,则会变为 0xF: Julin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.png 当我连续运行应用程序时,在第 15 次功能性 RESET 后,应用程序/调试器会停止运行,而不是让我观察到预期的破坏性 RESET。我想知道这是否与 RESET 顺序、SBAF 恢复或调试器有关。 与其尝试保持调试器连接,不如尝试在第 15 次功能 RESET 后再连接,或者尝试通过 UART 或类似方式打印 RESET 原因? 2. 我希望每次 SWT0 功能重置都具有破坏性。 是的,FRET=1 足以使每次功能性 RESET都发出破坏性 RESET。 无需额外添加 MC_RGM。 sBAF/恢复模式不应对此产生影响。 是的,您可以直接在 POWER 模块-> “模块配置” -> “MCU 复位配置” -> “功能复位升级阈值”中进行配置。 3. 每次功能RESET后,SRAM 数据都会被清除。 正确,功能复位后 SRAM 数据会被保留。 根据衍生型号的不同,S32K3 可提供 16KB、32KB 或高达 64KB 的待机 RAM。 您可以找到一些关于如何通过待机 RAM 放置和使用变量的示例: [RTD600 MCAL & IP] S32K3 低功耗管理 AN 和演示 S32K3 低功耗管理 AN 和演示 例如 S32K312 待机模式和待机 RAM 和 PAD 保持 DS3.5 RTD300 待机内存被清除/重写的原因是默认的 startup_cm7.s 文件。S32DS 提供的复位功能会初始化所有 SRAM,无论复位原因(POR、破坏性复位、功能性复位)如何。您必须对其进行修改,以便在发出功能 RESET 时,SRAM 初始化跳过已分配的备用 RAM。请参考以下社区帖子: S32K311 待机内存保留。 4. 直接软件破坏性RESET 是的,当 MCU 被发出功能性/破坏性复位指令时,调试子系统和时钟都会被重新初始化,这意味着调试器必须再次重新协商 DAP 访问权限。 破坏性复位会导致芯片的大部分部件(除少数模块外)复位。功能复位会导致所有通信外设和内核复位。通信协议的有效性无法保证,重置后假定它们会被重新初始化。 与其尝试保持连接,不如使用调试器的“附加到目标”选项: Julin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.png 5. Power_Ip_PerformReset() 之前的断点行为 很可能你只是错过了重新连接的窗口期。你可以不用 for() 循环,而是使用 while(flag),其中flag是一个变量,你需要在重新连接调试器后,通过“表达式”选项卡手动更改它。 6. 电源 IP 初始化和 Power_Ip_SetMode() 是的,在使用电源 API 之前必须调用 Power_Ip_Init()。 我建议这样做。您可以通过 Power_Ip_PerformReset() 执行 RESET,但是您只能在 McuResetConfig 容器中配置破坏性 RESET 或功能性 RESET。您可以声明两种电源模式:一种用于功能性复位,一种用于破坏性复位。然后只需调用 Power_Ip_SetMode(Functional_Reset) 或 Power_Ip_SetMode(Destructive_Reset)。 可以省略,但是,为了确保每个模块都已正确设置和配置,您应该调用 Power_Ip_SetMode(RUN_MODE)。如果你的项目不需要这一步,你可以省略它。 请参阅 A6.2。 我做了一个简单的测试,在设置 FRET=1 并通过 Power_Ip_SetMode() API 执行功能性复位后,可以看到报告了 FRE_RESET: Julin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.png 此致, 朱利安 Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好@Sharif417 , 1. SWT0 功能 RESET 升级 1. 为什么在第 15 次 SWT0 功能 RESET 后,我没有观察到 DES[MC_RGM_FRE] = 1? 正如我之前提到的,Power_Ip_Init() API 会清除 DES 寄存器,这意味着你应该通过Power_Ip_GetResetReason() 来读取复位原因。 2. 当 FREC 达到 FRET = 15 时,MCU 是否必须进入破坏性 RESET?如果发生破坏性重置,为什么我的测试分区中的 SRAM 内容会被保留? 是的。只要 FREC 达到 FRET 中配置的阈值,MCU 就应该发出破坏性 RESET。要么没有发生破坏性重置,要么变量放置错误。 3. 我是否遗漏了其他 MC_RGM/SBAF 配置? 不。对于功能复位升级,只需设置 FRET 即可。 2. 功能RESET和破坏性RESET后的 SRAM 数据保持 1. 请问这种 SRAM 行为在 S32K312 上是否正常?我的 SRAM 测试区域是否可能位于即使在破坏性 RESET 后仍能保留的存储区域中? 不应该出现这种情况。发生破坏性 RESET 事件后,SRAM 中的所有内容都将丢失。 能否详细说明一下您是如何测试直接软件破坏性重置的? 从你的项目中来看,如果你使用的是 Power_Ip_PerformReset() API,它配置为功能性复位,而不是破坏性复位。 Julin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.png 实际上,我通过保存这些值并通过 UART 共享它们来测试这一点,其中 FRDM-A-S32K312 通过 SW2 发出功能复位,FRET 设置为 15,在 15 次 SW 功能复位后,我可以看到 MCU_MC_RGM_FRE_RESET 被生成。这是在RTD 6.0.0版本中出现的问题,请查看以下日志: [RESET] Reason : MCU_F_EXR_RESET (RGM_FES F_FR0) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 2 [RESET] Reason : MCU_SW_DEST_RESET (RGM_DES F_DR29) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 2 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 3 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 4 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 5 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 6 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 7 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 8 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 9 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 10 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 11 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 12 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 13 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 14 [RESET] Reason : MCU_MC_RGM_FRE_RESET (RGM_DES F_DR6) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 在 RTD 7.0.1 中,我观察到了您提到的同样现象(从 FRE 未发出破坏性复位信号,到调试器断开连接): [RESET] Reason : MCU_SW_DEST_RESET (RGM_DES F_DR29) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_DEST_RESET (RGM_DES F_DR29) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 2 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 3 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 4 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 5 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 6 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 7 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 8 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 9 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 10 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 11 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 12 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 13 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 14 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 0 这让我相信 RTD 6.0.0 和 RTD 7.0.1 的功率驱动器之间存在一些差异,从而导致了这些症状。我目前还无法确定这是配置问题还是程序错误,请给我一些时间进行分析,如有必要,我会联系内部团队。 此致, 朱利安 Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好,朱利安, 谢谢你的解释。 我已在我的 S32K312 上重复了测试,并想澄清两点观察结果。我附上了完整的项目文件夹,以便您查看配置并重现该问题。 1. SWT0 功能 RESET 升级 我已配置: FRET = 15U;DRET = 0U; 使用SWT0 和 125 毫秒超时来生成功能性 RESET。 我可以观察到每次功能重置后FREC都会增加: SWT0 reset #1 -> FREC = 1 SWT0 reset #2 -> FREC = 2 ... SWT0 reset #14 -> FREC = 14 然而,当下一次 SWT0 功能 RESET 发生且FRET = 15阈值达到时,我无法观察到预期的破坏性 RESET 状态: DES[MC_RGM_FRE] = 1 此外,在第 15 次功能 RESET 后,MCU 继续运行,我没有观察到预期的破坏性 RESET 行为。我的 SRAM 测试分区中存储的 SRAM 数据也完好无损。 我已使用以下命令禁用恢复行为: IP_DCM_GPR->DCMRWP1 |= (3 << 22); 请您审阅一下我附上的项目文件并提出一些疑问: 为什么在第 15 次 SWT0 功能 RESET 后,我没有观察到DES[MC_RGM_FRE] = 1 ? 当FREC达到FRET = 15 时,MCU 是否必须进入破坏性 RESET?如果发生破坏性重置,为什么我的测试分区中的 SRAM 内容会被保留? 我是否遗漏了其他 MC_RGM/SBAF 配置? 2. 功能RESET和破坏性RESET后的 SRAM 数据保持 我创建了一个专用的 SRAM 分区/区域,并将测试数据存储在该区域中。 我已经确认,在多次SWT0 功能 RESET后,SRAM 值得以保留,这是预期的结果。 然而,即使在第 15 次功能 RESET 之后(我预期 FRET 升级会产生破坏性 RESET),SRAM 值仍然保持不变。 我还测试了直接软件破坏性重置,重置后 SRAM 值仍然保留。 因此,我的观察结果是: SWT0 functional reset ↓ SRAM value retained 15th functional reset / expected FRET escalation ↓ SRAM value still retained Direct software destructive reset ↓ SRAM value also retained 请问这种 SRAM 行为在 S32K312 上是否正常?我的 SRAM 测试区域是否可能位于即使经过破坏性 RESET 也会保留的存储区域中? 我附上了完整的 S32K312 项目文件夹,包括链接器配置、RTD 配置、MC_RGM 配置、SWT0 配置和测试应用程序,以便您可以查看实际的存储器放置和复位配置。 感谢您的支持。 Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好,朱利安, 谢谢你的解释。 按照要求,我已附上包含我目前正在使用的软件破坏性重置测试代码/项目的ZIP 文件。 既然您提到 FRET 升级在RTD 6.0.0中运行正常,能否请您分享一下您用于测试的RTD 6.0.0 代码/项目? 我想使用您的 RTD 6.0.0 工作代码作为参考,并将其与我的 RTD 7.0.1 项目进行比较,以了解行为上的差异。 另外,您提到您怀疑RTD 6.0.0 和 RTD 7.0.1 的电源驱动程序可能存在差异或问题,请您在完成分析后告知我您关于RTD 7.0.1 问题的发现? 感谢您的支持。 此致, 谢里夫 Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好@Sharif417 , 在查看了 Power_Ip 驱动程序的源代码后,我发现 Power_Ip_MC_RGM_GetResetReason() API 中应用了功能复位升级计数器的修复程序,其中添加了第三个子句,如果 DES 有位设置且 FRET 寄存器当前读取非零,则也会进入 FES。 RTD 6.0.0: /* If the fields of Destructive Event Status Register (DES) are set then the status of FES register must be ignored */ if (((uint32)0U == ActiveValue) || (MCU_POWER_ON_RESET == ResetReason)) { ... } RTD 7.0.1: /* If the fields of Destructive Event Status Register (DES) are set then the status of FES register must be ignored */ /* If functional reset escalation to destructive reset is disabled, then the status of FES register must be ignored if the fields of Destructive Event Status Register (DES) other than DES[F_POR] are set. */ /* If functional reset escalation to destructive reset is enabled and if the fields of Destructive Event Status Register (DES), other than DES[F_POR], are set, then based on these fields user should check if the cause of the destructive reset was due to functional reset escalation or if it was triggered directly by a destructive reset source, in which case FES needs to be ignored */ if (((uint32)0U == ActiveValue) || (MCU_POWER_ON_RESET == ResetReason) || (((uint32)0U != DesResetStatus) && ((uint32)0U != Power_Ip_pxMC_RGM->FRET))) { ... } 这就是 FES 标志被覆盖的原因。如果我理解正确,硬件可以正确发出破坏性 RESET,但是 RESET 模块却报告了功能性 RESET。您可以通过在第 15 次功能 RESET 后直接读取 IP_MC_RGM->DES 寄存器来确认这一点: Julin_AragnM_0-1788976448272.pngJulin_AragnM_0-1788976448272.pngJulin_AragnM_0-1788976448272.pngJulin_AragnM_0-1788976448272.png 我认为一个可行的办法是修改第三条语句,检查 MCU_MC_RGM_FRE_RESET 事件是否已经发生: /* ----------------------------------------------------------------------- * Enter the FES block if: * a) DES is empty (no destructive reset logged), OR * b) DES has only the Power-On Reset bit, OR * c) DES has bits set AND FRE escalation is configured (FRET != 0) * AND the DES reason is NOT already MCU_MC_RGM_FRE_RESET * ----------------------------------------------------------------------- */ if (((uint32)0U == ActiveValue) || (MCU_POWER_ON_RESET == ResetReason) || (((uint32)0U != DesResetStatus) && ((uint32)0U != Power_Ip_pxMC_RGM->FRET) && (MCU_MC_RGM_FRE_RESET != ResetReason))) 请注意,修改 RTD 驱动程序不受支持,正确的做法是等待软件团队发布官方修复程序。我会将此行为报告给内部团队,并提供他们的反馈意见(如有)。感谢您指出这个问题。 最后,关于您的项目,我看到您是通过Power_Ip_PerformReset() 函数执行 RESET 的。正如我之前提到的,您在复位配置中配置了“功能复位”,您必须将其更改为“破坏性复位”才能执行软件破坏性复位: Julin_AragnM_2-1788976691375.pngJulin_AragnM_2-1788976691375.pngJulin_AragnM_2-1788976691375.pngJulin_AragnM_2-1788976691375.png 或者添加一个 ModeSettingConf 结构,选择 DEST_RESET,然后调用 Power_Ip_SetMode() 函数: Julin_AragnM_3-1788976695121.pngJulin_AragnM_3-1788976695121.pngJulin_AragnM_3-1788976695121.pngJulin_AragnM_3-1788976695121.png 此致, 朱利安 Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好,朱利安, 根据您的建议,我进行了额外的测试,直接读取 MC_RGM DES 和 FES 寄存器,而不是仅仅依赖于 Power_Ip_GetResetReason()。 在这个测试中,我将复位类型配置为软件功能复位,FRET = 15。每次软件功能 RESET 后,FREC 计数器都会递增。在第 15 次软件功能 RESET 后,我在 main() 函数的 Clock_Ip_Init() 函数之前设置了一个断点,并直接读取了 MC_RGM 寄存器: volatile uint32_t regValueDes = 0U;volatile uint32_t regValueFes = 0U; regValueDes = IP_MC_RGM->DES;regValueFes = IP_MC_RGM->FES; gVar = Power_Ip_GetResetReason(); 完整的测试代码如下: int main(void) { volatile uint32_t regValueDes = 0U; volatile uint32_t regValueFes = 0U; regValueDes = IP_MC_RGM->DES; regValueFes = IP_MC_RGM->FES; gVar = Power_Ip_GetResetReason(); Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); Siul2_Port_Ip_Init( NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_000InitConfigArr_PortContainer_0_BOARD_InitPeripherals); Power_Ip_Init(&Power_Ip_HwIPsConfigPB); gVar = Power_Ip_GetResetReason(); /* Disable recovery mode */ IP_DCM_GPR->DCMRWP1 |= (3 << 22); for (count = 0; count < 10125000; count++); Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB); } 在第 15 次功能复位后,我在 Clock_Ip_Init() 之前直接读取了 IP_MC_RGM->DES。但是,我没有观察到 DES[MC_RGM_FRE] = 1。DES 值保持为 0,而 FES 包含 RESET 状态(在我的测试中为 0x20000001)。 基于此观察,我认为该问题可能不仅限于 Power_Ip_MC_RGM_GetResetReason() 或 RESET-reason 报告。由于我在时钟和电源初始化之前直接读取 MC_RGM DES 寄存器,因此我期望 DES[MC_RGM_FRE] 指示 FRET 升级(如果发生了破坏性升级)。 因此,请您确认一下,在第 15 次功能 RESET 之后,MC_RGM 硬件层面是否发生了 FRET 升级?如果此时预期会发生破坏性升级,请问为什么 IP_MC_RGM->DES 仍然为 0? 另外,除了您发现的 Power_Ip_MC_RGM_GetResetReason() 问题之外,您能否确认是否存在与 FREC/FRET 升级机制本身相关的其他 RTD 7.0.1 问题或配置问题? 感谢您协助我们调查此事。 Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention 你好@Sharif417 , 我相信破坏性重置确实正在发生;您可以按照以下我的测试步骤进行操作: 将 FRET 设置为 1,这样每次功能复位都会触发功能复位升级。 声明两个变量(一个用于 DES 寄存器,一个用于 FES 寄存器),以及一个 while() 循环,用于在读取变量之前停止内核。 int main(void) { volatile uint8_t debug = 1; while(debug); volatile uint32_t regValueDes = 0; volatile uint32_t regValueFes = 0; regValueDes = IP_MC_RGM -> DES; regValueFes = IP_MC_RGM -> FES; ... }​ 将代码烧录到 MCU 后,将调试变量改为 0 以启用程序运行并断开调试器。 执行功能复位(您可以使用自己的程序,或者使用我提供的示例)。 选择“连接到运行目标”将其连接到 MCU。 暂停执行,将调试变量设置为 0,并读取 DES 和 FES 变量: Julin_AragnM_0-1789079229563.pngJulin_AragnM_0-1789079229563.png 通过这种方法,在生成功能复位并附加之后,我可以看到与功能复位升级过程相关的 DES[MC_RGM_FRE] 位。 我不确定你为什么会读取 DES->0,如果调试器一直连接着,我想这会干扰 RESET 序列,并产生 RESET。我建议按照我分享的步骤进行测试,并确认 DES 是否真的被设置好了。 请随时告知我最新情况。 此致, 朱利安
記事全体を表示
S32k344 MBIST LBIST 私は現在、グリーンヒルズプロジェクトにおいてS32k344 BISTの実装を進めているところです。私はTresosやNXP DSを使用していないため、ソースコード形式のSW32K3_SPD_1.0.6_D2512を使用しています。ほとんどのbist関数はインポートできましたが、いくつかの定義だけはどこにも分かりません(どこにも見つかりません)。以下の質問に誰か答えてもらえますか? 1. S32k344がロックステップモードの状態でLBIST MBISTを動かしてもいいですか? 2. コードを調べて推測した以下の定義は正しいでしょうか? #define BIST_MBIST_0 1U #define BIST_MBIST_1 2U #define BIST_MBIST_2 3U #define BIST_MBIST_3 4U #define BIST_MBIST_4 5U #define BIST_MBIST_5 6U #define BIST_MBIST_6 7U #define BIST_MBIST_7 8U #define BIST_MBIST_8 9U #define BIST_MBIST_9 10U #define BIST_MBIST_10 11U #define BIST_LBIST_0 0U 私が使用した設定データは以下のとおりです。 static const BIST_CHANNEL_CONFIG_TYPE BistConfig[BIST_SAFETYBOOTCFG_NB] = ヤージュ ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_0、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_1)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_1、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_2)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_2、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_3)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_3、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_4)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_4、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_5)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_5、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_6)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_6、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_7)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_7、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_8)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_8、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_9)) }、 //#endif ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_9、 (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_10)) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_MBIST_10、 (BIST_CONTROL_TYPE)(0x00100000U) }、 ヤージュ (BIST_CHANNEL_TYPE)BIST_LBIST_0、 (BIST_CONTROL_TYPE)((0x00001108U) | BIST_LBIST_PTR_VAL(BIST_NIL)) } }; Re: S32k344 MBIST LBIST こんにちは、 1. S32k344がロックステップモードの状態でLBIST MBISTを動かしてもいいですか? はい。S32K344のロックステップアーキテクチャは、STCU2 LBIST/MBISTの実行を妨げません。BIST機構はデバイスセーフティインフラストラクチャの一部であり、STCU2で管理される論理とメモリをテストするために設計されています。S32K3セーフティマニュアルには、ロックステップとSTCU2 LBIST/MBISTの両方が装置のセーフティ機構として明示されています。 2. コードを調べて推測した以下の定義は正しいでしょうか? 数値値は基本的にS32K344に正確ですが、セーフティ上の観点からセーフティブート構成にMBIST_10(HSE_ROMs)を含める必要はなく、推奨されるパスは検証済みのSPD構成を直接利用することです。 よろしくお願いいたします。 ピーター Re: S32k344 MBIST LBIST ピーター、 ご返信いただき、誠にありがとうございます。ここ数日間、BISTテストの問題で行き詰まっています。私はS32k344ホワイトボードでテストしており、コードはGreen HillsのマルチIDE rev 8.1で構築しています。セーフティブーツのBISTが通っていません。コアやペリフェラルの最大クロック要件は満たされていると思います。外部水晶発振器16MHzとPLLからcore_clkを160MHzに設定し、AIPS_PLAT_CLKは80MHz、AIPS_SLOW_CLKは40MHz、DCM_CLKは40MHz、LBIST_CLKは40MHz、QSPI_MEM_CLKは160MHzに設定しています。bist 実行からユニットをリセットすると、DES レジスタが 0x00408175 になり、いくつかの予約ビットが設定され、FES レジスタが 0x2000 になります (意味がわかりません)。以下の質問にお答えいただけますでしょうか? 1. 上記のすべてのクロック信号は、MC_CGM->MUX_0_DC_x レジスタを介して有効化する必要がありますか?私は手に入れている 情報が矛盾していますが、現在有効になっています。 2. リファレンス・マニュアルのSTCU2章には、「EMACタイムスタンプメモリ上でMBISTを実行する際、MC_CGM MUX_9_9_DC_0[DIV]はEMAC_CLK_TS AIPS_SLOW_CLK周波数の少なくとも1.5倍であるべきであるように適切に設定されるべきである。」つまり、クロックを設定して、MC_CGM->MUX_9_DC_0レジスタで有効にする必要があるということですか? 3. SW32K3_SPD_1.0.6_D2512パッケージでS32_SPD_Demo例コードを見たい場合は、最新のNXP Design Studioをインストールし、spd zipファイルを更新サイトとしてインポートし、RTDパッケージも同時にインポートする必要があると思います。それで合っていますか? 4. MBIST 10はHSE_RAMS、MBIST 11はHSE_ROMSだと思います。SPDドキュメントフォルダにある以下の表を参照してください。 MBIST BIST ID BISTインスタンス名 ドメインのリセット セーフティブーツ セーフティ診断 0 SYS0_RAMS 主要 ü ü 1 SYS1_RAMS 主要 ü ü 2 DMA_TCD_RAM 主要 ü ü 3 CM7_0_TOP 主要 ü ü 4 CM7_1_TOP 主要 ü ü 5 フレックス・キャン・ラムズ 主要 ü ü 6 QSPI_PERI_RAMS 主要 ü ü 7 EMAC_TSN_RAM 主要 ü ü 8 EMAC_RAMS 主要 ü ü 9 b03_ETF_RAMS 主要 ü ü 10 HSE_RAMS 主要 ü ü 11 HSE_ROMS 主要   ü Re: S32k344 MBIST LBIST 私の問題に関する最新情報です。STCU_RUNSW_REGのビット8と9を有効にしてPLLを使用するようにした後、DESレジスタが常に0x11、FESレジスタが0x10になっていることが確認されています。bist_get_exec_status(BIST_SAFETYBOOT_CFG) の戻り値は NOT RUN (0x03) です。BIST ERR_STATレジスタには何も格納されておらず、ENDフラグも設定されていません。FCCU NCF_S0レジスタでは、ビット2がセットされています。BISTは開始されなかったようですが、リセットは確認できました。私は、別のバンクのフラッシュメモリに書き込むことで、レジスタ設定を取得しました。 Re: S32k344 MBIST LBIST 考えられるすべての時計を確認しましたが、どれも正確だと思います。レジスタ内の設定データをNXP Studio SPDのサンプルプロジェクトの値と比較してみましたが、それらも正しかったです。新しい情報が1つあります。システムがBISTリセットから復帰した後、DCMROD3レジスタに値0x18が記録されているのを確認しました。このエラーを解決するにはどうすればよいですか?ありがとう。 XRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.png Re: S32k344 MBIST LBIST こんにちは、 STCUの自己診断シーケンスが開始され、ST_DONEリセットフェーズに到達しました。しかし、STCUは回復不能な故障(STCU_URF)も報告しており、これがSAFのBISTドライバがその後BIST_NORUNを報告する理由を説明しています。したがって、この問題はBISTが一度もトリガーされなかったCASEではなく、STCUの実行・設定失敗であるようです。 S32K3では、破壊リセットと機能リセットの両方の表示が同時に見られる場合、それはリセット履歴を表示している可能性が高く、必ずしも直接のリセット元を表示しているとは限りません。 ソフトウェアを移植するとのことですので、まずはPLLから取得したデータでMBISTテストのみを実行して、合格するかどうかを確認してみることをお勧めします。 また、テスト時の時計設定を再度確認してください。 よろしくお願いいたします。 ピーター Re: S32k344 MBIST LBIST こんにちは、 S32K344では、RCCUがロックステップの不一致を報告し、デバッガと接続すると、単独実行では決して起こらないRCCU関連の故障が発生することも珍しくありません。 例の設定に従うなら、フルBISTです。 この例はテスト済みで、デフォルト設定で完全に動作します。 しかし、あなたのポートはURFエラーを報告しているので、すべてが同じではないことがわかります。 STCUのドキュメントを見ると、ユーザーはテストへのポインタを設定できます。 54.9.4 STCU2 設定 (CFG) petervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.png まずは検査を縮小してから、徐々に検査を増やす方法もあります。 MBISTおよびLBIST制御レジスタでは、どのテストが最後に行われるかを設定できます: petervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.png 例えばCFGレジスタで を指し示すことで、単一のMBISTパーティションを実行できます: petervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.png petervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.png よろしくお願いいたします。 ピーター Re: S32k344 MBIST LBIST mbistを順番に実行してみたり、個別のmbistテストIDを使って実行してみたりしました。結果は同じで、新たな状態は観察されなかった。トリガー設定直前のセーフティブート用の以下のSCU2レジスタ設定を確認できますか?ありがとう。 XRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.png Re: S32k344 MBIST LBIST これは、S32k344マイクロコントローラでLBIST/MBISTの実装に苦労しているコミュニティの方々のためのものです。何日も進展がなかった後、ようやく試験に合格することができました。SPDドライバー1.06のカスタム移植でそうしました。ドライバーコードは動作しますが、故障を回復不能な障害に設定する必要があります。以下は設定が必要なクロックです。これらのいずれかが正しく設定されていない場合、テストシーケンスが同時に実行され、他のステータスが表示されず、完了ビットが設定されないため、テストは BIST_NORUN(0x03) ステータスで失敗します。 1. FXOSCモジュールのCTRLレジスタを設定して外部オシレーターまたは水晶発振器を使用するようにします。これがS32k344で最大160MHzを得る唯一の方法です。 2. PLL回路用にPLLDIGモジュールを設定し、PLLDVレジスタのrdiv、mfi、およびodiv2ビットを設定して、最大周波数が出力されるようにします。 3. PLLクロックをcore_clkとemac_clkのリファレンス・マニュアルの手順に従って切り替え、MC_CGM_MUX_xレジスタ設定を行います。 4. MC_CGM->MUX_0 レジスタと MC_CGM->MUX_9 レジスタを設定して、以下のクロック信号を取得します。 AIPS_PLAT_CLKを80MHzに設定 AIPS_SLOW_CLKを40MHzに設定 HSE_CLKを80MHzに設定 DCM_CLKを40MHzに設定 LBIST_CLKは40MHz QSPI_MEM_CLKを160MHzに設定 EMAC_CLKは80MHz     注: RUNSW レジスタのビット 8 と 9 を設定しないでください。設定するとテストが失敗します。これはSPDドライバーコードには記載されていません。リファレンス・マニュアルには矛盾した情報があるため、これを言及します。
記事全体を表示
S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello NXP Team, I am working with an S32K312 Cortex-M7 using S32 Design Studio and AUTOSAR RTD 7.0.1 / AUTOSAR 4.9. I am currently testing the MC_RGM reset behavior, particularly SWT0 functional reset, functional reset escalation, destructive reset, SRAM retention, SBAF/recovery behavior, and the Power IP reset APIs. 1. SWT0 functional reset escalation I am using SWT0 timeout to generate functional resets. My MC_RGM configuration is: MC_RGM_FRET_FRET((uint32)15U), MC_RGM_DRET_DRET((uint32)0U) I observe the functional reset counter increasing: SWT0 functional reset #1 -> FREC = 1 SWT0 functional reset #2 -> FREC = 2 ... SWT0 functional reset #14 -> FREC = 14 After the next SWT0 reset, FREC is cleared/reset, but I do not observe the expected: DES[MC_RGM_FRE] = 1 My questions are: Does SWT0_RST participate in the MC_RGM functional reset escalation counter (FREC) on S32K312? When FREC reaches FRET = 15, should MC_RGM_FRE be generated and should DES[MC_RGM_FRE] be set? What exact values should I expect for FES, DES, FREC, FRET, Power_Ip_GetResetReason() immediately after the escalation? Is any additional configuration required for SWT0 to participate in FRET escalation? Can SBAF/recovery handling interfere with FRET escalation? Is there any known erratum or known S32K312 behavior related to SWT0/FRET escalation? When I run the application continuously, after the 15th functional reset the application/debugger stops instead of allowing me to observe the expected destructive reset. I would like to know whether this is related to the reset sequence, SBAF recovery, or the debugger. 2. I want every SWT0 functional reset to become destructive For testing purposes, I would also like to achieve: SWT0 timeout ↓ Functional reset ↓ Immediate destructive reset instead of waiting for 15 functional resets. Can this be achieved by configuring: FRET = 1U;  Specifically: Does FRET = 1 cause the first qualifying SWT0 functional reset to escalate to a destructive reset? Is any additional MC_RGM configuration required? Is SWT0 guaranteed to be a qualifying source for this escalation? Can SBAF/recovery behavior affect this? Is this supported directly through RTD 7.0.1 configuration? 3. SRAM data is cleared after every functional reset According to my understanding of the S32K3xx Reference Manual, SRAM/system memory should be preserved across a functional reset. I created an SRAM test variable: #define SRAM_TEST_ADDR ((volatile uint32_t *)0x204007d4U) and use it to verify retention across functional resets. However, I observe that the SRAM data is being cleared/re-written to zero after a functional reset. My questions are: Is SRAM preserved by the hardware during functional reset but overwritten afterward by software? Which SRAM regions are guaranteed to retain their contents across functional reset on S32K312? What is the recommended way to place a variable in SRAM so that its contents are retained across functional reset? Should I use a dedicated .noinit or retained SRAM section? Is there any specific MC_RGM/SRAM configuration required for retention? What is the recommended RTD 7.0.1 method for retaining application data across functional reset? 4. Direct software destructive reset I am also testing a direct software destructive reset using the Power IP: Power_Ip_Init(&Power_Ip_HwIPsConfigPB); gVar= Power_Ip_GetResetReason(); for (count = 0; count < 10125000; count++); Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB); My current MC_RGM configuration contains: static const Power_Ip_MC_RGM_ConfigType Power_Ip_MC_RGM_ConfigPB = { (MCU_DEST_RESET), ... MC_RGM_FRET_FRET((uint32)15U), MC_RGM_DRET_DRET((uint32)0U) }; The destructive reset occurs, but the debugger repeatedly loses and re-establishes communication. I see messages such as: INFO: DAP IDCODE = 0x6BA02477 INFO: DAP successfully powered up. DP CTRL/STAT = 0xF0000000 repeated multiple times, followed by: Interrupt command received. Halting execution. I would like to understand: Is repeated DAP reconnection expected during a destructive reset? What exactly happens to the Cortex-M7 during the destructive-reset sequence? When does the CPU become available again after the destructive reset? What is the recommended way to debug a single software destructive reset? 5. Breakpoint behavior before Power_Ip_PerformReset() I cannot reliably hit a breakpoint immediately before: Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB); I added a delay before the API, expecting the debugger to have enough time to gain access. Sometimes the breakpoint is only reached after I manually pause the target and then resume execution. I would like to understand: Why can the debugger miss the breakpoint even though there is a delay before the reset API? Is this related to the target repeatedly resetting and the debugger reconnecting through DAP? Is there a recommended method for catching the CPU immediately before or immediately after a destructive reset? Is the RTD DISABLE_DEBUGGER_TRAP option relevant to this behavior? 6. Power IP initialization and Power_Ip_SetMode() My RTD provides: void Power_Ip_Init( const Power_Ip_HwIPsConfigType *HwIPsConfigPtr); void Power_Ip_SetMode(const Power_Ip_ModeConfigType *ModeConfigPtr); void Power_Ip_PerformReset( const Power_Ip_HwIPsConfigType *HwIPsConfigPtr ); Power_Ip_ResetType Power_Ip_GetResetReason(void); Power_Ip_RawResetType Power_Ip_GetResetRawValue(void); I currently use: Power_Ip_Init(&Power_Ip_HwIPsConfigPB); and: gVar = Power_Ip_GetResetReason(); My mode configuration is POWER_IP_RUN_MODE. I would like clarification on: Is Power_Ip_Init(&Power_Ip_HwIPsConfigPB) the correct initialization before using the Power IP reset APIs? Is Power_Ip_SetMode() required for software functional/destructive reset testing? Since my selected mode is POWER_IP_RUN_MODE, can Power_Ip_SetMode() be omitted for this reset test? How should I configure separate software functional-reset and software destructive-reset configurations using RTD 7.0.1? Environment MCU: S32K312 Core: Cortex-M7 S32DS: S32 Design Studio AUTOSAR: 4.9 RTD: 7.0.1 Reset source: SWT0 FRET: 15 DRET: 0 I can provide the complete test application, Power_Ip_PBcfg.c, linker configuration, MC_RGM register captures, and debugger logs if required. Thank you. Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello @Sharif417, 1. SWT0 functional reset escalation SWT0_RSTdoes participate in FREC for S32K312, and when FREC reaches 15, DES[MC_RGM_FRE] is set, which you should be able to read by calling Power_Ip_GetResetReason(), and returning "MCU_MC_RGM_FRE_RESET". All functional reset sources that are not demoted (through MCRGM.FERD) qualify for incrementing FREC. Keep in mind that Power_Ip_Init() clears MC_RGM.DES (after saving its value), so try to get the register values before initializing Power module or simply read reset reason. Recovery Mode may affect this, if the threshold is >8, as Recovery Mode is set to '8' by default. sBAF also may interfere with DRET, not FRET. You can see it is changed to 0xF if it is '0':   Julin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.pngJulin_AragnM_0-1788816978772.png When I run the application continuously, after the 15th functional reset the application/debugger stops instead of allowing me to observe the expected destructive reset. I would like to know whether this is related to the reset sequence, SBAF recovery, or the debugger. Instead of trying to keep the debugger connected, can you try attaching after a 15th functional reset, or try printing the reset reason through UART or similar? 2. I want every SWT0 functional reset to become destructive Yes, FRET=1 is enough for every functional reset to issue a destructive reset. No additional MC_RGM necessary. sBAF/Recovery Mode should not affect this. Yes, you can configure it directly in POWER module -> "Module Configuration" -> "McuResetConfig" -> "Functional Reset Escalation Threshold" 3. SRAM data is cleared after every functional reset Correct, SRAM is preserved after functional reset. Depending on the derivative, S32K3 may provide 16KB, 32KB or up to 64KB for Standby RAM. You can find some examples on how to place and use a variable through Standby RAM: [RTD600 MCAL & IP] S32K3 Low Power Management AN and demos S32K3 Low Power Management AN and demos Example S32K312 Standby mode & Standby RAM and PAD keeping DS3.5 RTD300 The reason that Standby RAM is being cleared/re-written, is because the default startup_cm7.s provided by S32DS initializes all of SRAM, regardless of reset reason (POR, Destructive, Functional). You must modify it so that if a functional reset is issued, SRAM initialization skips the allocated Standby RAM. Please refer to the following community post: S32K311 standby ram retention. 4. Direct software destructive reset Yes, when MCU is issued a functional/destructive reset, the debug subsystem and clocks are all re-initialized, meaning the debugger must re-negotiate DAP access again. A destructive reset leads most parts of the chip, except a few modules, to reset. While a functional reset leads all the communication peripherals and cores to reset. The communication protocols' sanity is not guaranteed and they are assumed to be reinitialized after reset. Instead of trying to keep the connection, you can use the 'Attach to Target' option for the debugger: Julin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.pngJulin_AragnM_1-1788817136992.png 5. Breakpoint behavior before Power_Ip_PerformReset() Most likely you are simply missing the window to reconnect. Instead of using a for() loop, you can simply use while(flag), where flag is a variable you will change manually after reconnecting with the debugger, through the 'Expressions' tab. 6. Power IP initialization and Power_Ip_SetMode() Yes, Power_Ip_Init() must be called before using the Power APIs. I suggest doing so. You can perform resets through Power_Ip_PerformReset(), however, you can only configure either destructive or functional reset in McuResetConfig container. You can instead declare two power modes: one for functional reset, and one for destructive reset. Then simply call Power_Ip_SetMode(Functional_Reset) or Power_Ip_SetMode(Destructive_Reset). It can be omitted, however, you should call Power_Ip_SetMode(RUN_MODE) just to make sure every module is correctly gated and configured. If this is not needed in your project, you can omit it. Please se A6.2. I've made a simple test, and I can see FRE_RESET reported after setting FRET=1, and performing a functional reset through Power_Ip_SetMode() API: Julin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.pngJulin_AragnM_2-1788817284857.png Best regards, Julián Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello Julián, Thank you for the clarification. I have now repeated the tests on my S32K312 and would like to clarify two observations. I am attaching the complete project folder so that you can review the configuration and reproduce the behavior. 1. SWT0 functional reset escalation I configured: FRET = 15U;DRET = 0U; and use SWT0 with a 125 ms timeout to generate functional resets. I can observe FREC increasing after each functional reset: SWT0 reset #1 -> FREC = 1 SWT0 reset #2 -> FREC = 2 ... SWT0 reset #14 -> FREC = 14 However, when the next SWT0 functional reset occurs and the FRET = 15 threshold is reached, I am not able to observe the expected destructive-reset status: DES[MC_RGM_FRE] = 1 Also, after the 15th functional reset, the MCU continues running and I do not observe the expected destructive-reset behavior. The SRAM data stored in my SRAM test partition also remains intact. I have disabled the recovery behavior using: IP_DCM_GPR->DCMRWP1 |= (3 << 22); Could you please review my attached project and clarify: Why am I not observing DES[MC_RGM_FRE] = 1 after the 15th SWT0 functional reset? After FREC reaches FRET = 15, should the MCU definitely enter a destructive reset? If a destructive reset occurs, why my SRAM contents is retained in my test partition ? Is there any additional MC_RGM/SBAF configuration that I am missing? 2. SRAM retention after functional and destructive reset I created a dedicated SRAM partition/section and stored test data in that region. I have confirmed that the SRAM value is retained across the repeated SWT0 functional resets, which is expected. However, even after the 15th functional reset, where I expect FRET escalation to generate a destructive reset, the SRAM value still remains. I also tested a direct software destructive reset, and the SRAM value was still retained after that reset as well. My observation is therefore: SWT0 functional reset ↓ SRAM value retained 15th functional reset / expected FRET escalation ↓ SRAM value still retained Direct software destructive reset ↓ SRAM value also retained Could you please clarify whether this SRAM behavior is expected on the S32K312, and whether my SRAM test region may be located in a memory area that is retained even across a destructive reset? I am attaching the complete S32K312 project folder, including the linker configuration, RTD configuration, MC_RGM configuration, SWT0 configuration, and test application, so you can review the actual memory placement and reset configuration. Thank you for your support. Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello @Sharif417, 1. SWT0 functional reset escalation 1. Why am I not observing DES[MC_RGM_FRE] = 1 after the 15th SWT0 functional reset? As I've mentioned, Power_Ip_Init() API clears DES register, meaning you should read reset reason through Power_Ip_GetResetReason() instead.  2. After FREC reaches FRET = 15, should the MCU definitely enter a destructive reset? If a destructive reset occurs, why my SRAM contents is retained in my test partition? Yes. As long as FREC reaches the threshold configured in FRET, MCU should issue a destructive reset. Either a destructive reset is not occurring, or variable is wrongly placed.  3. Is there any additional MC_RGM/SBAF configuration that I am missing? No. For Functional Reset Escalation, simply setting FRET should suffice.  2. SRAM retention after functional and destructive reset 1. Could you please clarify whether this SRAM behavior is expected on the S32K312, and whether my SRAM test region may be located in a memory area that is retained even across a destructive reset? This should not be the case. All SRAM content is lost after a destructive reset event. Can you share how exactly are you testing the direct software destructive reset? From your project, if you are using Power_Ip_PerformReset() API, it is configured as functional reset, not destructive. Julin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.pngJulin_AragnM_0-1788891886849.png Actually, I tested this by saving the values and share them through UART, where FRDM-A-S32K312, issues a functional reset through SW2, FRET is set to 15, and after 15 SW functional resets, I can see MCU_MC_RGM_FRE_RESET being generated. This is in RTD 6.0.0, please see my log below: [RESET] Reason : MCU_F_EXR_RESET (RGM_FES F_FR0) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 2 [RESET] Reason : MCU_SW_DEST_RESET (RGM_DES F_DR29) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 2 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 3 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 4 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 5 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 6 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 7 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 8 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 9 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 10 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 11 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 12 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 13 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 14 [RESET] Reason : MCU_MC_RGM_FRE_RESET (RGM_DES F_DR6) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 In RTD 7.0.1, I can see the same behavior you mention (from FRE not asserting destructive reset, to debugger disconnecting): [RESET] Reason : MCU_SW_DEST_RESET (RGM_DES F_DR29) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_DEST_RESET (RGM_DES F_DR29) [RESET] FRE Counter: 0 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 1 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 2 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 3 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 4 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 5 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 6 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 7 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 8 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 9 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 10 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 11 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 12 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 13 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 14 [RESET] Reason : MCU_SW_FUNC_RESET (RGM_FES F_FR29) [RESET] FRE Counter: 0 This leads me to believe that there are some differences in Power driver between RTD 6.0.0 & RTD 7.0.1 which leads to these symptoms. I have not been able to pinpoint if this is an issue with configuration, or a bug, please give me some time to analyze and contact the internal team if needed. Best regards, Julián Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello Julián, Thank you for the clarification. As requested, I have attached the ZIP file containing the software destructive-reset test code/project that I am currently using. Since you mentioned that the FRET escalation works correctly with RTD 6.0.0, could you please share the working RTD 6.0.0 code/project that you used for your test? I would like to use your RTD 6.0.0 working code as a reference and compare it with my RTD 7.0.1 project to understand the difference in behavior. Also, as you mentioned that you suspect there may be a difference or issue in the Power driver between RTD 6.0.0 and RTD 7.0.1, could you please let me know your findings regarding the RTD 7.0.1 issue once you have completed the analysis? Thank you for your support. Best regards, Sharif Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hi @Sharif417, After going through the source code for Power_Ip driver, I can see a fix for Functional Reset Escalation Counter was applied in Power_Ip_MC_RGM_GetResetReason() API, where a third clause was added, it also enter FES if DES has bits set AND the FRET register currently reads non-zero. RTD 6.0.0: /* If the fields of Destructive Event Status Register (DES) are set then the status of FES register must be ignored */ if (((uint32)0U == ActiveValue) || (MCU_POWER_ON_RESET == ResetReason)) { ... } RTD 7.0.1: /* If the fields of Destructive Event Status Register (DES) are set then the status of FES register must be ignored */ /* If functional reset escalation to destructive reset is disabled, then the status of FES register must be ignored if the fields of Destructive Event Status Register (DES) other than DES[F_POR] are set. */ /* If functional reset escalation to destructive reset is enabled and if the fields of Destructive Event Status Register (DES), other than DES[F_POR], are set, then based on these fields user should check if the cause of the destructive reset was due to functional reset escalation or if it was triggered directly by a destructive reset source, in which case FES needs to be ignored */ if (((uint32)0U == ActiveValue) || (MCU_POWER_ON_RESET == ResetReason) || (((uint32)0U != DesResetStatus) && ((uint32)0U != Power_Ip_pxMC_RGM->FRET))) { ... } This is why FES flag is overwritten. If I am correct, destructive reset is issued correctly by hardware, however, Reset module reports a functional reset instead. You can confirm this by reading the IP_MC_RGM->DES register directly after the 15th functional reset: Julin_AragnM_0-1788976448272.pngJulin_AragnM_0-1788976448272.pngJulin_AragnM_0-1788976448272.pngJulin_AragnM_0-1788976448272.png I guess a valid approach could be to change the third clause to check if MCU_MC_RGM_FRE_RESET event has already happened: /* ----------------------------------------------------------------------- * Enter the FES block if: * a) DES is empty (no destructive reset logged), OR * b) DES has only the Power-On Reset bit, OR * c) DES has bits set AND FRE escalation is configured (FRET != 0) * AND the DES reason is NOT already MCU_MC_RGM_FRE_RESET * ----------------------------------------------------------------------- */ if (((uint32)0U == ActiveValue) || (MCU_POWER_ON_RESET == ResetReason) || (((uint32)0U != DesResetStatus) && ((uint32)0U != Power_Ip_pxMC_RGM->FRET) && (MCU_MC_RGM_FRE_RESET != ResetReason))) Keep in mind that modifying the RTD drivers is not supported, and the correct approach is to wait for an official fix from the SW team. I will flag this behavior with the internal team, and provide their feedback, if any. Thank you for pointing this issue out. Lastly, regarding your project, I can see you are issuing a reset through Power_Ip_PerformReset(). As I've mentioned, you have 'Functional Reset' configured inside the Reset configuration, you must change it to 'Destructive Reset' in order to issue a Software Destructive Reset: Julin_AragnM_2-1788976691375.pngJulin_AragnM_2-1788976691375.pngJulin_AragnM_2-1788976691375.pngJulin_AragnM_2-1788976691375.png or add a ModeSettingConf structure, select DEST_RESET, and call Power_Ip_SetMode() instead: Julin_AragnM_3-1788976695121.pngJulin_AragnM_3-1788976695121.pngJulin_AragnM_3-1788976695121.pngJulin_AragnM_3-1788976695121.png Best regards, Julián Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello Julián, Based on your recommendation, I performed an additional test by directly reading the MC_RGM DES and FES registers, rather than relying only on Power_Ip_GetResetReason(). In this test, I configured the reset type as software functional reset with FRET = 15. After each software functional reset, the FREC counter increments. After the 15th software functional reset, I placed a breakpoint in main() before Clock_Ip_Init() and directly read the MC_RGM registers: volatile uint32_t regValueDes = 0U;volatile uint32_t regValueFes = 0U; regValueDes = IP_MC_RGM->DES;regValueFes = IP_MC_RGM->FES; gVar = Power_Ip_GetResetReason(); The complete test code is as follows: int main(void) { volatile uint32_t regValueDes = 0U; volatile uint32_t regValueFes = 0U; regValueDes = IP_MC_RGM->DES; regValueFes = IP_MC_RGM->FES; gVar = Power_Ip_GetResetReason(); Clock_Ip_Init(&Clock_Ip_aClockConfig[0]); Siul2_Port_Ip_Init( NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_000InitConfigArr_PortContainer_0_BOARD_InitPeripherals); Power_Ip_Init(&Power_Ip_HwIPsConfigPB); gVar = Power_Ip_GetResetReason(); /* Disable recovery mode */ IP_DCM_GPR->DCMRWP1 |= (3 << 22); for (count = 0; count < 10125000; count++); Power_Ip_PerformReset(&Power_Ip_HwIPsConfigPB); } After the 15th functional reset, I directly read IP_MC_RGM->DES before Clock_Ip_Init(). However, I did not observe DES[MC_RGM_FRE] = 1. The DES value remains 0, while FES contains the reset status (0x20000001 in my test). Based on this observation, I believe the issue may not be limited to Power_Ip_MC_RGM_GetResetReason() or reset-reason reporting. Since I am directly reading the MC_RGM DES register before the clock and Power initialization, I expected DES[MC_RGM_FRE] to indicate the FRET escalation if the destructive escalation had occurred. Therefore, could you please confirm whether the FRET escalation itself is occurring at the MC_RGM hardware level after the 15th functional reset? If the destructive escalation is expected at this point, could you please advise why IP_MC_RGM->DES remains 0? Also, could you please confirm whether there is any additional RTD 7.0.1 issue or configuration related to the FREC/FRET escalation mechanism itself, in addition to the Power_Ip_MC_RGM_GetResetReason() issue you identified? Thank you for your support in helping us investigate this issue. Re: S32K312: SWT0 Functional Reset Escalation, Destructive Reset Status and SRAM Retention Hello @Sharif417, I believe the destructive reset is indeed happening; you can follow my test procedure below: Set FRET=1, so each functional reset triggers a Functional Reset Escalation. Declare two variables (one for DES, and one for FES registers), as well as a while() loop for stopping the core before reading the variables. int main(void) { volatile uint8_t debug = 1; while(debug); volatile uint32_t regValueDes = 0; volatile uint32_t regValueFes = 0; regValueDes = IP_MC_RGM -> DES; regValueFes = IP_MC_RGM -> FES; ... }​ After flashing the MCU with the code, change debug variable to 0 to enable the program to run and disconnect the debugger.  Perform the functional reset (you can use your program, or the example I've provided). Attach to the MCU by selecting "Attach to Running Target". Pause the execution, set debug variable to 0, and read DES & FES variables: Julin_AragnM_0-1789079229563.pngJulin_AragnM_0-1789079229563.png With this method, after generating the functional reset, and attaching, I can see DES[MC_RGM_FRE] bit related to the Functional Reset Escalation procedure. I'm not sure why you are reading DES->0, if debugger was kept connected, I imagine this meddles with the reset sequence, and generated resets. I suggest testing it with the steps I shared and confirm if DES is really being set or not. Please keep me informed. Best regards, Julián
記事全体を表示
SWUpdate A/B OTA with U-Boot on i.MX8M Plus Hi NXP Team, I am implementing OTA on i.MX8M Plus LPDDR4 EVK using: Yocto Wrynose Linux 6.18.20 U-Boot 2026.04 SWUpdate 2026.05.1 Current Progress SWUpdate integrated successfully into Yocto. Successfully generated .swu packages. SWUpdate package installation is working. Hardware compatibility checking is working. Successfully updated /etc/ota-version using SWUpdate. rawfile handler is working. Now I want to implement production-level A/B OTA with automatic rollback and signed updates. Questions Could you please guide me on the recommended NXP approach for: A/B rootfs partition layout. U-Boot bootcount/bootlimit based rollback. SWUpdate integration with U-Boot environment. Correct fw_env.config / libubootenv configuration. Signed .swu package verification. Anti-rollback/version protection. Secure Boot + SWUpdate integration. Currently, the OTA update completes, but SWUpdate reports: Cannot initialize environment from /etc/fw_env.config Cannot persistently store update state Is there an NXP reference design, application note, or example for SWUpdate + A/B + U-Boot rollback + signed OTA on i.MX8M Plus? Thanks. i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Yocto Project Re: SWUpdate A/B OTA with U-Boot on i.MX8M Plus Hello, We do not provide a standard EVK A/B update framework out of the box. A/B update, rollback policy, and power-fail-safe boot selection are system-level features you must implement using U-Boot + SWUpdate. The closest references are: AN12900 - Secure OTA prototype for Linux using CAAM and Mender or SWUpdate. AN13872 - Enabling SWUpdate. meta-swupdate-imx - NXP Yocto layer with SWUpdate. Best regards. Re: SWUpdate A/B OTA with U-Boot on i.MX8M Plus Hey vp1, While I do not have an exact answer, I would like to make you aware that Torizon now supports any i. MX SoCs. It's deployed in many critical i.MX8MPlus products worldwide (mostly on Toradex SoMs). It does feature highly reliable OTA (default is OSTree but can be changed)  It includes out-of-the-box secure boot, anti-rollback, vulnerability management (for EU CRA compliance), and more.  The OS is free and open source; we are happy to help if you like. Contact us if you like to give it a try on the i.MX8M Plus LPDDR4 EVK or your own HW. www.torizon.io  Sorry for the pitch, i work for Torizon and this seemed relevant. 
記事全体を表示
PCF85263AT/AJ——屏幕上显示的分钟数为任意值。 在代码迁移任务中,我们遇到了 BSF 标志被设置的问题。由于 BSF 标志被设置,分钟寄存器中的 EMON 位也被设置。 因此,屏幕上显示的分钟数是一个任意值。此外,年份值无法正确保存,即使在设置了 RTC 日期和时间之后,年份值仍然持续显示 2000。 我尝试测试了下面提到的条件,但问题仍然存在。 我将标志寄存器(0x43)设置为 0x00 并立即读取它;它显示 0x00。然而,3秒后我再次读取寄存器时,其值又被设置为0x08(或0x00)。 Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value 你好 Ris_eek 再会! BSF 标志并非只是无法清除。相反,RTC 检测到新的电池切换事件,并再次设置 BSF。根据数据手册,当电池切换逻辑检测到电源转换事件时,BSF 将被设置。 它在大约 3 秒后重新确立的事实意味着 VDD 电源反复降至电池切换阈值以下,导致反复出现 VDD>VBAT>VDD 转换。每次转换都会重置 BSF。 RafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.png 这种持续的电压波动导致 RTC 不断 RESET,这就是为什么它只显示 2000 年的原因。我建议检查一下电源信号是否存在问题。 希望这些信息对您有所帮助,如果您还需要其他帮助,请告诉我。 祝你今天过得愉快,一切顺利。 Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value 亲爱的拉法尔; 谢谢你的来信。   在硬件方面,VDD(4.93 VDC)和VBAT(3.02 VDC)电压是恒定的。为防止电压波动,在电池电源两端并联了一个 100 nF 的电容。 电池开关寄存器(26h)设置为 0x00。因此,BSM(电池开关模式)配置为在 Vth 电平进行切换。Vth 电平为 1.5 V,因为 BSTH(电池开关阈值电压)位设置为 0。 如图 25 所示(如前一封邮件中所述): 当 VDD < Vth 时,BSF 设置为 1。 当 VDD > VBAT 时,BSF 应被清除。 然而,在通电状态下,测得的电压为 VDD = 4.93 VDC,大于 VBAT = 3.02 V。即使如此,边防部队也未能通过清剿。 请问为什么即使 VDD 大于 VBAT,BSF 仍然保持设置状态? Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value 你好 Ris_eek 再会! 数据手册上写着: 声明标志 BSF(寄存器标志,地址 2Bh)可用于在引脚 INTA 和 INTB 上产生中断。中断可以生成为脉冲信号,也可以生成为持续有效的信号,该信号遵循位 BSF 的条件。BSF 保持设置状态,直至接到命令解除。 我发送的参考图像还显示以下内容:“通过接口清除。” 这不会自动完成,你需要手动清除。 希望这些信息对您有所帮助,如果您还需要其他帮助,请告诉我。 祝你今天过得愉快,一切顺利。 Re: PCF85263AT/AJ -- Minutes value displayed on the screen is showing an arbitrary value 好的,拉法尔 谢谢。 但是,BSF 标志在软件中被清除,但过一段时间后,它会再次被设置,正如我在之前的帖子中描述的那样。
記事全体を表示
S32k344 MBIST LBIST I'm in the process of implementing S32k344 BISTs in a green hills project. I'm using  SW32K3_SPD_1.0.6_D2512 in the source code form since I don't use Tresos or NXP DS. I was able to import most of the bist functions, except few defines that I'm not sure about (can't find them anywhere). Can anybody answer below questions. 1. Can I run LBIST MBIST while S32k344 is in lock step mode? 2. Is the following defines correct, I guessed by examining the code? #define BIST_MBIST_0 1U #define BIST_MBIST_1 2U #define BIST_MBIST_2 3U #define BIST_MBIST_3 4U #define BIST_MBIST_4 5U #define BIST_MBIST_5 6U #define BIST_MBIST_6 7U #define BIST_MBIST_7 8U #define BIST_MBIST_8 9U #define BIST_MBIST_9 10U #define BIST_MBIST_10 11U #define BIST_LBIST_0 0U the config data I used are as follows: static const BIST_CHANNEL_CONFIG_TYPE BistConfig[BIST_SAFETYBOOTCFG_NB] = { { (BIST_CHANNEL_TYPE)BIST_MBIST_0, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_1)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_1, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_2)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_2, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_3)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_3, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_4)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_4, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_5)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_5, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_6)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_6, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_7)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_7, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_8)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_8, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_9)) }, //#endif { (BIST_CHANNEL_TYPE)BIST_MBIST_9, (BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_10)) }, { (BIST_CHANNEL_TYPE)BIST_MBIST_10, (BIST_CONTROL_TYPE)(0x00100000U) }, { (BIST_CHANNEL_TYPE)BIST_LBIST_0, (BIST_CONTROL_TYPE)((0x00001108U) | BIST_LBIST_PTR_VAL(BIST_NIL)) } }; Re: S32k344 MBIST LBIST Hello, 1. Can I run LBIST MBIST while S32k344 is in lock step mode? Yes. The S32K344 lockstep architecture does not prevent execution of STCU2 LBIST/MBIST. The BIST mechanism is part of the device safety infrastructure and is designed to test logic and memories managed by STCU2. The S32K3 Safety Manual explicitly lists both lockstep and STCU2 LBIST/MBIST as safety mechanisms of the device. 2. Is the following defines correct, I guessed by examining the code? The numerical values are essentially correct for S32K344, but including MBIST_10 (HSE_ROMs) in the Safety Boot configuration is not required from a safety perspective, and the recommended path is to use the validated SPD configurations directly. Best regards, Peter Re: S32k344 MBIST LBIST Peter,   Thank you very much for replying. I have been stuck with this BIST test issues for few days now. I'm testing with S32k344 White board, code is build with green hills multi IDE rev 8.1. The safety boot BIST is not passing. I'm sure the max clock requirement is met for core and peripherals. I have core_clk at 160Mhz from external crystal 16Mhz and PLL, AIPS_PLAT_CLK is 80Mhz, AIPS_SLOW_CLK is 40Mhz, DCM_CLK as 40 MHz, LBIST_CLK is 40Mhz,  QSPI_MEM_CLK is 160Mhz. I have this error when unit reset from bist run, DES register has 0x00408175, few reserved bits get set, and FES register has 0x2000 (doesn't make sense). would you kindly answer following questions? 1. with all the clock signals mentioned above, should they be enabled through MC_CGM->MUX_0_DC_x registers? I'm getting conflicting information, currently they are enabled. 2. In the reference manual, STCU2 chapter, there is this "While running MBIST on EMAC time stamp memory, MC_CGM.MUX_9_DC_0[DIV] should be appropriately configured to ensure EMAC_CLK_TS should be at least 1.5 times the AIPS_SLOW_CLK frequency." does that mean I have to config configure the clock and enable it in the MC_CGM->MUX_9_DC_0 register? 3. If I want to see the example code S32_SPD_Demo in SW32K3_SPD_1.0.6_D2512 package, I guess I need to install latest NXP design studio, import the spd zip file as update site, and also the RTD package, is that right? 4. I believe MBIST 10 is HSE_RAMS, MBIST 11 is HSE_ROMS, please see the table below from SPD doc folder. MBIST BIST ID BIST Instance Name Reset Domain Safety Boot Safety Diagnostic 0 SYS0_RAMS Main ü ü 1 SYS1_RAMS Main ü ü 2 DMA_TCD_RAM Main ü ü 3 CM7_0_TOP Main ü ü 4 CM7_1_TOP Main ü ü 5 FLEX_CAN_RAMS Main ü ü 6 QSPI_PERI_RAMS Main ü ü 7 EMAC_TSN_RAM Main ü ü 8 EMAC_RAMS Main ü ü 9 b03_ETF_RAMS Main ü ü 10 HSE_RAMS Main ü ü 11 HSE_ROMS Main   ü Re: S32k344 MBIST LBIST An update to my problem, after I enabled bit 8 and 9 in the STCU_RUNSW_REG to use PLL, I'm consistently seeing DES register 0x11 and FES register of 0x10. The bist_get_exec_status(BIST_SAFETYBOOT_CFG) return value is NOT RUN (0x03). There is nothing in the BIST ERR_STAT register, none of the END flag is set. In the FCCU NCF_S0 register, bit 2 is set. It seems BIST didn't start, but I do see the reset. I captured the register setting by writing to flash in the other bank. Re: S32k344 MBIST LBIST Hello, the STCU self-test sequence is being entered and reaches the ST_DONE reset phase. However, the STCU also reports an unrecoverable fault (STCU_URF), which explains why the SAF BIST driver subsequently reports BIST_NORUN. The issue therefore appears to be an STCU execution/configuration failure rather than a case where BIST was never triggered. On S32K3, seeing both a destructive and functional reset indication simultaneously is often a sign that you are looking at a reset history, not necessarily the immediate reset source Since you are porting the SW, I would start with simply just MBIST only test to see if it pass sourced from PLL. Also I would double check the clock settings for the tests. Best regards, Peter Re: S32k344 MBIST LBIST I checked the all possible clocks, I believe they are correct. I also compared the config data in the register with values from NXP studio spd example project, they are also correct. One new information. After system come back from BIST reset, I see value 0x18 in DCMROD3 register. How do I resolve this error? Thanks. XRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.png Re: S32k344 MBIST LBIST Hello, On S32K344, RCCU reports lockstep mismatches, and when connected with a debugger, it is not uncommon to get RCCU-related faults that would never occur in standalone execution. In case you follow the setting from example, you are looking at full BIST. Example is tested and it is fully working by default. But your port reporting URF fault, which tells me not everything is identical. Looking at STCU documentation user can set pointer to tests. 54.9.4 STCU2 Configuration (CFG) petervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.png You can try shrinking tests first and the slowly add more tests. In MBIST and LBIST control registers you can set which test will be last: petervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.png By pointing to for example in CFG register you can execute single MBIST partition: petervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.png petervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.png Best regards, Peter Re: S32k344 MBIST LBIST I tried to run mbist sequentially, and also tried individual mbist test ID. The outcome is the same, no new status observed. Can you confirm the following SCU2 register settings for safety boot right before trigger is set? Thanks. XRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.png Re: S32k344 MBIST LBIST This is for people in the community who are struggling with implementing LBIST/MBIST in the S32k344 microcontroller. After days of no progress made, I was able to see the test pass. I did with custom porting of the SPD driver 1.06. The driver code works except the fault need to be configured to unrecoverable fault. The following are the clocks that need to be configured, if any one of them is not set up correctly, the test will fail with BIST_NORUN(0x03) status because test sequence runs concurrently, no other status is seen, no completion bits set. 1. Config FXOSC module CTRL register to use external oscillator or crystal, this is the only way to get 160MHz, max for S32k344. 2. Config PLLDIG module for the PLL circuit, make sure max frequency is the output by configuring rdiv, mfi, and odiv2 bits in the PLLDV register. 3. Switch in the PLL clock for core_clk and emac_clk by following the reference manual steps,  MC_CGM_MUX_x registers setting. 4. config MC_CGM->MUX_0 and MC_CGM->MUX_9 registers to get following clock signals.   AIPS_PLAT_CLK as 80 MHz   AIPS_SLOW_CLK as 40 MHz   HSE_CLK as 80 MHz   DCM_CLK as 40 MHz   LBIST_CLK as 40MHz   QSPI_MEM_CLK as 160MHz    EMAC_CLK as 80MHz     Note: DON'T SET BIT 8 AND 9 IN THE RUNSW REGISTER, THE TEST WILL FAIL IF THEY ARE SET. This is not done in the SPD driver code. I mention this because there is conflicting info in the reference manual.
記事全体を表示
DTM APIに関する質問 こんにちは、 MCUXpresso SDK v26.03.00の SDK_26_03_00_KW47-EVK\mcuxsdk\middleware\wireless\bluetooth\host\interface\hci_interface.h で宣言されたHci_LeEnhancedReceiverTestとHci_LeEnhancedTransmitterTest関数を KW47 MCU で使いたいです。これらのコマンドはサポートされていますか? 追加情報: これら 2 つの関数の宣言は、#if defined(gHciCompleteHciCmdSupport_d) && (gHciCompleteHciCmdSupport_d == TRUE) によって保護されています。このマクロを有効にすると、プロジェクトはエラーでビルドに失敗しました。 SDKでHci_LeEnhancedReceiverTestとHci_LeEnhancedTransmitterTestを探しましたが、宣言はhci_interface.hでしか見つかりませんでした。実装や他の参考文献は見つかりませんでした。 どなたか、これらのDTMコマンドがこのSDKリリースでKW47に対応しているか、また必要な実装の有効化や入手方法(または必要なファームウェア・ライブラリ・設定の場所)を教えていただけませんか?何かご助言いただければ大変ありがたいです。 よろしくお願いします。 Re: Question regarding the DTM API こんにちは、お元気でお過ごしでしょうか。 SDKではHci_LeEnhancedReceiverTestとHci_LeEnhancedTransmitterTestの両方がサポートされています。これらの関数はgHciCompleteHciCmdSupport_dガードによって制御されており、app_preinclude.hで有効にする必要があります。プロジェクトからのファイル: #define gHciCompleteHciCmdSupport_d  TRUE テストにはhci_bb_bm_cm33_core0プロジェクトを使用することをお勧めします。このサンプルはメインのCM33コア上で動作し、透過的なHCIブリッジとして機能します。 現在、SDKのサンプルを使ってテストしていますか?以前は、gHciCompleteHciCmdSupport_d マクロをどのように有効にしていましたか? hci_bb例をマクロを有効にしてフラッシュした後、 NXP Test Tool 12 を使ってHCIコマンドをデバイスに送信できます。HCI DTMコマンドの全セットにアクセスするには、最新のBLE HCIコマンドセットファイル(BLE HCI 5.0 x.x.x.xml)を読み込みます。 また、これらの投稿はNXPテストツールやDTMコマンドの使い方にも役立つかもしれません: トランスミッタ/レシーバテストコマンドを設定するBLE HCIアプリケーション この記事では、ユーザーがデバイスにシリアルコマンドを送信する方法を示す手順を紹介します。 Bluetooth LE HCI ブラックボックスクイックスタートガイド この記事では、ユーザーがシリアルコマンドを通じて無線機を制御できるようにする簡単なプロセスを説明しています。 よろしくお願いします、 ソフィア。 Re: Question regarding the DTM API こんにちは@Takuya_Tanakaさん これは、Test Tool 12が起動したときにすでに基板が接続されている場合や、他のアプリケーションがCOMポートを保持している場合に発生することがあります。ツールを再起動する前に、シリアル端末やデバッガを閉じて基板の電源を抜いてみることはできますか? よろしくお願いします、 ソフィア。 Re: Question regarding the DTM API こんにちは、 KW47-LOCをUSB経由でPCにコネクテッド状態でNXP Test Tool 12を開くと、以下のエラーが発生し、アプリケーションがクラッシュします。原因についてアドバイスいただけますか? Takuya_Tanaka_0-1789016520286.pngタクヤ_タナカ_0-1789016520286.png よろしくお願いします。
記事全体を表示
CircO2一酸化窒素錠剤レビュー:完全購入ガイド CircO2はAdvanced Bionutritionalsが製造する一酸化窒素サポートサプリメントです。多くの錠剤を水と一緒に飲み込むのとは異なり、CircO2は口の中で溶ける素早く溶ける錠剤(時にトローチとも呼ばれます)で提供されています。これがマーケットにある他のCircO2タブレットと差別化される理由の一つです。 CircO2酸素ブースターと循環サポートの主な考え方はシンプルです。体がより多くの一酸化窒素を生成するのを助け、血管をリラックスさせて広げることです。そうなると、血液(およびその酸素)が体内をより自由に流れることが可能になります。それはエネルギーの増加、手足の温かさ、そして日中の持久力の向上を意味するかもしれません。   Re: CircO2 Nitric Oxide Tablets Review: A Complete Buyer's Guide CircO2は、米国、カナダ、イギリス、オーストラリア、ニュージーランドでAdvanced Bionutritionalsが提供している一酸化窒素サポートサプリメントで、健康的な血行を促進することを目的としています。従来のサプリメントは水と一緒に飲み込むのに対し、 オリジナルCircO2 は口の中で溶ける速溶錠剤(トロール)です。この便利なフォーマットが、多くの他の循環サポートタブレットと差別化しています。 CircO2酸素ブースターと循環サポートの目的は、体内の自然な一酸化窒素生成をサポートすることです。一酸化窒素は血管を弛緩・拡張させる働きがあり、それによって血液と酸素が体全体に効率的に循環するようになる可能性がある。CircO2は、健康的な血流をサポートすることで、日々のエネルギー、スタミナ、血行促進に役立つ可能性があり、手足の温かさを感じさせる効果も期待できます。
記事全体を表示
Question regarding the DTM API Hello, I would like to use the Hci_LeEnhancedReceiverTest and Hci_LeEnhancedTransmitterTest functions declared in SDK_26_03_00_KW47-EVK\mcuxsdk\middleware\wireless\bluetooth\host\interface\hci_interface.h from MCUXpresso SDK v26.03.00 on a KW47 MCU. Are these commands supported? Additional information: The declarations for these two functions are guarded by: #if defined(gHciCompleteHciCmdSupport_d) && (gHciCompleteHciCmdSupport_d == TRUE) When I enabled that macro, the project failed to build with errors. I searched the SDK for Hci_LeEnhancedReceiverTest and Hci_LeEnhancedTransmitterTest and only found the declarations in hci_interface.h; I could not find any implementation or other references. Could someone please confirm whether these DTM commands are supported for KW47 in this SDK release, and advise how to enable or obtain the required implementation (or point me to any necessary firmware/library/configuration)? Any guidance would be greatly appreciated. Thank you. Re: Question regarding the DTM API Hello, hope you are doing well. Both Hci_LeEnhancedReceiverTest and Hci_LeEnhancedTransmitterTest are supported in the SDK. These functions are gated behind the gHciCompleteHciCmdSupport_d guard and need to be enabled in the app_preinclude.h file from your project: #define gHciCompleteHciCmdSupport_d  TRUE I would recommend using the hci_bb_bm_cm33_core0 project for testing, this example runs on the main CM33 core and acts as a transparent HCI bridge. Are you currently testing with any example from the SDK? How were you enabling the gHciCompleteHciCmdSupport_d macro previously? Once the hci_bb example is flashed with the macro enabled, you can use NXP Test Tool 12 to send HCI commands to the device. To access the full set of HCI DTM commands, load the latest BLE HCI command set file (BLE HCI 5.0 x.x.x.xml). Also, these posts could be helpful for navigating the NXP Test Tool and DTM commands: BLE HCI Application to set transmitter/receiver test commands This article provides the steps to show how user could send serial commands to the device. Bluetooth LE HCI Black Box Quick Start Guide This article describes a simple process for enabling the user controls the radio through serial commands. Best regards, Sofia. Re: Question regarding the DTM API Hi @Takuya_Tanaka , this sometimes happens when the board is already connected when Test Tool 12 opens, or if another application is holding the COM port. Could you try closing any serial terminals or debuggers and unplugging the board before reopening the tool? Best regards, Sofia. Re: Question regarding the DTM API Hello, When I open NXP Test Tool 12 while the KW47-LOC is connected to the PC via USB, the following error occurs and the application crashes. Could you please advise on the cause? Takuya_Tanaka_0-1789016520286.pngTakuya_Tanaka_0-1789016520286.png Thank you.
記事全体を表示
关于 DTM API 的问题 你好, 我想在 KW47 MCU 上使用 MCUXpresso SDK v26.03.00 中的 SDK_26_03_00_KW47-EVK\mcuxsdk\中间件\wireless\bluetooth\host\interface\hci_interface.h 中声明的 Hci_LeEnhancedReceiverTest 和 Hci_LeEnhancedTransmitterTest 函数。这些命令是否受支持? 其他信息: 这两个函数的声明由以下语句保护:#if defined(gHciCompleteHciCmdSupport_d) && (gHciCompleteHciCmdSupport_d == TRUE) 当我启用该宏时,项目构建失败并出现错误。 我在 SDK 中搜索了 Hci_LeEnhancedReceiverTest 和 Hci_LeEnhancedTransmitterTest,只在 hci_interface.h 中找到了它们的声明;我找不到任何实现或其他参考资料。 请问有人可以确认此 SDK 版本是否支持 KW47 的这些 DTM 命令吗?以及如何启用或获取所需的实现(或者指出任何必要的固件/库/配置)?任何指导都将不胜感激。 谢谢! Re: Question regarding the DTM API 你好,希望你一切都好。 SDK 同时支持 Hci_LeEnhancedReceiverTest 和 Hci_LeEnhancedTransmitterTest。这些功能受 gHciCompleteHciCmdSupport_d 保护机制的限制,需要在 app_preinclude.h 中启用。项目文件: #define gHciCompleteHciCmdSupport_d  TRUE 我建议使用 hci_bb_bm_cm33_core0 项目进行测试,该示例在主 CM33 内核上运行,并充当透明 HCI 桥接器。 您目前是否正在使用 SDK 中的任何示例进行测试?之前您是如何启用 gHciCompleteHciCmdSupport_d 宏的? 将 hci_bb 示例烧录到设备并启用宏后,即可使用NXP Test Tool 12向设备发送 HCI 命令。要访问完整的 HCI DTM 命令集,请加载最新的 BLE HCI 命令集文件(BLE HCI 5.0 x.x.x.xml)。 此外,以下帖子可能有助于您了解 NXP 测试工具和 DTM 命令: 用于设置发射器/接收器测试命令的 BLE HCI 应用程序 本文提供了用户如何向设备发送串口命令的步骤。 蓝牙低功耗人机交互黑盒快速入门指南 本文介绍了一种使用户能够通过串行命令控制收音机的简单方法。 此致, 索菲亚。 Re: Question regarding the DTM API 嗨@Takuya_Tanaka , 当测试工具 12 打开时,如果电路板已经连接,或者另一个应用程序占用 COM 端口,有时会发生这种情况。请尝试关闭所有串口终端或调试器,并拔下开发板,然后再重新打开该工具? 此致, 索菲亚。 Re: Question regarding the DTM API 你好, 当 KW47-LOC 通过 USB 连接到 PC 时,打开 NXP Test Tool 12 会出现以下错误,应用程序崩溃。请问您能否告知一下原因? Takuya_Tanaka_0-1789016520286.png拓也_田中_0-1789016520286.png 谢谢!
記事全体を表示
i.MX8M Plus での U-Boot を使用した SWUpdate A/B OTA こんにちは、NXP チームの皆様、 i.MX8M Plus LPDDR4 EVK上でOTAを以下で実装しています: ヨクト・ライノーズ Linux 6.18.20 U-Boot 2026.04 SWアップデート 2026.05.1 現在の進捗状況 SWUpdateはYoctoにうまく統合されました。 .swu ファイルの生成に成功しましたパッケージ. SWUpdateパッケージのインストールは動作しています。 ハードウェアの互換性チェックは正常に動作しています。 SWUpdateを使用して/etc/ota-versionを正常に更新しました。 rawfileハンドラーは正常に動作しています。 今度は、自動ロールバックと署名付きアップデートを備えた、本番環境レベルのA/B OTAを実装したいと考えています。 質問 以下について推奨されるNXPのアプローチについて教えていただけますか: A/Bルートファイルシステムのパーティションレイアウト。 U-Bootのブート回数/ブート制限に基づくロールバック。 SWUpdateとU-Boot環境の統合。 fw_env.config / libubootenv の設定を正しく行ってください。 署名済み .swuパッケージの検証。 ロールバック防止/バージョン保護機能。 セキュアブートとソフトウェアアップデートの統合。 現在、OTAアップデートは完了していますが、SWUpdateは次のように報告しています。 Cannot initialize environment from /etc/fw_env.config Cannot persistently store update state NXPのリファレンスデザイン、アプリケーションノート、またはi.MX8M Plus上の SWUpdate + A/B + U-Bootロールバック+署名済みOTA の例はありますか? ありがとうございます。 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Yocto Project Re: SWUpdate A/B OTA with U-Boot on i.MX8M Plus こんにちは、 EVK A/Bテスト用の標準アップデートフレームワークは、標準では提供しておりません。A/Bアップデート、ロールバックポリシー、および電源障害時のセーフブート選択は、U-Boot + SWUpdateを使用して実装する必要のあるシステムレベルの機能です。最も近い参考文献は以下のとおりです。 AN12900 - CAAMやMender、またはSWUpdateを用いたLinux向けの安全なOTAプロトタイプ。 AN13872 - SWUpdateの有効化。 meta-swupdate-imx - SWUpdateを使ったNXP Yoctoレイヤー。 よろしくお願いいたします。 Re: SWUpdate A/B OTA with U-Boot on i.MX8M Plus こんにちは、 vp1さん、 正確な答えは持っていませんが、トリゾンが現在はどのiもサポートしていますことを知っておいてほしいです。MX SoC。世界中の多くの重要なi.MX8MPlus製品(主にToradex SoM)に搭載されています。非常に信頼性の高いOTA機能があり(デフォルトはOSTreeですが変更可能です) 標準装備のセキュアブート、アンチロールバック、脆弱性管理(EU CRA準拠用)などが含まれています。 OSは無料のオープンソースです。ご希望であれば喜んでお手伝いいたします。i.MX8M Plus LPDDR4 EVKやご自社のハードウェアで試してみたい方は、ぜひご連絡ください。 www.torizon.io  宣伝になってしまってすみません。私はTorizonに勤めていて、これは関連性があると思ったのでお伝えしました。
記事全体を表示
IMX95データシート こんにちは、 レジスタマップやペリフェラルなどを含むIMX95のデータシートをどうやって入手できますか? 敬具 アルトゥール Re: IMX95 datasheet ありがとうございます。良い一日をお過ごしください。 よろしくお願いいたします。 アルトゥール Re: IMX95 datasheet データシート単独では完全なレジスタマップやペリフェラルの説明は含まれていません。 そのためには、 https://www.nxp.com/docs/en/reference-manual/IMX95RM.pdfが必要です。 よろしくお願いします。
記事全体を表示
i.MXRT1176 上的 WiFi (SDIO) 断开连接与 Qt/QML UI 的复杂性相关 大家好, 我们目前正在研发一款具有屏幕镜像功能的仪表盘。在我们的架构中,配套的移动应用程序通过 Wi-Fi 将帧流传输到我们的主机 MCU。数据通过 SDIO 连接的 Wi-Fi 模块接收,使用 FFmpeg 解码,并在显示屏上呈现。我们的网络协议栈采用 lwIP,集群 HMI 的 MCU 采用 Qt。 系统规格: 主机MCU: NXP i.MX RT1176 Wi-Fi 模块: u-blox MAYA-W161(SDIO 接口) 显示屏: LCDIFV2(并行RGB接口) 操作系统: FreeRTOS 问题:我们遇到了间歇性的 Wi-Fi 断开连接问题,这似乎与图形负载直接相关。只有当显示器运行资源密集型 GUI(包含大量元素和动画)时,才会出现 Wi-Fi 掉线的情况。切换到轻量级用户界面后,Wi-Fi 连接依然非常稳定。 请指导我们如何解决这个问题。 此致, 维格内什 Re: WiFi (SDIO) disconnects on i.MXRT1176 correlated with Qt/QML UI complexity 你好@Vignesh_VInayak ,希望你一切都好。 由于图像处理需要较高的 CPU 使用率和较大的内存占用,因此对于 GUI 相关应用程序,两个核心中的一个将是专用的,用于管理界面。请问您的实现方案是否使用了两个核心?每个线程是否有专用的堆栈空间? 此外,能否请您提供已启用调试日志记录的 Wi-Fi 协议栈日志,以便我们进一步分析 Wi-Fi 线程的状态?要启用调试日志,请在wifi_config.h 文件中启用“CONFIG_WLCMGR_DEBUG”和“CONFIG_WIFI_SDIO_DEBUG”宏。头文件?
記事全体を表示