Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
LX2160 定制板上模块的掉电 在我们基于 LX2160 的定制主板中,没有 SPDT 开关可用于通过软件控制电源轨。 不过,我们的目标是降低 USB、WiFi、BT、PoE 和蜂窝模块的功耗。 我方提出了当前的意见和做法: 1.WiFi、BT 和蜂窝模块通过 PCIe 连接。 我们观察到,这些功能可以通过 SerDes 配置禁用。 通过将 SerDes 协议配置为 S2 = 9,所有相应的通道都被配置为 SGMII,而不是 PCIe,从而有效禁用 PCIe 连接的模块。 2.USB 模块似乎没有类似的基于 SerDes 的禁用选项。 对于 USB,我们目前正在尝试使用以下方法基于 GPIO 禁用: USB1_MUX_EN USB2_MUX_EN RCW 配置已经过验证,相应引脚已确认配置为 GPIO。 然而,即使驱动这些 GPIO 进行禁用操作,也无法观察到预期的功耗降低。 3.PoE 模块(AQR113c 用于以太网) 请就可能需要修改的其他文件或配置提出意见/建议,以便完全禁用和降低功耗。 Re: Power down of modules on LX2160 custom board 闲置时是否可以对 USB、WiFi、BT、PoE 和蜂窝模块掉电?还是产品的配置不同,这些接口根本不会被使用?   请注意,即使接口未使用,仍需为其电源轨供电。LX2160A 不支持从其轨道上拔下电源。 如果断开接口设备的电源,则需要确保 LX2160A I/O 不会发生泄漏   你能做什么? 1) 内核消耗最大功率。SDK 支持在不使用 CPU 时降低其频率,以节省功耗。 Refer 电源管理单元 - [Layerscape Software Development Kit User Guide | NXP 半导体|https://docs.nxp.com/bundle/GUID-487B2E69-BB19-42CB-AC38-7EF18C0FE3AE/page/GUID-2E8E375E-7DCD-4671-B0CF-D4713D8BB9EB.html] 2) 未使用的 IP 可通过 DEVDISR 进行时钟门控。不过,一旦禁用,就无法再启用。 3) 如果 SerDes 通道未使用,可将其断电。参见第 26.10.2 节LX2160A 参考手册中未使用的车道 4) 当通过 RCW 设置选择 SerDes 协议时,它还会根据协议要求配置与该协议相关的寄存器。因此,重新配置车道并不是正确的方法。 5) 从原理图片段来看,您已将 SerDes#2 配置为 SRDS_PRTCL_S2 =3,但只使用了单通道。 你可以使用 SRDS_PRTCL_S2=11 并按照 (4) 对未使用的通道进行掉电。类似的机制也可应用于其他 SerDes。 6) 如果 PCIe 未使用 Gen3,则 PLLF 可以断电。同样,未使用的 PLL 也可以断电 谢谢! Re: Power down of modules on LX2160 custom board 如何测量耗电量? 请注意,对于 SerDes 通道,您需要检查为 SerDes I/O 供电的 0.9V 和 1.8V 电源通道。 对于 DFS,请检查 VDD(0.8V)电源的功耗。 既然这是你的定制电路板,你有电源轨的功率测量电路吗? 如果你在自定义主板的输入上进行衡量,我不确定你会看到多大的差异。这还取决于测量的最小计数。 为进行检查,可在较低配置下运行核心/平台。查看设计检查表,其中有 VDD 轨功耗图表。 Re: Power down of modules on LX2160 custom board 你好, 感谢您的及时回复。我附上了我对您分享的有关功率优化建议的观察和测试结果。请查看它们,并与我们联系是否建议进行其他检查或配置。 要点 说明 CPU 热插拔/频率缩放观测 我们使用以下方法测试了 CPU 热插拔、CPU 频率缩放和不同的 CPU 模式: lscpu | grep line 观察结果: On-line CPU(s): 9 Off-line CPU(s): 0-8,10-15 不过,在这些情况下都没有观察到明显的功耗降低。 通过 DEVDISR 进行未使用的 IP 时钟门控 我们知道未使用的 IP 可以通过 devDisr 进行时钟门控。但是,由于禁用这些区块如果不重置就不可逆转,我们认为这种方法风险很高,因此不建议在我们当前的测试中使用这种方法。 未使用的 SerDes 通道掉电 寄存器写入成功。 不过,迄今为止还没有观察到明显的功耗降低。 SerDes 协议配置优化 PLL 掉电未使用的 Gen3 PCIe 应用配置: SRDS_REFCLKF_DIS_S2 = 1 SRDS_PRTCL_S2 = 11 SRDS_INTRA_REF_CLK_S2 = 0 SRDS_PLL_PD_PLL3 = 1 Re: Power down of modules on LX2160 custom board 你好, 我们正在使用这些连接到 BMC 的电流传感器来测量功耗,其中 VCC_12V 感应定制板的输入,而 VCC_0V8 正在感应恩智浦 (LX2160A) 芯片组的输入。 同样 在闪存时(这些以 VCC_12V 即总功耗测量)-使用 CodeWarrior(可能会下降约 10W)和 -使用 (echo mem > /sys/power /state & echo freeze > /state sys/power/state)(可能会下降约 6W)(但在此之下,由于不存在用户交互,因此不建议将其用于我们的测试), Re: Power down of modules on LX2160 custom board 与内部团队讨论,我们我们已经回答了 您的与配置相关的问题。 在 12V 输入电压下,10 瓦的功耗在我们看来是相当合理的。 我们对于 LX2160A 而言,这是很合理的。 请 请分享您的目标,您的 示意图和配置、日志和应用。我们将检查还能实现哪些功能。
View full article
ENEDC(S32K3)に関する質問 こんにちはチーム K3のENEDCについてお伺いしてもよろしいでしょうか? 顧客は RTD 付きの MCAL を使用します。 しかし、ENEDC に関する RTD の情報は見つかりませんでした。 MSCM からは、ISR コア割り当て構成のみが表示されます。 RTD(MCAL) を使用して ENEDC を有効にする方法を教えてください。 ありがとう。 SAFETY_SW 出典: 直接顧客 出典: NXP社内 Re: Question about ENEDC(S32K3) ご説明ありがとうございます! Re: Question about ENEDC(S32K3) こんにちは@Luke_Chun 、 RM の説明から私が理解したところによると、ガスケットから FCCU へのレポート パスをアクティブにしたい場合は、これらのビットを有効にする必要があります。 このため、sCheck はこれらのビットを有効にします。そうしないと、レポート パスをテストできなくなります。 これは必須の設定であること、そしておそらく多くの K3 お客様がこの設定に気付いていない (関連する FCCU チャネルを有効にするだけで、これらのビットは有効にしない) ことには同意します。 敬具、 ラドスラフ Re: Question about ENEDC(S32K3) こんにちは@RadoslavB ご説明ありがとうございます。しかし、ENEDC の提案についてはよく分かりません。 私の理解を確認していただけますか? ENEDC では「TEST」のみを使用する必要がありますか? または セーフティアプリケーションを有効にする必要はありますか?(たとえば、ユーザーが eDMA 読み取りのチェックを使用したい場合は、ENEDC のビット 2 を FCCU 構成で手動で「設定」します。) ありがとう。 Re: Question about ENEDC(S32K3) こんにちは@Luke_Chun 、 SAF で MSCM ペリフェラルレジスタを構成する要求はありません。 sCheck テストは、関連する EDC ガスケットの潜在的な障害をテストするときにこれらのレジスタを内部的に有効にしますが、アプリケーションに対してこれらのビットを有効にすることはどの NXP SW でもカバーされていません。 したがって、お客様はこれらのレジスタを手動で有効にする必要があります。 S32K5 の場合、これらのレジスタをイネーブルメントの sBoot チェックが定義されていますが、繰り返しますが、私の知る限り、構成はどの NXP SW の範囲にも含まれていません。 敬具、 ラドスラフ Re: Question about ENEDC(S32K3) こんにちは@Luke_Chun 、 セーフティドライバーに関連する問題はサポートしていません。彼らにサポートを依頼するには、投稿で「RTD」ラベルを削除し、「Safety_SW」ラベルのみを残す必要があります。または、Safety_SW のみに新しい投稿を作成することもできます。 よろしくお願いいたします。 ダン Re: Question about ENEDC(S32K3) こんにちは@DanNguyenDuy 更新情報をありがとうございます。 セーフティドライブも確認しましたが、どれがENEDCに関係するのかわかりませんでした... どうやって確認すればいいのでしょうか? よろしくお願いします。 Re: Question about ENEDC(S32K3) こんにちは@Luke_Chun 、 RTD ドライバーは ENEDC の構成ではサポートされていません。私の観点からすると、このレジスタは FCCU に関連しているため、セーフティドライバのモジュールでこの機能を確認する必要があります。 よろしくお願いいたします。 ダン Re: Question about ENEDC(S32K3) K3 HW セーフティマニュアルからの抜粋を追加します: したがって、現時点ではこの AoU に従うかどうかはお客様の責任です。構成とチェックは現時点では NXP ではサポートされていません。 敬具、 ラドスラフ Re: Question about ENEDC(S32K3) こんにちは@Luke_Chun 、 INTM ペリフェラルの構成がサポートされており、RTD プラットフォーム プラグイン - 割り込みモニターで見つけることができます。 SAF 側では、sCheck は INTM 潜在的障害テストを備えていますが、sBoot は INTM 構成レジスタをチェックしません。私の意見では、割り込みがセーフティ関連の障害の検出/反応メカニズムである場合、SM1.INT_MON はアクティブである必要があり、顧客は SM4.INT_CHK を満たす必要があり、sBoot はそのような構成を再確認する必要があります。 敬具、 ラドスラフ Re: Question about ENEDC(S32K3) こんにちは@RadoslavB もう1つ質問してもよろしいでしょうか? INTM_MMはどうでしょうか? これは ENEDC でも同じですか? (RTD または SAF は INTM_MM 有効構成をサポートしていません。ユーザーはユーザー コードによって INTM_MM の構成を行う必要があります。 ありがとう。  
View full article
Cortex-M33 上的 i.mx93 LPSPI + eDMA 问题 我使用的是 Tria i.MX9332(B1 硅)SMARC 模块,并尝试在 Cortex-M33 上使用带有 eDMA 的 LPSPI6,但无法正常工作。 开发环境 VS 代码 1.109.0 用于 VS 代码扩展的 MCUXpresso 26.1.56 SDK 25.09.00 硬件 在定制载板上试用 SM2S-IMX93 通过 SPI(LPSPI6)连接带有ILI9341控制器的 LCD 现状 使用不带 DMA 的 LPSPI6 时,显示正常。 我试图切换到LPSPI6 + eDMA以提高吞吐量,但无法收到完成通知。 问题 基于 DMA 的传输似乎开始了,但我从未在传输结束时收到 LPSPI DMA 完成回调。 详细信息和相关代码/配置见附件。 有人能指出我可能遗漏了什么,或者为什么没有触发信号吗? Re: i.mx93 LPSPI + eDMA problem on Cortex-M33 感谢您提供的示例代码。回顾范例让我明白了这一点。 Re: i.mx93 LPSPI + eDMA problem on Cortex-M33 你好@albi84 请参考附件中的补丁文件配置 LPDPI 与 EDMA B.R Re: i.mx93 LPSPI + eDMA problem on Cortex-M33 你好 能否请您分享带有 eDMA 的 LPSPI 的骨架? 谢谢。 Re: i.mx93 LPSPI + eDMA problem on Cortex-M33 这不是一个骨架,而是我使用的实际代码。这有帮助吗?
View full article
在线纠错码:它的作用以及如何实现 在线纠错码 (Inline ECC) 是一种能够实时检测并纠正内存或存储设备中发生的位错误的机制。在i.MX 8M Plus等 DDR 控制器上启用在线纠错码功能会降低 DDR 访问性能,但由于 ECC 区域仅占用大约八分之一的 DDR 容量,因此无需额外添加专用内存来存储 ECC 码(从而降低了物料清单成本)。 本文解释了内联 ECC 的功能,并介绍了如何实现它。   1. i.MX 8M Plus 在线 ECC 功能   i.MX 8M Plus DDR 控制器支持在线 ECC,可保护系统免受软错误(例如由 α 射线、中子等引起的 DRAM 位翻转)的影响。它为每 64 位数据存储 8 位 ECC(纠错码),从而能够纠正单比特错误并检测双比特错误。 由于没有专门用于存储 ECC 的内存,因此大约 1/8 的 DDR 容量被用作 ECC 区域。 由于 32 位数据总线在数据和 ECC 之间共享,启用内联 ECC 功能会降低 DDR 访问性能。   1.1.单比特纠错 (SEC) SEC 是 DDR 控制器的一项功能,用于检测单比特错误并将其纠正为正确的值。 图1 SEC示意图   1.2.双比特错误检测 (DED) DED 是 DDR 控制器的一项功能,用于检测双比特错误。 图2 DED概念图 笔记: 实际上,SEC 和 DED 是在 64 字节对齐的数据区(加上 8 字节的 ECC)中检测的,而不是在 8 字节中检测的。   2.内联 ECC 内存映射(概要)   根据 DDR 容量的不同,设置内联 ECC 内存映射的方法也会有所不同。   2.1.DDR密度是2的幂(二进制对齐密度) 例如,对于 1、2、4、8、16GB 的情况, DDR的低地址7/8用作数据区,高地址1/8用作ECC区。ECC区通常不可访问。 数据区域最多分为八个区域:区域 0 至 6 和其他区域。每个区域都可以启用或禁用 ECC 功能。 区域 0 至 6 的容量相同,分别设置为 DDR 容量的 1/8、1/16、1/32 或 1/64。其余区域均为其他区域。 以下是当区域 0 到 6 的容量设置为 1/8 时的内存映射。在这种情况下,没有其他区域。 图 3内存映射示例 (1/8) 下面显示的是当区域 0 到 6 的容量设置为 1/16 时的内存映射。 图 4内存映射示例 (1/16) 2.2.非 2 的幂次方的 DDR 密度(非二进制对齐密度) 例如,对于 3、6 或 12 GB 的情况(i.MX 8M Plus LPDDR4 EVK 为 6 GB,因此这适用于这种情况)。 将整个 DDR 分成三份,每份的容量是 2 的幂。 3GB内存,1GB x 3 6GB内存,2GB x 3 12GB版本,4GB x 3 对于分为三部分的低地址区域,进行如下设置:2.1. 当 DDR 容量为 2 的幂时。 三段式地址划分中,上两个地址区域的设置与下地址区域的设置相同。 下面显示的是设置为 1/8 时的内存映射。 图 5 DDR 容量不是 2 的幂(1/8)时的内存映射示例 3.使用 DDR 寄存器编程辅助工具进行设置   使用DDR 寄存器编程辅助工具(DDR RPA) 配置内联 ECC。 笔记: 请准备一个 DDR RPA,该 RPA 可以运行禁用内联 ECC 的 DDR 压力测试(并且还可以验证其是否可以运行 u-boot)。 由于存在漏洞,i.MX8MP LPDDR4/DDR4 RPA v6 或更早版本无法正常工作内联 ECC。请使用 v7 或更高版本。除非有特殊情况,否则请使用最新版本的 DDR RPA。(截至 2024 年 9 月,最新版本为 v9。) Linux BSP 的 U-Boot 中包含的 i.MX 8M Plus EVK 的lpddr4_timing.c 文件。以及ddr4_timing.c虽然乍一看似乎可以正常工作,因为它包含了定义 CONFIG_IMX8M_DRAM_INLINE_ECC ,但内联 ECC 设置存在问题,无法正常工作。即使您使用的是 EVK 进行测试,也请使用 DDR RPA 和 DDR Tool 生成 lpddr4_timing.c/ddr4_timing.c 文件。 3.1.启用在线 ECC 在 DDR RPA 寄存器配置表中,将内联 ECC 项设置为启用。   3.2.内存映射   3.2.1.DDR密度是2的幂(二进制对齐密度) 如果 DDR 容量是 2 的幂,请使用 ECC_Config_BinaryAligned 表。 指定区域 0 至 6 的容量。(1/8、1/16、1/32 或 1/64) 启用或禁用 0 至 6 区及其他区域的 ECC(受保护或未受保护)。 这是区域 0 到 6 的容量设置为 1/8 时的示例。 图 6 DDR RPA 设置 (1/8) 这是一个将 0 到 6 区的容量设置为 1/16 的示例。 图 7 DDR RPA 设置 (1/16) 3.2.2.非 2 的幂次方的 DDR 密度(非二进制对齐密度) 如果 DDR 容量不是 2 的幂,请使用 ECC_Config_nonBinaryAligned 表(i.MX 8M Plus LPDDR4 EVK 就是这种情况,容量为 6GB)。 指定区域 0 至 6 的容量。(1/8、1/16、1/32 或 1/64) ECC 启用或禁用内存区域 0 中的区域 0 到 6 以及其他区域(受保护或未受保护)的 ECC。 ECC 内存区域 1/2 将自动设置为与 ECC 内存区域 0 相同的设置。 这是区域 0 到 6 的容量设置为 1/8 时的示例。 图 8 DDR RPA 设置 (1/8) 这是一个将 0 到 6 区的容量设置为 1/32 的示例。 图 9 DDR RPA 设置 (1/32) 4.使用 DDR 工具进行测试并生成 lpddr4_timing.c/ddr4_timing.c 文件   您可以使用 DDR 工具来检查 DDR RPA 中所做的设置的运行情况。 如果 DDR 压力测试通过,则生成 lpddr4_timing.c/ddr4_timing.c 以合并到 U-Boot 中。   5. U-Boot 中的内联 ECC 实现   5.1.替换 lpddr4_timing.c/ddr4_timing.c lpddr4_timing.c 或者将 ddr4_timing.c 替换为 DDR RPA 和 DDR Tool 生成的文件。 uboot-imx/board/freescale/imx8mp_evk/lpddr4_timing.c uboot-imx/board/freescale/imx8mp_evk/ddr4_timing.c   5.2.添加配置 将 CONFIG_IMX8M_DRAM_INLINE_ECC=y 添加到您的 U-Boot 配置文件中。 将清单 1添加到 uboot-imx/configs/imx8mp_evk_defconfig CONFIG_IMX8M_DRAM_INLINE_ECC=y 笔记: U-Boot 配置文件 imx8mp_evk_inline_ecc_defconfig 是在 Linux BSP 5.4 中添加的,但由于维护不当,已被弃用。使用 EVK 进行测试时,更安全的做法是将配置添加到 imx8mp_evk_defconfig 中并使用它。 5.3.更改Linux保留区域¶ 软件禁止访问 ECC 区域。因此,设备树会动态修改,以便 Linux 内核(以及其他系统软件)将 ECC 区域视为保留区域。默认值硬编码为与 EVK 的 DDR 容量相匹配(LPDDR4 为 6GB,DDR4 为 4GB),因此如果 DDR 容量与 EVK 的容量不同,则必须修改代码。 使用uboot-imx/board/freescale/imx8mp_evk/imx8mp_evk.c中的函数 ft_board_setup 来更改 ECC 区域,使其与实际 DDR 容量相匹配。例如,对于 DDR4,ECC 区域的起始地址和大小是硬编码的,假定 DDR 容量为 4GB。 列表 2: DDR4 容量硬编码为 4GB phys_addr_t ecc_start = 0x120000000; size_t ecc_size = 0x20000000; 如果实际 DDR 容量为 2GB,则从物理地址 0x40000000 到 0xc0000000 的 1/8 (256MB) 高地址保留为 ECC 区域。 示例 3 :将 DDR 内存容量更改为 2GB phys_addr_t ecc_start = 0xb0000000; size_t ecc_size = 0x10000000; imx8mp_evk.c 如果您不使用它,则需要添加与 ft_board_setup 函数等效的处理。   5.4.搬迁支持 如果 DDR 容量为 2GB 或更小,且未安装 OPTEE,U-Boot 会尝试重定位到 DDR 的最高地址,但由于该地址与 ECC 区域重叠,因此会在重定位过程中卡住。为避免这种情况,请添加 imx8mp_evk.h 文件。将 ECC 区域容量从 DDR 容量定义 PHYS_SDRAM_SIZE 中减少 (1/8)。 清单 4 uboot-imx/include/configs/imx8mp_evk.h -#define PHYS_SDRAM_SIZE 0x80000000 +#define PHYS_SDRAM_SIZE 0x70000000   5.5.排除对 ECC 区域的访问处理 如果 U-Boot 中还有其他代码访问了 ECC 区域,则需要排除对 ECC 区域的访问。例如,如果内存测试访问了整个 DDR 区域,则需要修改该测试,使其不再访问 ECC 区域。 参考: https ://github.com/nxp-imx/uboot-imx/blob/lf-6.1.55-2.2.0/configs/imx8mp_evk_defconfig#L10-L11   6. Linux 系统运行检查   6.1.查看启动日志 确保在 Linux 启动时已安装 EDAC 驱动程序。(EDAC = 错误检测和纠正)i.MX 8M Plus 的 EDAC 驱动程序位于linux-imx/drivers/edac/synopsys_edac.c 。 清单 5检查启动日志 root@imx8mp-lpddr4-evk:~# dmesg | grep EDAC [ 0.116733] EDAC MC: Ver: 3.0.0 [ 1.874689] EDAC MC0: Giving out device to module 1 controller synps_ddr_controller: DEV synps_edac (INTERRUPT)   6.2.检查内存映射 使用命令 cat /proc/iomem 确认 ECC 区域已按照5.3 节“更改 Linux 保留区域”中的配置设置为保留。以下是 i.MX 8M Plus LPDDR4 EVK(DDR 容量 6GB)的示例。 列表 6检查内存映射 root@imx8mp-lpddr4-evk:~# cat /proc/iomem | grep reserved ... b0000000-bfffffff : reserved ... 130000000-13fffffff : reserved ... 1b0000000-1bfffffff : reserved   6.3.检查何时发生 ECC 错误 根据应用说明AN13566 - i.MX 8 系列上的 ECC ,i.MX 8M Plus 中的 DDR 控制器没有故意生成 ECC 错误的功能。 3.2.9通过软件注入ECC错误 ECC 错误注入是系统级软件验证的一个有用的可选功能。与边带 ECC 不同,它没有专门的硬件支持。但是,可以通过软件注入错误,方法是通过“ECC_REGION_PARITY_LOCK”寄存器解锁 ECC 区域并覆盖 ECC 奇偶校验位。当从受保护的内存区域读取相应的地址时,根据引入的错误类型,会产生可纠正的或不可纠正的 ECC 错误。 注意:DDR 控制器不支持 ECC 数据中毒。参考手册将进行更新,移除此功能。 因此,我们解锁ECC区域,并从内核层面修改ECC区域以模拟ECC错误并进行测试。基本思路如下: 将 8 字节值 0xffffffff_ffffffff 写入 DataAddr。DDRC 向 DDR 写入数据的同时,还会写入 1 字节的 ECC 纠错码。 解锁 ECC 区域,允许核心访问 ECC 区域。 获取与 DataAddr 对应的 ECC 字节的地址,并读取 ECC 的一个字节。 将反转后的值 0xffffffff_fffffffe 写入 DataAddr。同时更新 ECC 1 字节。 ECC 1 字节,ECC 读取于 3。将字节值写回。 锁定 ECC 区域,禁止从核心访问 ECC 区域。 读取 DataAddr 的值。此时,由于 ECC 不一致,单比特纠错被激活,并读取纠错后的 8 字节值 0xffffffff_ffffffff。同时,内核也会收到一个可纠正错误中断通知。 笔记: 由于这涉及到访问 DDR,因此必须在非缓存区域执行测试。 图 10单比特纠错 (SEC) 测试方法¶   双比特错误检测 (DED) 调试也可以用同样的方法进行。   7.参考资料 应用说明: AN13566 - i.MX 8 系列的 ECC 应用说明:AN13616 - 验证 i.MX 8 直列式 ECC 引擎功能(请联系您的 NXP 代表以获取此文档) i.MX 8M 系列 DDR 工具发布 - NXP 社区 i.MX 8M Plus DDR寄存器编程辅助工具 (RPA) - NXP社区 8.注意 本文档是使用恩智浦产品的参考指南。 有关正式规格,请参阅产品手册和应用说明。 实际操作可能因各种条件(例如所使用的软件版本)的不同而与所述内容有所不同。 并非所有功能都已验证,因此请务必验证和测试产品,以确保其符合您的预期用途。 =========================​ 我们目前无法 回复 此帖子“ 评论”部分的评论。 对于由此造成的不便,我们深表歉意。如有任何疑问, 请 参考“ 如何就 技术问题 联系 NXP ( 日语 博客 ) ” 。 (如果您已经是 恩智浦的 分销商或 与 恩智浦 有业务往来 ,您可以直接联系负责人。 ) 在线纠错码 (Inline ECC) 是一种能够实时检测并纠正内存或存储设备中发生的位错误的机制。在i.MX 8M Plus等 DDR 控制器上启用在线纠错码功能会降低 DDR 访问性能,但由于 ECC 区域仅占用大约八分之一的 DDR 容量,因此无需额外添加专用内存来存储 ECC 码(从而降低了物料清单成本)。 本文解释了内联 ECC 的功能,并介绍了如何实现它。 i.MX 处理器 日本博客
View full article
eIQ 时间序列工作室入门指南 本实验将指导您如何使用 eIQ 时间序列工作室(TSS),这是一款集成于 eIQ 工具包 的全新工具,用于为嵌入式微控制器开发时间序列模型。实验内容涵盖:时间序列数据导入方法、工具如何生成多种机器学习算法,以及如何将生成的模型部署至开发板。本实验基于 FRDM-MCXN947 开发板,但相同步骤适用于所有 eIQ 时间序列工作室 支持的设备。 MCX FRDM-MCXA153 FRDM-MCXN947 MCX-N9XX-EVK i.MX RT i.MXRT685-EVK i.MXRT595-EVK MIMXRT1060-EVK MIMXRT1170-EVK MIMXRT1180-EVK LPC LPC55S69-EVK Kinetis FRDM-K66F FRDM-KV31F FRDM-K32L3A6 DSC MC56F83000-EVK MC56F80000-EVK   您还可以观看下方的视频,以快速了解 Time Series Studio 的流程。 (在 “我的视频” 中查看) 您还可通过 App Code Hub 获取 ML 通用数据记录器 工具,用于收集可与时间序列工作室配合使用的传感器数据。 i.MX RT
View full article
PN7160とnRF52840 こんにちは、 カスタムPCB上のnRF52840モジュール(Raytac MDBT50Q-1MV2)にI2C経由でコネクテッドされた外付けNFCリーダ/コントローラ(NXP PN7160A1HN/C100E)を使用しています。(プログラミングは、nRF52840 DKをデバッグプローブとして使用し、SWD経由で行います。) 現在のソフトウェア環境は、VS Code(Windows 11)のnRF Connect SDK(NCS)v3.2.0とZephyr RTOS v4.2.99です。目標は、PN7160(NCI-over-I2C)を使用して、RF検出を開始し、13.56MHzパッシブカードのUIDを読み取ることです。 私はPN7160を「典型的なZephyrの方法」で統合しようと試みました。 ソース/メイン.c ボード/nrf52840dk_nrf52840.オーバーレイ prj.conf I2C ピンと PN7160 GPIO (VEN/IRQ) を設定できますが、初期化が失敗します (プローブ中または最初のコマンド中の I2C -EIO/NACK)。その結果、RF 検出全体が機能せず、統合アプローチが正しいかどうかわかりません。 質問: NCS/Zephyrでは、`main.c`を変更するだけでPN7160をプログラムすることは可能ですか?+ `nrf52840dk_nrf52840.overlay` + `prj.conf`、それともPN7160には適切なカスタムドライバが必要であると予想されますか? ドライバが必要な場合、NCS でドライバを追加するための推奨アプローチは何ですか (デバイスツリー バインディング YAML + Kconfig + CMake + ドライバ ソース)。また、外部 Zephyr モジュール (zephyr/module.yml + EXTRA_ZEPHYR_MODULES) としてパッケージ化する必要がありますか?これを行う方法のサンプル コードはありますか (パブリック github リポジトリのようなものですが、見つけることができませんでした)? プローブ/最初の書き込み時に -EIO を引き起こす可能性のある、別の方法で処理する必要がある既知の NCS v3.2.0 / Zephyr 4.2.99 I2C/TWIM 動作はありますか? 他に役立つコメントがありましたら、ぜひ教えてください。 ご協力ありがとうございます!
View full article
MCXN947 I3C IBI 有效载荷问题 您好, 我遇到了一些关于 I3C 接收 IBI 有效载荷的问题。希望你们能提供帮助。欣赏。 当我使用 NXP974 作为 I3C 主站时,我们能收到多少个包含 MDB 的有效载荷数据?在我的测试中,似乎最大值为8字节。(一个 MDB 和七个有效载荷数据)。但是从规范来看,它表明支持 9 字节的支持包括 MDB。您能帮忙确认一下吗? 规格:控制器在 9 字节(包括必填数据字节)后自动停止 IBI 数据。 我遇到的另一个问题是,当我将有效载荷设置为8字节时,我确实收到了来自fifo的8字节,但是即使我们没有从i3c目标发送新的IBI,它也会再次进入IBI并导致系统卡住。当有效载荷大小于 8 字节时,它运行良好。 我检查了 SDATACTRL 的 RX FIFO 计数,是 8。我认为这是正确的。而 irq 的状态似乎是正确的,与正常情况下的状态(0x2e00)相同。所以我想这也是正确的。 然后,我尝试捕获洛杉矶的波形。我发现正确和不正确的情况有些不同。 在正常情况下(有效载荷< 7),最后一个 T 位的整个时钟周期为低电平,然后产生一个停止信号。 在错误的情况下,SDA将在T位时钟的上升沿处于高位。然后,重新发送时钟(开漏)。 你知道恩智浦发生了什么事吗?为什么有效载荷大小不同时会有不同的行为? MCX N Re: MCXN947 I3C IBI payload issue 嗨,杰姬! 我们过去也遇到过这个问题,并向恩智浦报告过。我们得到确认,这是恩智浦 I3C IP 模块中的一个错误。IBI 有效负载长度不能大于 8 字节,此外,I3C 目标应使用 T-Bit 来表示最后一个字节中的数据结束(T-Bit LOW)。I3C IP 块作为控制器时,如果 T 位为高电平,则不能发出 STOP 条件。 Re: MCXN947 I3C IBI payload issue 你好@JackieZhu 是的,你说得对。I3C 目标支持在强制数据字节之后最多七字节的扩展 IBI 数据。 因此,包括 MDB,最大值为 8 字节。(一个 MDB 和七个有效载荷数据)。 BR 哈利
View full article
RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); の IO 多重化機能を変更するにはどうすればよいでしょうか? この機能は、I/O を多重化するために使用しますか? /*! * @brief IO_MUX ピンの MUX モードを設定します。 * @note パラメータにはピン機能 ID マクロを入力できます。 * * これは、GPIO2/GPIO3 を Flexcomm0 UART RX/TX として設定する例です。 * @コード * IO_MUX_SetPinMux(IO_MUX_FC0_USART_DATA); * @endcode * * これは、GPIO6/GPIO10 を Flexcomm1 I2C SDA/SCL として設定する例です。 * @コード * IO_MUX_SetPinMux(IO_MUX_FC1_I2C_6_10); * @endcode * * @Param pinLowMask GPIO0-31 ピン マスク。 * @Param pinHighMask GPIO32-63 ピン マスク。 * @Param gpioFcSetMask IO_MUX_GPIO_FC_MASK() で定義される、設定する GPIO および Flexcomm レジスタマスク * @Param gpioFcClrMask クリアするGPIOおよびFlexcommレジスタマスク。IO_MUX_GPIO_FC_MASK()で定義されます。 * @Param fselSetMask 設定するFSELレジスタマスク * @Param fselClrMask クリアするFSELレジスタマスク * @Param ctimerSetMask IO_MUX_CTIMER_MASK() で定義される、設定する C_TIMER_IN/C_TIMER_OUT レジスタマスク * @Param ctimerClrMask クリアする C_TIMER_IN/C_TIMER_OUT レジスタマスク。IO_MUX_CTIMER_MASK() で定義されます。 * @Param sctimerSetMask 設定するSC_TIMERレジスタマスク * @Param sctimerClrMask クリアするSC_TIMERレジスタマスク / 静的インラインvoid IO_MUX_SetPinMux(uint32_t pinLowMask, uint32_t ピンハイマスク、 uint32_t gpioFcSetMask、 uint32_t gpioFcClrマスク、 uint32_t fselSetMask、 uint32_t fselClrMask、 uint32_t ctimerSetMask、 uint32_t ctimerClrMask、 uint32_t sctimerSetMask、 uint32_t sctimerClrマスク) このマクロは設定ツールで生成されたのでしょうか?数値やマスクされたマクロが満載で、全く読めません。 #IO_MUX_FC3_USART_DATA を定義する \ 0x05000000U, 0x00000000U, /* ピンマスク */ \ IO_MUX_GPIO_FC_MASK(0, 3, 0x200), IO_MUX_GPIO_FC_MASK(1, 3, 0x1EE), /* GPIO&FCマスク */ \ 0x00000000U, 0xC0000000U, /* FSELマスク */ \ IO_MUX_CTIMER_MASK(0, 0), IO_MUX_CTIMER_MASK(0x40, 0x40), /* CTimerマスク */ \ IO_MUX_SCTIMER_MASK(0, 0), IO_MUX_SCTIMER_MASK(0x10, 0x10) /* SCTimerマスク */ 別の IO に変更するにはどうすればいいでしょうか? Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? お返事ありがとうございます。 1. シリアル ポート (UART) 通信用に別の I/O ポート セットを選択します。 2. SDKを読んでいて、その中のコードを参照しています。MCUXpressoスタイルのコードに初めて触れたので、よくわからない部分があります。MCUXpresso を 使ってFlexCommをUARTとして実装する方法についてのドキュメントやウェブページ はありますか ? 3. 現在、ボードをダウンロードできません。 私はM33を選択しました。 ダウンロードできません J-linkは有料製品であり、既存の製品ではあまりサポートされていないため、あまり気に入っていません。代わりにCMSIS-DAPを使いたいと思っています。 しかし、ファームウェアを更新する方法を見つけることができませんでした。 プログラムのダウンロード機能を緊急に有効にする必要があり、ご協力をお願いいたします。 Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? こんにちは、 SDK の例に基づいてアプリケーションを構築することをお勧めします。 Config Tools を使用してペリフェラルを変更または構成する必要はありません。必要に応じてソースコードを変更できます。 RW612用のモジュールを使用していますか? 具体的に何を達成したいのか説明していただけますか? よろしくお願いいたします。 ダニエル。 Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? ダウンロードに成功しました。 Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? こんにちは、 FRDM-RW612を使用していることをご確認ください。 UM12160をご覧ください。搭載デバッガーのファームウェアを更新するには、JP2 をショートする必要があります。セクション 3.5 に記載されている手順に従ってください。 よろしくお願いいたします。 ダニエル。
View full article
如何使用恩智浦 os08a20 摄像头在 iMX95 Verdin EVK 中将数据流推送到显示屏 我最近从https://www.nxp.com/design/design-center/development-boards-and-designs/4K-MIPI-CMOS-CAMERA-MODULE 购买了 X-IMX-OS08A20 摄像头模块。 我已将其连接到 iMX95 Verdin EVK 套件,摄像头能被正确检测并成功探测。 我使用的是以下 dtb-imx95-19x19-verdin-os08a20-isp-lt8912.dtb 我正在运行以下 v4l2 命令,并能使用 stream-mmap 命令获取 v4l2 数据流。以下是我使用的命令 media-ctl -d /dev/media0 -l"'os08a20 2-0036':0 -> 'csidev-4ad30000.csi':0[1]" media-ctl -d /dev/media0 -l"'csidev-4ad30000.csi':1 -> '4ac10000.syscon:formatter@20':0[1]" media-ctl -d /dev/media0 -l"'4ac10000.syscon:formatter@20':1-> 'crossbar':2[1]" media-ctl -d /dev/media0 -l"'crossbar':5 -> 'mxc_isi.0':0[1]" media-ctl -d /dev/media0 -l"'mxc_isi.0':1-> 'mxc_isi.0.捕获': 0 [1] " echo "媒体设置" media-ctl -d /dev/media0 -R "'os08a20 2-0036' [1/0->0/0[1]]" media-ctl -d /dev/media0 -R "'csidev-4ad30000.csi' [0/0->1/0[1]]" media-ctl -d /dev/media0 -R "'4ac10000.syscon:formatter@20' [0/0->1/0[1]]" media-ctl -d /dev/media0 -R"'crossbar' [2/0->5/0[1]]" echo"routing done" media-ctl -d /dev/media0 -V"'os08a20 2-0036':0/0 [fmt:SBGGR10/3840x2160 field:none]" media-ctl -d /dev/media0 -V"'csidev-4ad30000.csi':0/0 [fmt:SBGGR10/3840x2160 field:none]" media-ctl -d /dev/media0 -V"'4ac10000.syscon:formatter@20':0/0[fmt:SBGGR10/3840x2160 field:none]" media-ctl -d /dev/media0 -V"'crossbar':2/0 [fmt:SBGGR10/3840x2160 field:none]" media-ctl -d /dev/media0 -V"'mxc_isi.0':0/0[fmt:SBGGR10/3840x2160 field:none]" echo"linking Completed" 我运行以下命令,用 v4l2 获取帧数,结果达到了预期的 30 fps。 < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < 30.04 fps < < < < < < < < < < < < 48< < < < < < < < < < < < < < < < 30.04 fps <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<30.04 fps 我正试图将它推送到显示器上,却遇到了这个问题。 root @imx95 -19x19-verdin:~# gst-launch-1.0libcamerasrc !video/x-raw,format=BGRx,width=3840,height=2160 !视频转换 !fpsdisplaysink video-sink=autovideosink text-overlay=true 设置管道为 PAUSED ... [0:01:33.994814097][774] INFO Camera camera_manager.cpp:326libcamera v0.5.0+330-7fce0333-dirty (2025-06-04T12:23:54UTC) Pipeline is live and does not need PREROLL ... [0:01:34.098980249][780] WARN ISI imx8-isi.cpp:353无法找到支持的 YUV/RGB 格式 管道已 PREROLLED ... 将管道设置为正在播放 ... ERROR: from element /GstPipeline:pipeline0/GstLibcameraSrc:libcamerasrc0: Internal data stream error. 附加调试信息: /usr/src/debug/libcamera/0.5.0.imx/src/gstreamer/gstlibcamerasrc.cpp(682):gst_libcamera_src_task_enter ():/GstPipeline:pipeline0/GstLibcameraSrc:libcamerasrc0: streaming stopped, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. 执行在 0:00:00.000314034 后结束 将管道设置为 NULL ... [0:01:34.099615025][780] WARN ISI imx8-isi.cpp:353无法找到支持的 YUV/RGB 格式 ERROR: from element /GstPipeline:pipeline0/GstLibcameraSrc:libcamerasrc0: Internal data stream error. 附加调试信息: /usr/src/debug/libcamera/0.5.0.imx/src/gstreamer/gstlibcamerasrc.cpp(682):gst_libcamera_src_task_enter ():/GstPipeline:pipeline0/GstLibcameraSrc:libcamerasrc0: streaming stopped, reason not-negotiated (-4) Freeing pipeline ... cam -c 1 --info [0:01:09.047021603][772] INFO Camera camera_manager.cpp:326libcamera v0.5.0+330-7fce0333-dirty (2025-06-04T12:23:54UTC) [0:01:09.152506530][772] WARN ISI imx8-isi.cpp:353无法找到支持的 YUV/RGB 格式 使用摄像机 /base/soc/bus@42000000/i2c@42530000/os08a20_mipi@36 作为 cam0 0: 3840x2160-SBGGR10 * Pixelformat:SBGGR10 (3840x2160)-(3840x2160)/(+1,+1) - 3840x2160 * Pixelformat:SBGGR12 (3840x2160)-(3840x2160)/(+1,+1) - 3840x2160 到目前为止,我还没有导出有关 libcamera 的 MATCH_LIST,以上就是这些日志。 之后,我导出 export LIBCAMERA_PIPELINES_MATCH_LIST='nxp/neo,imx8-isi' root@imx95-19x19-verdin:~# cam -c 1 --info [0:01:46.524765885][782] INFO Camera camera_manager.cpp:326libcamera v0.5.0+330-7fce0333-dirty (2025-06-04T12:23:54UTC) [0:01:46.642824790][783] INFO NxpNeoIPA neo_ipa.cpp:128nxpneo: IPANxpNeo NXPNEO_IPA_v0.5.0+330-7fce0333-dirty (2025-06-04T12:23:54UTC) 使用摄像机 /base/soc/bus@42000000/i2c@42530000/os08a20_mipi@36 作为 cam0 0: 3840x2160-BGR888 * Pixelformat:R8 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:R10 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:R12 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:R16 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:NV21 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:NV61 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:NV12 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:XBGR8888 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:BGR888 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:RGB888 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:XRGB8888 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:NV16 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:YUYV (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:XVUY8888 (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 * Pixelformat:UYVY (1920x1080)-(3840x2160)/(+0,+0) - 1920x1080 - 3840x2160 之后,当我运行以下 gstreamer 命令时,数据流没有开始。该进程在被杀死之前不会有任何反应。 root @imx95 -19x19-verdin:~# GST_DEBUG=3 gst-launch-1.0libcamerasrc !视频转换 !autovideosink 将管道设置为 PAUSED ... [0:04:17.443233635][794] INFO Camera camera_manager.cpp:326libcamera v0.5.0+330-7fce0333-dirty (2025-06-04T12:23:54UTC) [0:04:17.562332552][798] INFO NxpNeoIPA neo_ipa.cpp:128nxpneo: IPANxpNeo NXPNEO_IPA_v0.5.0+330-7fce0333-dirty (2025-06-04T12:23:54UTC) Pipeline is live and does not need PREROLL .. 0:00:00.203418021 794 0xffffa4000b70 FIXME default gstutils.c:4169:gst_element_decorate_stream_id_internal: 创建随机 stream-id,请考虑采用确定性方式创建 stream-id 管道已 PREROLLED ... 设置管道为播放状态 ... 0:00:00.203987701 794 0xffffa4000b70 WARN default gstlibcamera-utils.cpp:345:gst_libcamera_stream_formats_to_caps:不支持 DRM 格式 R10 0:00:00.204038448 794 0xffffa4000b70 WARN default gstlibcamera-utils.cpp:345:gst_libcamera_stream_formats_to_caps:不支持 DRM 格式 R12 新时钟:GstSystemClock 0:00:00.204228106 794 0xffffa4000b70 WARN default gstlibcamera-utils.cpp:345:gst_libcamera_stream_formats_too_caps:不支持 DRM 格式 XVUY [0:04:17.578186764][799] INFO Camera camera.cpp:1205配置数据流: (0) 3840x2160-NV21 0:00:00.0/ 99:99:99. 如何克服这一问题。请您在这方面给我指点迷津。 Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera https://community.nxp.com/t5/i-MX-Processors/How-to-display-video-capture-by-OS08A20-camera-via-HDMI-LT8912/m-p/2170756/page/2 上述链接包含与流媒体有关的相同查询。由于我找不到解决方案,能否请您检查并确认提供了什么解决方案。谢谢。 Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera 我没有这个板可以重现这个问题,我用 imx95-19x19-evk-os08a20-isp-it6263-lvds0.dtb 测试了 HDMI,没有任何问题,请联系供应商来支持这个问题,或者尝试使用其他 dtb 文件再次进行测试 Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera 有没有什么解决办法,因为我看到很多人都在为同样的问题苦恼。我们已经买了全套设备和相机。如果您能提供以下帮助,将对我们大有裨益 Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera 目前我们不支持 Verdin EVK,因为 imx95 仍处于预生产阶段,我无法在板上重现这个,参考你的日志,问题与显示方面有关,你需要联系第三方公司检查他们是否对此进行了验证 Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera 您可以联系 https://www.toradex.com/support Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera 这个问题与恩智浦imx95 evk板不支持的lt8912有关,所以我无法重现这个问题并对其进行调试,而Verdin板支持的当前政策是客户需要联系Verdin进行检查,因为imx95仍处于试生产阶段,我们还没有支持第三方公司板,如果我能在我的板上重现这个问题,我可以尝试给你建议或解决方案,但是由于此问题只能在他们的板上使用他们的软件重现,因此请在当前阶段直接与他们联系 Re: How to push stream to display in iMX95 Verdin EVK with the NXP os08a20 camera 我已经从恩智浦克隆了内核源代码,并正在使用它(关于 SW)。在我的情况下,摄像头也能正常探测,并获得 v4l2 数据流。您能否帮我联系一下 Verdin 的联系人,以澄清这个问题。谢谢
View full article
针对同步动态随机存取存储器(SDRAM)版本构建的 RT1170 调试 您好, 我正在使用 MCUXpresso 及其 SDK 为 RT1170 开发一个应用程序。 所提供的示例项目似乎都是使用 “DTC” RAM 版本的。与许多其他用户一样,我的应用程序太大了,无法容纳在那里,所以我正在尝试使用“同步动态随机存取存储器(SDRAM)”。 在尝试了论坛上其他一些帖子(尤其是https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/m-p/896979)中提出的解决方案后现在,我可以执行我的程序,如果应用程序已闪存,我还可以调试程序。 但是,如果我使用 “将应用程序链接到RAM” 进行版本和执行,那么一旦遇到断点,应用程序通常会卡在那里。 我的假设是这是因为我没有正确初始化同步动态随机存取存储器(SDRAM)。上述文章使用 “rt1050_SDRAM_init.scp 作为调试器初始化 同步动态随机存取存储器(SDRAM) 控制器的连接脚本”。如果我使用这个文件,失败也就不足为奇了。 我不知道如何调整这个脚本才能在 RT1170 上运行。有没有人这样做过,或者能提供如何生成的建议? 感谢您提供的任何帮助。 Re: RT1170 debugging when application is built for SDRAM 你好@ Jingpan 按照提供的步骤,使用 RT1170_BriefOverview_v210.pdf 中提到的修改刷新 hello world,我可以在调试模式下使用同步动态随机存取存储器(SDRAM)。 但是在这种变化之后,同步动态随机存取存储器(SDRAM)也用于存储代码。 在我的应用程序中,我希望代码存储在闪存中,而 BOARD_SDRAM 仅用于堆和堆栈部分。 我将把我的应用程序闪存到闪存中,该应用程序的堆和栈部分将使用 BOARD_SDRAM。 请指导我进行所需的更改。 Re: RT1170 debugging when application is built for SDRAM 谢谢@ Jingpan、 我只需要添加 .scp文件,结果成功了。 我已经掌握了第 5、第 6 和第 8 步,但我会试试其他步骤。 如果有帮助我还在 board.c 中做了以下更改,我认为这等同于<https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/m-p/896979>中描述的 RT1170_SDRAM_NOT_CACHED: #ifdef USE_SDRAM #ifndef RT1170_SDRAM_NOT_CACHED /* 区域 9 设置:内存为普通类型,不可共享,外部/内部回写 */ MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB); #else MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U); MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 1, 0, 0, 0, ARM_MPU_REGION_SIZE_64MB); #endif /* RT1170_SDRAM_NOT_CACHED */ #endif Re: RT1170 debugging when application is built for SDRAM 你好@robert_s、 此脚本适用于 RT1050/60,但不适用于 RT1170/60。您可以使用附带的脚本。除脚本文件外,您还需要执行其他步骤。 在 C/C++ 版本 > MCU 属性设置中的内存详细信息中,将 BOARD_SDRAM 移至 SRAM_DTC_M7 上方。 连接脚本使用 RT1170_connect_M7_wake_M4_SDRAM_init.scp。 在附加选项中添加 --cachelib libm7_cache.so。 如果使用 USB/以太网/SDHC,请将 DMA 缓冲区放入非缓存区。 在 MCU C 编译器> 预处理器中添加 USE_SDRAM。 在属性中选择链接到 ram->设置->受管链接器脚本 如果项目与 USB 关联,则在 MCU C 编译器> 预处理器中添加 DATA_SECTION_IS_CACHEABLE=1。 如果项目与不带 freertos 的 USB 主机相关联,则将堆放入 DTCM 或不可缓存区域 (bm) 此致, 景
View full article
S32 DS 3.3 许可证过期 你好,我的 S32 Design Studio 3.3 已过期: S32 Design Studio v.3.3 版 订购编号 S32DS-3-3_146477567 订购单编号 许可证总数: 101 激活代码 AF1B-F377-2238-53BB 您能帮我解决这个问题吗?非常感谢! 亚历山大-穆勒 Re: S32 DS 3.3 License expired 你好、 您的 S32DS 许可证已延期。请使用旧代码重新激活 S32DS。
View full article
关于CANFD中二次采样点偏移SSP Offset的设置问题 在ISO 11898-1 2015,SSP要求是在普通采样点SP之前,但是公司规范中定义了 SSP offset 等于TSEG1,相当于SSP和SP在同一个位置。那么这个就失去了SSP的快速检测错误的功能。请问这个规范中固定的SSP offset是否合理。 例如:规范中要求CANFD采样点配置建议,其中SSP Offset =TSEG1   Re: 关于CANFD中二次采样点偏移SSP Offset的设置问题 您好, 我不知道 ISO 11898-1 2015 的确切措辞,也不知道您的图片来自何处。也许这只是误读。 符合 ISO 标准的 CAN FD 控制器使用 TDC 来测量回路延迟,并使用可配置的 SSP 使发射器能够在更高的数据速率下正确检测数据错误。省略 TDC/SSP 会使这一机制失效,从而降低错误检测的鲁棒性。 图示 TX 输出:代表控制器传输的 CAN FD 位。 RX 输入:代表收发器延迟后的接收比特。 TDC 测量:控制器测量 TX 和 RX 之间的环路延迟。 TDC 偏移:用户可配置的值,添加到测量的延迟中。 SSP 位置:计算公式为 SSP = TDC 测量值 + TDC 偏移。 SSP 不应该在 TX 功能域中的主 SP 之前。相反,在对 RX 信号进行采样时,它的位置应在考虑收发器延迟后与正确的比特中心对齐。从 TX 的角度看,SSP 出现的时间比正常 SP 晚,因为 RX 信号由于物理延迟而滞后于 TX。将 TDC 偏移量设置为等于标称 SP 可确保 RX 采样点与接收位处于同一时间,但可以自由设置,即位于位中间,这对于错误检测和数据完整性是最佳选择。 ISO 11898‑1 要求 SSP 进行发射器延迟补偿,而不是 TX 功能域中的早期错误检测。目标是确保发射器在延迟后能够正确验证自己的位。 BR, Petr Re: 关于CANFD中二次采样点偏移SSP Offset的设置问题 再次感谢
View full article
S32K3 SAF - sCheck_ExecuteStartupTests 运行到 HardFault Execption 您好,技术支持、 客户分享了 一个问题,即在启动时调用 sCheck_ExecuteStartupTests(),之后在执行 ECC 测试时会跳转到硬故障异常。 您能帮忙检查一下这一点吗? MCU: S32K314 SAFETY_SW Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好@marcuslim, 对于每个 sCheck 测试,都必须遵循 sCheck UM 章节中描述的所有条件: L1 CACHE ECC 测试 在这种情况下,很可能是内存部分的位置和适当的 MPU 设置有误,这对正确执行该测试非常重要。 更多详情,请参阅 sCheck UM 章节: 内存分配(将内存分配到具有正确的可缓存或不可缓存 MPU 属性的部分至关重要) ,您还可以在 SAF 演示示例中探索链接器文件和 MPU 设置。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 Cusotmer 将恩智浦示例中的 sCheck_ExecuteRuntimeTests() 替换为 sCheck_ExecuteStartupTests(),结果遇到了类似的错误。 能否请您明确说明我可以在哪里检查? Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim 不,你不能通过在专用的用于运行时测试的循环中替换 sCheck 启动测试来使用。 启动测试只应在应用程序启动过程开始时执行一次。 此外,SAF 演示示例不支持 K314,因此,如果您重复使用了某些链接器文件,它很可能不会遵循 K314 设备的内存映射,需要进行更新。 SAF 不容易内置,需要认真学习 sCheck 手册并了解软件功能安全概念。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户反馈: 不过,我们目前遇到了与 ECC 检查有关的问题。您可能已经注意到,恩智浦示例中也出现了类似的 ECC 检查问题。 内置SAF软件包非常具有挑战性,因此,我们将感谢恩智浦专家在这方面的支持。 您能否就我们需要遵循和验证的与链接器相关的具体要点或要求提出建议,以便正确内置 ECC 检查? 提前感谢您的帮助。 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好,Marcus, ,所有信息都应该从 sCheck UM 中清楚地了解到,至少我通常不会遇到这类问题,所以 SAF 团队认为 sCheck UM 在这方面是清楚的。 您能否询问客户 sCheck UM 到底有哪些不清楚的地方,以便我们改进? 谢谢, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户将 *(.ramcode_no_cacheable) 从 int_sram_no_cacheable 移至 int_sram,结果运行正常。 如有任何意见,请随时提出。 根据 表 55.sCheck 模块中的 MemMap 部分, 以下部分必须放在特定的闪存区域中: s32_saf_const_flash_0 → 代码闪存 0 s32_saf_const_flash_1 → 代码闪存 1 s32_saf_const_flash_2 → 代码闪存 2 s32_saf_const_flash_3 → 代码闪存 3 不过,在我的系统中,我使用的是 A/B 交换因此,在任何时候都只有 闪存 0 和 闪存 1 被应用程序激活/使用。 放置 s32_saf_const_flash_2 和 s32_saf_const_flash_3 和 32_saf_const_flash_3 可能会干扰未使用的闪存区域(例如,为其他闪存组或 OTA 更新预留的闪存区域)。 我的问题是 是否有办法配置 sCheck,使其只在 Flash 0 和 Flash 1 上执行测试? 或者 是否有安全的方法来测试所有四个闪存块(闪存 0-3),而不影响 A/B 交换使用的非活动库的内容? 的内容? Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 除了上一篇文章中提出的问题外,客户还分享说,在执行sCheck_ExecuteStartupTests和sCheck_ExecuteRuntimeTests 之后,系统始终报告同一组与 ECC 相关的错误: scheck_err_dcache_ecc_cm7_0 scheck_err_icache_ecc_cm7_0 SCHECK_ERR_ITCM_M7_0_ECC SCHECK_ERR_DTCM_M7_0_ECC 在每次测试执行过程中,这些错误都会反复出现。 能否请您协助我们调查并确定这种行为的根本原因? 敬上, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim, 将 *(.ramcode_no_cacheable)从 int_sram_no_cacheable 移至 int_sram 起作用可能有点巧合。 我怀疑如果客户将 HFNMIENA 设置为 0,则在触发信号时可能会造成麻烦。 请检查一下 MPU_CTRL.HFNMIENA 的值是多少。 如果该值为零,则已针对即将发布的 1.0.6 版本进行了以下修复: [ASFT-19327] [sCheck] 不支持 Arm M7 HFNMIA - 恩智浦 JIRA sCheck 闪存测试不能仅缩减为 Flash_0 和 Flash_1,但已对即将发布的 1.0.6 版本进行了更改,无需将特定的闪存部分放入链接器文件中,而是使用配置的闪存地址,其中地址的内容不会被修改,这也可以解决 A/B 交换客户的问题。 https://jira.sw.nxp.com/browse/ASFT-19738 此致, 拉多斯拉夫 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好@marcuslim ,我认为有一个共同的根源。 内存部分需要根据可缓存/不可缓存 MPU 属性正确放置,上一篇文章中提到的 HFNMIENA 位也会造成问题。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户尝试重新定位 *(.ramcode_no_cacheable)。 到 int_sram_noo_cacheable 而不是 内存 并将 HFNMIENA = 0。 此外,还对 MPU 进行了适当配置,以允许从不可缓存 RAM 区域执行代码。 经过进一步调查,发现在 sCheck_Tcm_RunEccTest 中的函数 sCheck_Tcm_MemTestEccCorrError 和 sCheck_Tcm_MemTestUncorrError 函数将被执行。 这两个函数都调用 sCheck_ErrRead(pParams,&result)。 但是,当 sCheck_Tcm_MemTestEccCorrError 成功完成、 scheck_tcm_memtestuncorrerRror 在 调用 scheck_errRead(PParams,& 结果)(附图中的第 1 点)时会 触发 HardFaul t, 系统随后卡在 BusFault 处理程序 (所附图像中的第 2 点) 中。 能否请您帮助调查一下这一点? Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim, 对不起我错了,你的 SAF 版本中的正确设置应为 HFNMIENA = 1,以避免在异常中更改 MPU 设置,这可能会进一步导致缓存之后刷新一些变化。这就解释了为什么 TCM correctable 可以通过,而 Uncorrectable 不能通过,因为它使用异常来测试正确的反应。 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 客户反馈: >>>>>>>> 配置HFNMIENA = 1 后,我发现sCheck_ExecuteStartupTests()可以正常运行。此时,我不再观察到任何与 ECC 相关的错误。我将进行额外的压力测试,以进一步验证这种行为。 但是,当调用 sCheck_ExecuteRuntimeTests() 并随后调用 sCheck_Tcm_MemTestUncorrError() 时,系统会在设置 INVSTATE(无效状态)标志的情况下触发信号 UsageFault 异常。 请问sCheck_ExecuteStartupTests()和sCheck_ExecuteRuntimeTests()之间是否存在任何设计上的差异或特定的使用条件,会导致这种行为? 此致, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 您好@marcuslim, 如果启用了 FPU,这可能表明存在参数问题,我们需要进一步调查。 您能否尝试禁用 FPU 并重新进行测试? 现在结果如何? 启用 FPU 后,能否在 Watch 窗口的异常跟踪中使用这些变量: sCheck_ErrRead_ExceptionContext.bAbortFlag sCheck_DetectedFaults[0] 并再次粘贴截图? FCCU NCF_2 通道的配置反应是什么? , Radoslav。 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 请在此提供所需的信息: 要点 1:禁用 FPU - 同样的错误。 要点 2:启用 FPU 第 3 点:FCCU NCF_2 反应 此致, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 你好,马库斯、 最新截图显示,它产生的是内存管理故障,而不是使用故障(如原帖所示)。因此,我认为我们需要澄清我们面临的例外情况是什么。 请检查/共享 MPU 配置。 你能检查一下异常是否由"LDRD R0,R1,[R1]\n" 指令(来自 sCheck_Lib_ARMv7M.c 或其他指令)引起的吗? 亲切的问候, Radoslav Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨,拉多斯拉夫、 附上客户的 MPU 配置和链接器文件。他希望我们对其进行审查。 此致, 马库斯 Re: S32K3 SAF - sCheck_ExecuteStartupTests run to HardFault Execption 嗨 @marcuslim, 我看到他们重复使用了 RTD 示例 systemInit () 中的 MPU 配置。 请注意,这只是 RTD 的短截线,未经验证,即使对于某些 RTD 驱动程序来说也可能不够,更不用说 SAF 了。 同样,对于链接器文件,我可以看到来自RTD链接器文件的来源,以及额外的SAF和SCST内存部分。 关于 MPU 配置,我强烈建议使用 RTD Platform 插件配置 MPU。 在 SAF 演示示例中,我们还提供了 K344 的 MPU 配置示例(不是 K314,但只需修改 TCM 的正确内存大小)。 但它也只是 SAF Demo 设置的示例代码(短截线),未经过验证的交付内容。 按照人工智能的要求,他们的 MPU 配置应该代表这种设置: 地区 RBAR 地址 大小 类型/缓存政策 可共享 门禁系统 说明 0 0x00000000 覆盖整个地址空间(RASR = 0x1004003F ) 强烈订购,无缓存 是 无访问 背景区域阻挡一切 1 __INT_ITCM_START 来自链接器 正常,无缓存 无 RW/RW 用于 CM7 的 ITCM 2 __ROM_CODE_START 来自链接器 正常,WB/WA(内侧& 外侧) 无 RO/RO 主程序闪光 3 __ROM_DATA_START 来自链接器 正常,WB/WA 是 RO/RO 数据闪存 4 0x1B000000 8 KB ( 0x160B0019 ) 正常,WB/WA 是 RO/RO UTEST 地区 5 __INT_DTCM_START 来自链接器 正常,无缓存 无 RW/RW CM7 的 DTCM 6 __INT_SRAM_START 来自链接器的大小 ( __RAM_CACHEABLE_SIZE ) 正常,WB/WA 无 RW/RW 可高速缓存 SRAM(禁用子区域 6 和 7) 7 __RAM_NO_CACHEABLE_START 来自链接器 正常,无缓存 是 RW/RW 非缓存 RAM 区域 8 __RAM_SHAREABLE_START 来自链接器 正常,无缓存 是 RW/RW 可共享内存 9 0x40000000 6MB 强烈订购,无缓存 是 RW/RW AIPS0-2 外围空间(禁用第 6/7 分区) 10 0x40600000 S32K314 已禁用 — — — AIPS3;仅在 S32K39x 上有效 11 0x67000000 128 MB 强烈建议 是 RW/RW QSPI RX 12 0x68000000 128 MB 正常,WB/WA 无 RW/RW QSPI AHB 映射区域 13 0xE0000000 默认 ARM PPB 大小 强烈建议 是 RW/RW 私人外围总线(SCB、NVIC 等) 14 __ROM_CODE_START + 0x400000 S32K314 为 0 — — — 附加程序闪光灯(仅对其他衍生产品有效) 15 0x44000000 S32K314 为 0 — — — ACE 区域仅在 S32K388 上活跃 这是 K344 的 SAF 演示示例中的 MPU 配置: 简单比较这两个 MPU 配置 + 链接器文件可以看出: -这些内存部分的位置不正确:* (.s32_saf_const_flash_1) * (.s32_saf_const_flash_2) * (.s32_saf_const_flash_3) * (.s32_saf_const_flash_4) * (.s32_saf_const_const_flash_4) * (.s32_saf_const_const_flash_4) * (.s32_saf_const_const_flash_4) * (.s32_flash_5)-看不到不可缓存的 SRAM 的可执行属性,但这不是 sCheck 所要求的,这可能是 SAF 示例 MPU 设置中的冗余属性——考虑到客户正在运行操作系统,我预计操作系统及其需要一些特定的 MPU 设置和内存部分 应用程序(只是猜测,并不是说这可能是某些问题的根本原因) 无论如何,客户应遵循 SAF 用户手册和 RTD 手册第 " 章内存分配 " 进行正确的 MPU 和链接器文件设置,重复使用恩智浦示例中的短截线不是一个好做法。 特别是当操作系统在 sCheck 测试期间运行时,还需要按照 sCheck 章节" Exclusive Areas(在 BSW Scheduler" 中定义的专属区)进行测试。eMcem 和 RTD 驱动程序中也有类似的排他性区域。 亲切的问候, Radoslav
View full article
FS26 无法 RESET S32K3 我正在使用 RTD 层在带有 FS26 的 S32K314 上进行开发。 目前,我遇到 FS26 无法 RESET MCU 的问题。 FS26 成功进入正常状态,但是当我故意停止为看门狗供电时,RSTB 引脚没有被拉至低电平,也没有 RESET MCU。 您能帮我检查一下可能出了什么问题吗?谢谢。 有关我的配置设置和初始化步骤,请参阅所附的图片。 Re: FS26 CAN'T NOT RESET S32K3 嗨,彼得、 感谢您的回复。 我正在定制板上开发,我可以确认硬件已经退出调试模式。 我尝试刷新一个没有进行任何 FS26 初始化的版本,在那个版本中,FS26 会持续 RESET MCU。 但是,当我闪回我提供给你的版本(包含 FS26 初始化的软件)时,FS26 不再 RESET MCU。 此外,你还可以看到我的配置,如附件所示,我选择了调试模式退出。 请帮助检查 FS26 初始化过程中是否有任何错误。谢谢。 Re: FS26 CAN'T NOT RESET S32K3 你好 你能分享一下你使用的是恩智浦评估板还是定制主板吗? 确保 FS26 未处于调试模式。在这种情况下,WDOG 将被禁用,超时时不会有任何反应。 顺祝商祺! Peter Re: FS26 CAN'T NOT RESET S32K3 你好 好的,谢谢你的解释。 此外,你还可以看到我的配置,如附件所示,我选择了调试模式退出。 好的,这只是配置图形用户界面中的复选框。 如果从 FS26 读回,它真的处于正常模式吗? 我尝试刷新一个没有进行任何 FS26 初始化的版本,在那个版本中,FS26 会持续 RESET MCU。 如果 FS26 未初始化,WDOG 将发出 RESET 命令,RESET 阶段将自动重新开始。 初始化阶段必须在 256 毫秒超时前通过良好的看门狗刷新关闭。如果在初始化阶段没有发送监视器刷新或监视程序不正确,则会生成 RSTB 脉冲,故障错误计数器将增加 1。当 RSTB 版本发布时,新的初始化阶段会自动启动。 但调试模式也是通过调试引脚激活来保持的。但是由于RESET是在没有完成初始化的情况下进行的,我预计你没有激活调试引脚。 但是,当我闪回我提供给你的版本(包含 FS26 初始化的软件)时,FS26 不再 RESET MCU。 因此,在我看来,这与代码直接相关。 因此,我认为可能只有两种选择。 1. 您的 WDOG 未激活 2. 您已进入调试模式。 否则,FS26 将发出 RESET。 可以添加 FS26 模式调试模式检测检查,以确保 SBC 启动后不处于调试模式。 同时检查 FS_I_WD_CFG 顺祝商祺! Peter Re: FS26 CAN'T NOT RESET S32K3 嗨,彼得、 请看我蓝色字体的回复。谢谢。 仍未找到监视程序未触发信号 MCU RESET 的根本原因。 如果从 FS26 读回,它真的处于正常模式吗? Wade : 是的,我通过 spi 读取了 FS_STATES,它返回 1011(正常)。 1. 您的 WDOG 未激活 韦德:我用 spi读取了FS_I_WD_CFG 并返回了 0101 1010 0001 0000,与我的配置相同。 2. 您已进入调试模式。 Wade : 没有,我通过 spi 读取 FS_STATES,它返回 1011(不在 DEBUG 模式下)。 Re: FS26 CAN'T NOT RESET S32K3 嗨,彼得、 我在上一篇文章中漏掉了一张图片。 请一并参阅。谢谢。 Re: FS26 CAN'T NOT RESET S32K3 你好 这就奇怪了。 我检查过你们的登记簿: 如果从 FS26 读回,它真的处于正常模式吗? Wade : 是的,我通过 spi 读取了 FS_STATES,它返回 1011(正常)。 1. 您的 WDOG 未激活 韦德:我用 spi读取了FS_I_WD_CFG 并返回了 0101 1010 0001 0000,与我的配置相同。 wd_fs_reaction[1:0] 如果设备未处于调试模式,则此类配置将触发信号RESET。 2. 您已进入调试模式。 Wade : 没有,我通过 spi 读取 FS_STATES,它返回 1011(不在 DEBUG 模式下)。 这说明是正常模式。 我不清楚你那边发生了什么。 你能不能通过示波器检查RESET线,看看RESET没有被拉出。另外,你在恩智浦评估板上看到同样的行为吗? 那调试引脚呢,不是激活的吗? 默认情况下,在没有任何SBC配置的情况下,RESET会被触发信号,因此您的SBC配置中必须有一些内容,防止从SBC向uC执行RESET。 您是否尝试过 RTD 软件包提供的 FS26 示例软件? 顺祝商祺! Peter
View full article
PN7642 RF Design-in Tips and Tricks Prerequities:  PN7642 design-in recommendations   1// Impedance tuning  PN76 family antenna design guide The target impedance is chosen based on the target application. If full power is required (e.g., POS terminals). The target impedance of 15-17 Ω is recommended. For lower power applications using ULPCD, the higher impedance is typically preferred, 30-50 Ω (symmetrical tuning).   2// Dynamic power control  PN7642 - Basic RF power limitation using DPC   3// H-Field check  There are given limits, especially for the maximum H-field radiated by the reader. Exceeding these limits might lead to destroying the NFC Card/NFC Tag.   The H-Field can be measured with the help of test equipment, as  ISO 10373-6 Test PICC EMVCo 3.0 Test PICC  For indication only, the customers can use "smart" Field Strength Probes as shown below :    Note: The most critical position occurs when the card is placed directly on the NFC antenna . In this case, if the H-field exceeds the maximum allowed level, the output power must be reduced using DPC settings. 4// HF Attenuator value  Turn on the RF Field with the DPC set and enabled from the previous step  Read the CLIF_RXCTRL_STATUS register and check the HF_ATT_VAL as shown below.  The value for the "unloaded" condition with full power shall be approximately 35-45dec.  If the value is out of this range, the customer is required to adjust the Rx resistors to reach this value.  5// Receiver settings  Check the "Power" range and Communication Range with the default settings provided by NXP.  Power Range -> The distance at which the NFC Tag can still generate its answer, but the NFC Reader does not see it  Communication Range -> The distance at which the NFC Tag can still communitate with the NFC Reader  Ideally, Power Range ≈ Communication Range Also, the NFC Reader should not generate any false communications as e.g., "HAL COLLISION ERROR".  The optimisation of the receiver can be done in the following way:  Enter DPC Calibration  Go to the "ARC" menu and "disable" the ARC algorithm This will force the IC to use the RX settings from the following Register/EEPROM SIGPRO_RM_TECH_REG DGRM_RSSI_REG   5.1// SIGPRO_RM_TECH_REG (RM_MF_GAIN parameter) This parameter basically defines the gain of the input amplifier.  Select SIGPRO_RM_TECH_REG  Switch "operation" to EEPROM and choose the required technology  Increase the RM_MF_GAIN to 0x02 (it depends on the setup).     5.2// DGRM_RSSI_REG (DGRM_SIGNAL_DETECT_TH_OVR_VAL parameter) This parameter defines a threshold from which the internal logic starts to decode the incoming signal.  If the threshold is too low or very close to the noise floor, the system can detect the noise as an NFC Communication.  It is therefore,  Threshold + margin > noise floor The best routine is to perform "Signal Detection Threshold" analysis. This can be done with the help of the NFC Cockpit (described in PN7642 design-in recommendations) As a result, the user can obtain the mean value of the "Noise," and suggested "DGRM_SIGNAL_DETECT_TH_OVR_VAL" threshold based on the inserted "Margin."  Maring (m) + Noise mean value (μ) = Threshold  6+16=23 Then this value shall be written in "DGRM_RSSI_REG" EEPROM as shown below.    6// ULPCD Settings  We recommend the following ULPCD Settings as a starting point.  ULPCD VDDPA should be chosen in such a way that the HF Attenuator value is not 0x00! The typical value for HF Attenuator in ULPCD is around 0x05-0x0B.   6.1// RSSI Threshold evaluation  For a proper RSSI Threshold selection, it is recommended to perform the ULPCD Calibration, e.g., 20 times, and check the "jitter" of the RSSI signal for your device.  If you see that the RSSI value is jittering, e.g., 1 unit as shown above. The absolute minimum threshold for this case is 2. However, it is always recommended to include adequate margin (To prevent false wake-ups).   Generally, the margin of 2 units is sufficient. So in this case, the optimum threshold will be 4. 
View full article
CODEWarrior USB TAP 驱动程序问题 你好,我们使用的是 DSP56F803 芯片,我需要用 S-Record 文件闪存它。 我们有:安装了适用于 56800E 数字信号控制器 V8.3 的 CodeWarrior 的 Windows XP,安装了 56800E 闪存编程器,还有 USB TAP 调试器。 我检查了驱动程序是否已正确安装(CCS-> 驱动程序-> USB)。设备管理器显示该设备已正确安装(libusb-Win32 设备-> CodeWarrior USB TAP)。 但是,USB TAP TX/RX 呈红色闪烁,每次我想刷新 S-Record 文件时它都会提示 " CCSProtocolPlugin: CCS: USB 打开失败 "。 我不知道为什么,一切似乎都很正常,驱动程序也显示正常。 Re: CodeWarrior USB TAP driver issue 你好@Chenxuan、 感谢您的来信。我注意到你还有一个一模一样的私人箱子。我将专注于在该案件中解决您的问题。如需任何最新信息,请随时在该私人邮箱中回复我。 感谢您的理解。 BR 西莱斯特
View full article
在 SNVS 内的 HPRTC 上定期& 警报中断 您好,NXP团队: 我正试图配置每 1 秒一次的周期性中断和 30 秒后的警报中断。我的 ISR 看起来是这样的 void SNVS_HP_NON_TZ_IRQHandler(void) { volatile uint32_t flagStatus = SNVS_HP_RTC_GetStatusFlags(SNVS); volatile uint32_t result = flagStatus & kSNVS_RTC_PeriodicInterruptFlag; snvs_hp_rtc_datetime_t rtcDate; if (result) { __asm(" NOP"); SNVS_HP_RTC_GetDatetime(SNVS, &rtcDate); dbg_info("Periodic Interrupt @ %04hd-%02hd-%02hd %02hd:%02hd:%02hd\r\n", rtcDate.year, rtcDate.month, rtcDate.day, rtcDate.hour, rtcDate.minute, rtcDate.second); if (rtcDate.second == 30U) { __asm(" NOP"); __asm(" NOP"); __asm(" NOP"); } SNVS_HP_RTC_ClearStatusFlags(SNVS, kSNVS_RTC_PeriodicInterruptFlag); } if (SNVS_HP_RTC_GetStatusFlags(SNVS) & kSNVS_RTC_AlarmInterruptFlag) { __asm(" NOP"); dbg_info("Alarm:\r\n"); /* Clear alarm flag */ SNVS_HP_RTC_ClearStatusFlags(SNVS, kSNVS_RTC_AlarmInterruptFlag); } SDK_ISR_EXIT_BARRIER; } 我的初始化过程是这样的 SNVS_HP_RTC_GetDefaultConfig(&snvsRtcConfig); snvsRtcConfig.periodicInterruptFreq = 15; SNVS_HP_RTC_Init(SNVS, &snvsRtcConfig); dbg_info("SNVS HP example:\r\n"); /* Set a start date time and start RT */ rtcDate.year = 2014U; rtcDate.month = 12U; rtcDate.day = 25U; rtcDate.hour = 19U; rtcDate.minute = 0; rtcDate.second = 0; /* Set RTC time to default time and date and start the RTC */ SNVS_HP_RTC_SetDatetime(SNVS, &rtcDate); SNVS_HP_RTC_StartTimer(SNVS); dbg_info("\r\n"); SNVS_HP_RTC_GetDatetime(SNVS, &rtcDate); rtcDate.second = 30u; SNVS_HP_RTC_SetAlarm(SNVS, &rtcDate); /* Get alarm time */ SNVS_HP_RTC_GetAlarm(SNVS, &rtcDate); /* Print alarm time */ dbg_info("Alarm will occur at: %04hd-%02hd-%02hd %02hd:%02hd:%02hd\r\n", rtcDate.year, rtcDate.month, rtcDate.day, rtcDate.hour, rtcDate.minute, rtcDate.second); /* Enable SNVS alarm interrupt */ SNVS_HP_RTC_EnableInterrupts(SNVS, kSNVS_RTC_AlarmInterrupt); SNVS_HP_RTC_EnableInterrupts(SNVS, kSNVS_RTC_PeriodicInterrupt); NVIC_EnableIRQ(SNVS_HP_NON_TZ_IRQn); 在我的 ISR 中,我观察到当警报中断和定期中断同时发生时(HPSR 中的两个位都被设置),定期定时器标志将在 ISR 中首先被清除,因为它具有隐含优先级(如果检查定期 ISR,则优先)。在 if 块中,当定期计时器状态标志被清除时,由于某种原因,我看到我的警报状态标志也被清除,而定期计时器的定时器标志将再次转换为 1。只有下一次才会清除。正因为如此,我的闹钟中断服务完全失灵了。 是否在实施过程中出了什么问题? 谢谢! Re: Periodic & alarm interrupts on HPRTC within SNVS 您好! 了解。目前,我将只使用周期定时器来充当警报中断的角色。 感谢您的及时支持! Re: Periodic & alarm interrupts on HPRTC within SNVS 你好@AmanKumbhani, ,我复制了你的问题。我将在内部进行检查,以确认这是否是一个错误,或者这两个功能是否相互排斥。这可能需要一些时间。 不过,就您的应用而言,我认为以下 if 条件可以起到警报中断的作用: if (rtcDate.second == 30U) { __asm(" NOP"); __ asm(" NOP"); __asm(" NOP"); } BR Habib Re: Periodic & alarm interrupts on HPRTC within SNVS 嗨,哈比卜 感谢您的回复。老实说,我没有固定的用途。我正在对此进行测试,以便通过包装器为应用程序层提供功能,因此遇到了这个问题。 您能在自己的电脑上重现这个问题吗? 谢谢您! Re: Periodic & alarm interrupts on HPRTC within SNVS 你好,@阿曼-库姆巴尼、 对延迟回复表示歉意。为了更好地为您提供支持,能否请您说明申请的目的? 在我看来,您似乎可以完全依赖于周期性中断,因为您已经在每秒钟输入一次中断。你可以像在以下几行代码中一样简单地轮询秒值:i f (rtcDate.Second == 30U) { __asm(" NOP"); __ asm (" NOP "); __asm (" NOP "); } 最终,两种方法都会触发信号相同的中断,因此仅使用定期中断可能会简化您的实现。 BR Habib. Re: Periodic & alarm interrupts on HPRTC within SNVS 您好@AmanKumbhani, ,我将运行测试来复制这一问题,并详细查看这一行为。感谢您的耐心等待。 BR Habib. Re: Periodic & alarm interrupts on HPRTC within SNVS 嘿、 谢谢你的澄清!我会研究一下,并按照您的建议进行一次测试。 最好的 安缦 Re: Periodic & alarm interrupts on HPRTC within SNVS 你好,@阿曼-库姆巴尼、 造成这一问题的根本原因有两个。第一个问题与您配置 RTC 警报的方式有关: SNVS_HP_RTC_EnableInterrupts(SNVS, kSNVS_RTC_AlarmInterrupt); SNVS_HP_RTC_EnableInterrupts(SNVS, kSNVS_RTC_PeriodicInterrupt); 如第 24.6.1.3 章所述在 RM 中的 "SNVS_HP 控制寄存器(HPCR)"中,使能警报 "HPTA_EN "的位与 32 kHz 时钟同步。这意味着,当您设置其值时,需要等待它的更新,因为内核的运行速度通常比 32 kHz 快得多。这种等待机制的一个示例可以在启用 "RTC_EN "位的函数"SNVS_HP_RTC_StartTimer" 中看到,如下图所示: 另一方面,第二个问题与函数 "SNVS_HP_RTC_ClearStatusFlags "的工作方式有关。该函数对寄存器执行 OR 运算。下面就是一个例子: 寄存器:11 (两个标志都已设置。) 屏蔽:10(kSNVS_RTC_PeriodicInterruptFlag) OR:11 因此,当调用 "SNVS_HP_RTC_ClearStatusFlags "时,它将向 HPSR 寄存器写入 "0b11",从而清除周期和警报标志,因为这些位通过写入 1 来清除。因此,在清除状态标志之前,必须先读取这两个状态标志。因此,以下代码将导致错误: if (SNVS_HP_RTC_GetStatusFlags(SNVS) & kSNVS_RTC_AlarmInterruptFlag) { __asm(" NOP"); dbg_info("Alarm:\r\n"); /* Clear alarm flag */ SNVS_HP_RTC_ClearStatusFlags(SNVS, kSNVS_RTC_AlarmInterruptFlag); } 希望对您有所帮助。 BR Habib
View full article
哪种内存性能高?OCRAM 还是 SDRAM 我通过 16 个引脚的 semc 端口将 sdram( W9825G6KH-5i )连接到 rt1176。 我想知道哪种内存性能较高。 板上的片上 RAM 或 SDRAM。 回复:哪种内存性能高?OCRAM 还是 SDRAM 在内存方面,ITCM 和 DTCM 将是最快的,因为它们以与核心相同的速度运行并且不使用缓存。OCRAM 速度较慢(对于 memcpys 来说慢 3-4 倍,IIRC),因为它必须经过 AXI 总线和缓存。SEMC 可能无法比 OCRAM 更快(因为它使用相同的 AXI 总线和缓存),但确切的速度取决于设置。
View full article
S32G-VNP-RDB32 (SJA1110) 交换机中的寄存器访问 你好, 我想把值写进寄存器你能不能给我一个完整的地址来 读写地址 名称访问RESET描述 8Ch DYN_BE_LKP_ ENTRY0 R/W 0h (ffffFFe h) 8ch 之前的基址是什么?比如它会有 0x3fc0008c 所以在这个动态入口表中我们会有完整的地址你能不能给我 8Ch DYN_BE_LKP_ ENTRY0 R/W 0h (fffffF eh) 90h DYN_BE_LKP_ ENTRY1 R/W 0h 94h DYN_BE_LKP_ ENTRY2 R/W 0h 98h DYN_BE_LKP_ R/W 0h 98h DYN_BE_LKP_ ENTRY3 R/W 0h 9Ch DYN_BE_LKP_ ENTRY4 R/W 0h a0h a0h DYN_BE_LKP_ ENTRY5 R/W 0h A4H DYN_BE_LKP _CTRL R/W 0h (ff800000H) 你能不能给我提供在寄存器中配置动态条目的完整地址? 以及需要在 SJA1110 Switch 中实现此功能的地方 Re: Register Access in S32G-VNP-RDB32 (SJA1110) Switch 你好@Atkinson、 我知道这乍看起来可能并不简单,但实际上这个概念非常简单。 最终的寄存器地址取决于访问方法--是通过 AHB 在内部访问 M7 内核,还是通过 SPI_AP 接口从外部访问。基本地址因接入点而异。 寄存器地址使用 UM11107 表 2 中提供的基地址计算。例如,对于交换机子系统,SPI_AP 访问的基地址为0x00000000 ,AHB 访问的基地址为0xFF000000 。 在这种情况下,通过 AHB 访问寄存器0x8C (DYN_BE_LKP_ENTRY0)时,寄存器会变成0xFF00008C 。 现在,可能会让人感到困惑的地方来了:SDK 驱动程序定义了以下内容: #define SJA1110_L2_ART_LE_ADDR(0x3fc00023) /**< l2ArtLockedEntry 寄存器的地址 *   SWITCH_DRV_Write 例程将地址左移 2 位 (<< 2),用于内部 (AHB) 访问。对于 SPI 传输(级联开关设置中使用),不应用移位。因此,0x3fc00023 << 2 的结果是0xFF00008C。   我希望通过上面的解释,现在有感知了。   顺祝商祺! 帕维尔
View full article
i.MX95 上の dm-eiq-genai-flow-demonstrator に必要な BSP バージョン こんにちは、チーム 私は、Yocto 環境内で動作する i.MX95 プラットフォーム上の dm-eiq-genai-flow-demonstrator (GenAI Flow) を調査しています。以下を明確にしていただけますか: 1.デモをエンドツーエンドで実行するために最低限必要な BSP バージョン (例: L6.12.20_2.0.0) は何ですか? 2.この BSP には、LLM 推論 (RAG) をサポートするために必要なすべての要素 (更新された Neutron デリゲート、TFLite ランタイム、ツールなど) が含まれていますか? 3.このデモに推奨される追加の Yocto メタレイヤーまたはイメージレシピ (たとえば、meta-eiq-genai) はありますか? ご意見をよろしくお願いします! よろしくお願いします、 ヴァルシル・ガンジー Re: BSP Version Required for dm-eiq-genai-flow-demonstrator on i.MX95 こんにちは、ヴァルシルさん。 ご質問ありがとうございます。 それらの質問に答えてみたいと思います。 1. このパッケージは当初、i.MX95 rev Ax の Q1 BSP L6.12.3-1.0.0 用に作成されました。 2. このQ1 BSPには、LLM推論でNeutronを活用するために必要な機能が直接含まれていません。そのため、このパッケージはメタレイヤーを提供しています。 3. この meta-eiq-genai-flow メタレイヤーは、Neutron 上の LLM 操作を高速化し、CPU リソースの一部を解放するための Onnxruntime Neutron 実行プロバイダーを追加する可能性を提供します。これにはカーネルと Neutron Fw 用の関連パッチ/ファイルが含まれます。なお、このプロジェクトでは TF Lite ではなく onnxruntime を使用しています。 とはいえ、 Q2 BSP (例:L6.12.20_2.0.0)が本日リリースされます。i.MX95のB0リビジョンをサポートしていますが、NeutronのLLMアクセラレーションが利用できないため、CPUモードのみで動作します。 ありがとう、そしてよろしく。 ピエール  
View full article