Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
DDR4 calibration issues on LS1046 custom board Good day! We are trying to bring up our custom LS1046-based board up and stucked with DDR4 calibration procedure. SPD data of the modules is red successfully, calibration process starts successfully too, but after that it fails with this reason(log from CodeWarrior 😞  ############################### Run 1 Result for: wrlvl_searcher  ###################################### Test result: [ ============================================================ Updated: WRLVL_CNTL = 0x8655F605, WRLVL_CNTL_2 = 0x00000000, WRLVL_CNTL_3 = 0x00000000, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F60A, WRLVL_CNTL_2 = 0x0B0B0C0F, WRLVL_CNTL_3 = 0x0F10110D, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F60A, WRLVL_CNTL_2 = 0x0B0B0C0F, WRLVL_CNTL_3 = 0x0F101115, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F60A, WRLVL_CNTL_2 = 0x0B0B0C0F, WRLVL_CNTL_3 = 0x0F10111D, SDRAM_CLK_CNTL = 0x02800000 Write Leveling start values are correct and require no further modification, but the test failed due to other issues. Most common failure causes: -incorrect values configured in DDR4 DQn_MAP registers -incorrect ODT values -incorrect driver strength selected -incorrect timing values selected for Timing Configuration 0 properties (TIMING_CFG_0 register) < > {{Write Leveling start values are correct and require no further modification, but the test failed due to other issues.}} Err. capture registers: 0xE20, 0xDEADBEEF 0xE24, 0xDEADBEEF 0xE28, 0x00000000 0xE40, 0x00000000 0xE44, 0x00000000 0xE48, 0x0000001D 0xE4C, 0x60FF2001 0xE50, 0x00001FC0 0xE54, 0x00000000 0xE58, 0x00010000  ############################################ DQ mapping seems to be OK - we have 1:1 mapping from CPU to DDR slot, so we use DQ mappings from DDR module SPD without changing. What can be the problem?  Re: DDR4 calibration issues on LS1046 custom board Is there available RCW on the customer board? Has the ASLEEP led turned on and off? What's the frequency of the DDR clock? Thanks Re: DDR4 calibration issues on LS1046 custom board DDR calibration is performed using a hardcoded RCW. System clock - 100 MHz  DDR bus clock - 800 MHz, DDR data rate - 1600 mt/s Memory module - non-ECC. One interesting thing - from timer to time the 1 st stage of calibration (wrtlvl search) is successfully passed. For example: Test result: [ ================================================= Updated: WRLVL_CNTL = 0x8655F605, WRLVL_CNTL_2 = 0x00000000, WRLVL_CNTL_3 = 0x00000000, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F609, WRLVL_CNTL_2 = 0x0A0B0C0E, WRLVL_CNTL_3 = 0x0F10110D, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F609, WRLVL_CNTL_2 = 0x0A0B0C0E, WRLVL_CNTL_3 = 0x0F101115, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F609, WRLVL_CNTL_2 = 0x0A0B0C0F, WRLVL_CNTL_3 = 0x0F10111D, SDRAM_CLK_CNTL = 0x02800000 < > Err.capture registers: 0xE20, 0x00000000 0xE24, 0x00000000 0xE28,0x00000000 0xE40,0x00000000 0xE44,0x00000000 0xE48, 0x0000001D 0xE4C, 0x00000000 0xE50,0x00000000 0xE54,0x00000000 0xE58, 0x00010000 Dump: 0xF00,0x00000000 0xF04, 0x00000002 0xF08, 0x0000000F 0xF0C,0x14000C20 0xF10, 0x00000000 0xF14, 0x00000000 0xF18, 0x00000000 0xF1C, 0x00000000 0xF20, 0x00000000 0xF24, 0x2F003000 0xF28, 0x32003400 0xF2C, 0x39003B00 0xF30, 0x3C003E00 0xF34, 0x00005000 0xF38, 0x00000000 0xF3C, 0x00000000 0xF40, 0x00000000 0xF44, 0x00000000 0xF48, 0x00000001 0xF4C, 0xD4000000 0xF50, 0x13001500 0xF54, 0x17001900 0xF58, 0x1D001F00 0xF5C, 0x21002200 0xF60, 0x3A000000 0xF64, 0x00009000 0xF68, 0x00000020 0xF6C, 0x00000000 0xF70, 0x0070006F 0xF74, 0x00000000 0xF78, 0x00000000 0xF7C, 0x00000000 0xF80, 0x00000000 0xF84, 0x00000000 0xF88, 0x00000000 0xF8C, 0x00000000 0xF90, 0x00000000 0xF94, 0x80000000 0xF98, 0x00000000 0xF9C, 0x34043104 0xFA0, 0x35043304 0xFA4, 0x31043304 0xFA8, 0x2F043104 0xFAC, 0x04040000 0xFB0, 0x00000003 0xFB4, 0x1F1E1F21 0xFB8, 0x1E1C1F1D 0xFBC, 0x1F1B1D1E 0xFC0, 0x1C1B1C1C 0xFC4, 0x1F1E1F22 0xFC8, 0x1F1F2120 0xFCC, 0x1F1E1F20 0xFD0, 0x1C1D201F 0xFD4, 0x1F1B1B1E 0xFD8, 0x1F1D1E1C 0xFDC, 0x1F1F1D1F 0xFE0, 0x1F1D1E1C 0xFE4, 0x1F1C191A 0xFE8, 0x1C1D1C1A 0xFEC, 0x1F1E1C1E 0xFF0, 0x1E1F1E1A 0xFF4, 0x1F1F1F1F 0xFF8, 0x1F1F1F1F 0xFFC, 0x1F000000 Data: 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000f 0x0000000f 0x00000010 0x00000011 0x0000001d   Just after that I start calibration process again(without any changes in settings) and get a fail: ########## Result for: wrlvl_searcher ######  Test result: [ Updated: WRLVL_CNTL = 0x8655F605, WRLVL_CNTL_2 = 0x00000000, WRLVL_CNTL_3 = 0x00000000, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F609, WRLVL_CNTL_2 = 0x0A0B0C0E, WRLVL_CNTL_3 = 0x0F10110D, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F609, WRLVL_CNTL_2 = 0x0A0B0C0E, WRLVL_CNTL_3 = 0x0F101115, SDRAM_CLK_CNTL = 0x02800000 ============================================================ Updated: WRLVL_CNTL = 0x8655F609, WRLVL_CNTL_2 = 0x0A0B0C0E, WRLVL_CNTL_3 = 0x0F10111D, SDRAM_CLK_CNTL = 0x02800000 Write Leveling start values are correct and require no further modification, but the test failed due to other issues. Most common failure causes:   - incorrect values configured in DDR4 DQn_MAP registers  - incorrect ODT values  - incorrect driver strength selected  - incorrect timing values selected for Timing Configuration 0 properties (TIMING_CFG_0 register) < > {{Write Leveling start values are correct and require no further modification, but the test failed due to other issues.}} Err. capture registers: 0xE20, 0xDEADBEEF     0xE24, 0xDEADBEEF     0xE28, 0x00000000     0xE40, 0x00000000      0xE44, 0x00000000     0xE48, 0x0000001D     0xE4C, 0x60FF2001     0xE50, 0x00001FC0      0xE54, 0x00000000     0xE58, 0x00010000      Dump: 0xF00, 0x00000000     0xF04, 0x00000002     0xF08, 0x0000000E     0xF0C, 0x14000C20      0xF10, 0x00000000     0xF14, 0x00000000     0xF18, 0x00000000     0xF1C, 0x00000000      0xF20, 0x00000000     0xF24, 0x2F003100     0xF28, 0x33003400     0xF2C, 0x3A003A00      0xF30, 0x3C003E00     0xF34, 0x00005000     0xF38, 0x00000000     0xF3C, 0x00000000      0xF40, 0x00000000     0xF44, 0x00000000     0xF48, 0x00000001     0xF4C, 0xD4000000      0xF50, 0x13001500     0xF54, 0x17001900     0xF58, 0x1D001F00     0xF5C, 0x21002200      0xF60, 0x3A000000     0xF64, 0x00009000     0xF68, 0x00000020     0xF6C, 0x00000000      0xF70, 0x0070006F     0xF74, 0x00000000     0xF78, 0x00000000     0xF7C, 0x00000000      0xF80, 0x00000000     0xF84, 0x00000000     0xF88, 0x00000000     0xF8C, 0x00000000      0xF90, 0x00000000     0xF94, 0x80000000     0xF98, 0x00000000     0xF9C, 0x31022F02      0xFA0, 0x33023102     0xFA4, 0x30023102     0xFA8, 0x2E022F02     0xFAC, 0x02020000      0xFB0, 0x10000003     0xFB4, 0x46444650     0xFB8, 0x45445142     0xFBC, 0x51445052      0xFC0, 0x46454544     0xFC4, 0x45434651     0xFC8, 0x44455045     0xFCC, 0x46455051      0xFD0, 0x45455146     0xFD4, 0x52505052     0xFD8, 0x52505246     0xFDC, 0x50464546      0xFE0, 0x51465042     0xFE4, 0x53464650     0xFE8, 0x52515145     0xFEC, 0x50454546      0xFF0, 0x45505142     0xFF4, 0x46464646     0xFF8, 0x52515350     0xFFC, 0x00000000        Data:  0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000025  ######################################################## Also I' ve noticed that Lane 8 is probed during calibration process, despite to that fact that ddr module is non-ecc and ecc is disabled in project settings.   Re: DDR4 calibration issues on LS1046 custom board 1.The QCVS does not support hardcoded RCW official, valid RCW has to be presented in the RCW source flash or SD card. Would you kindly program the RCW into the flash first, and then do the QCVS DDR validation. 2.Run the command below in the CCS: (bin) 42 % delete all (bin) 43 % config cc cwtap (bin) 44 % show cc (bin) 45 % ccs::config_chain {ls1043a dap sap2} (bin) 46 % display ::ccs::get_config_chain (bin) 47 % ccs::reset_to_debug Send the logs to me. 3.would you kindly share the schematics and confirm the layout follow the AN5097, Hardware and Layout Design Considerations for DDR4 SDRAM Memory Interfaces Thanks Re: DDR4 calibration issues on LS1046 custom board The problem was solved by updating to new version of QCVS(4.27.0)
記事全体を表示
RDB3 Linux 以太网配置 本文档为在恩智浦 S32G-VNP-RDB3 开发板上配置和测试网络连接提供了实用指南。它概述了准备硬件和软件环境、设置网络参数以及验证主板与主机系统之间通信的基本步骤。该指南还解释了板网络架构的关键方面,并提供了在 Linux 和 U-Boot 级别调整配置的说明。其目的是为从事汽车网络应用以太网支持和验证的工程师提供参考。 本文档是对之前的 S32G-VNP-RDB2 参考设计以太网支持指南的更新,其中纳入了特定于 RDB3 平台和更新 电路板支持包 版本的更改和注意事项。 S32G
記事全体を表示
在线纠错码:它的作用以及如何实现 在线纠错码 (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 处理器 日本博客
記事全体を表示
Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, I am trying to execute basic ethernet testing from custom project on custom board. As a part of this project (which integrates different modules like SD card, CAN ,GPIO,ADC, Ethernet and EEPROM) basic ethernet send and receive is to be verified. But I am facing "freed buffer out of range error" before ping send. I have done all the basic initializations and configurations related to ethernet. I see the error is observed because of line  LWIP_ASSERT("Freed buffer out of range", ((idx >= 0) && (idx < ENET_RXBUFF_NUM))); in function "ethernetif_rx_free" (enet_ethernetif_kinetis.c) where the idx value I am getting it in negative. This complete functionality is working on EVK kit. What could be missing? Kindly suggest. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, All The issue happens to me too on my RT1024 customer board, it is likely to happen when i put a breakpoint somewhere and it stops here, and then resume to normal running is more likely  ends up this error. Regards! Ping Re: Freed Buffer out of Range Issue in Ethernet for RT1170 If the example project is working fine in your custom board, seems the problem is on SW side. You are not using FreeRTOS right? Seems there is something interfering with the behavior of the example, probably some configurations are missing or just the example flow is being affected due the rest of the application. I would recommend you to try to use the latest SDK release which is 2.15.000. If your issue still occurs with this release, then I’m afraid there is something wrong with the flow of your application. Regards, Daniel. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, Yes, the issue appears when implementing the merged source code in custom board. But, the individual source of Ethernet_ping,which was not merged with remaining interfaces is working fine in Custom board. Problem arises when the individual source of Ethernet is merged with remaining interfaces. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 If I am understanding correctly, when you run the SDK example it works. But when you add your custom application, the issue appears. Can you confirm? Regards, Daniel. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, Actually the individual source code of Ethernet is working fine in Custom board. When I'm trying to integrate the code then Ethernet is not working. I observed that EIR register's 25th (RXF), 26th (TXB), and 27th (TXF) bits are set to 0, and the RDAR register's 24th bit is updated to 0. But in working code of Ethernet this registers are set to '1'.  I suspect that these register updates are handled by interrupts, but I am unable to locate the specific handler responsible for these updates in my custom project codebase. Kindly help me. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Could you please double check if there are any peripheral changes (i.e. peripheral instances) needed in your project in order to make the EVK example work in your custom hardware? In case you already verified this, seems the problem is on the HW side. By any chance have you already verified your design with the HDG? Regards, Daniel. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, I am using SDK version 11.6.1. I'm trying to test lwip_ping_bm_cm7 example. It is working fine in EVK. But it is not working in custom board when tried to interface all the source codes with Ethernet. What might be the issue if we are facing "Freed Buffer out of range" occurs. Please help me with this. Re: Freed Buffer out of Range Issue in Ethernet for RT1170 Hi, What SDK version are you using? What is the SDK example you are using to test this? If I understood correctly, the application works fine in an EVK, am I right? Regards, Daniel.
記事全体を表示
S32N55: ストリームゲートを無効にするRTD API こんにちは、チームの皆さん S32N55 リファレンス マニュアルによると、1588 タイマーの TMROFF_H/L を変更する前に、ストリーム ゲート インスタンスを無効にする必要があります。 現在、RTD のストリーム ゲート機能を無効にする API があるかどうか教えてください。 BR、 ブリジット RTD Re: S32N55: RTD API to disable the Stream Gate こんにちは、 ユーザーマニュアルを再度確認して確認します Re: S32N55: RTD API to disable the Stream Gate こんにちは@Bridget S32N_RTD_R21-11_1.8.0_CD07 のユーザー マニュアルによると、ストリーム ゲートを有効/無効にするには、構成ツール (EB Tresos) で設定します。 EthCtrlConfigEnableStreamGating = FALSE 設定 Re: S32N55: RTD API to disable the Stream Gate こんにちは、クオンさん。 gPTP 同期中など、場合によっては、実行時に TMROFF_H/L の値を更新する必要がある場合があります。S32N55 リファレンス マニュアルによると、1588 タイマーの TMROFF_H/L を変更する前に、Stream Gate インスタンスを無効にする必要があります。 このような状況では、Stream Gate 機能を無効/有効にする API が必要であると考えます。あなたが言及した EB の構成では、このシナリオを処理できないようです。 現在、RTD にストリーム ゲート機能を無効/有効にする API があるかどうか教えてください。 BR、 ブリジット
記事全体を表示
MCXN647との接続問題(Ee(42)エラー) こんにちは、 FRDM-MCXN947に問題があります。プロジェクトをデバッグまたはフラッシュしようとすると、次のエラーが発生します。 関係があるかどうかはわかりませんが、while(1) ループのこの行を変更して頻度を上げたときに発生しました: SDK_DelayAtLeastUs( 30000 , SystemCoreClock); -> SDK_DelayAtLeastUs( 10000 , SystemCoreClock); 問題が発生する前にアップデートしていなかったのですが、その後LinkFlashをアップデートしても何も解決しませんでした。 すでに SPT 消去を試しましたが、機能しませんでした。(多分、やり方が間違っていたのでしょう。) SPT では、ISP モードを有効にした後、「イメージの構築」および「イメージの書き込み」操作を実行できましたが、消去はまだ機能しません。 ご協力をよろしくお願いいたします。 追伸: 英語と専門用語が下手で申し訳ありません。私は工学部でこのプロジェクトを始めたばかりです。 ブートROM|ブート|フラッシュ クロック|タイマー MCX N USB Re: Connection problem with MCXN647 (Ee(42) error) こんにちは@Peter-D SPT ツール内のフラッシュ プログラマーを使用して、blinky SDK デモを消去およびプログラムし、正常に動作するかどうかを確認してください。詳細は添付の動画をご参照ください。 これらの手順がうまく機能しても、オンボード デバッガーでデバッグできない場合は、外部デバッガーを使用してテストしてください。 まだ問題がある場合は、お気軽にお問い合わせください。 よろしくお願いします。 BR アリス Re: Connection problem with MCXN647 (Ee(42) error) こんにちは@Alice_Yang 、 ご返信ありがとうございます。 ビデオの指示に従いましたが、その方法で LED が点滅しました。 ただし、MCUXpresso IDE からデバッガーに戻ると、同じエラーが発生します。 問題がオンボード デバッガーから発生している場合、特に私が使用しているボードは学校で貸与されたものなので、PEMicro や SEGGER J-Link (それが言及されている場合) などの外部デバッガーを購入するつもりはありません。 解決策が見つからない場合は、私のプロジェクトでも機能するフラッシュ プログラマーを引き続き使用し、教授に外部デバッガーがあるかどうかを尋ねます。 よろしくお願いいたします。 ピーター Re: Connection problem with MCXN647 (Ee(42) error) こんにちは@Peter-D あなたのボード上のデバッガーが実際に壊れているかどうかはわかりません。次の手順に従って、デバッガー ファームウェアを更新してください: https://docs.nxp.com/bundle/UM12018/page/topics/Updating_MCU_Link_firmware.html 更新後、ボードの電源を入れ直し、MCUXpresso IDE で新しいワークスペースを作成し、新しい SDK デモをインポートして、再度デバッグを試みます。 ビデオを撮って私と共有していただけると嬉しいです。確認をお手伝いします。 よろしくお願いします。     BR アリス Re: Connection problem with MCXN647 (Ee(42) error) こんにちは@Alice_Yang ご返信よろしくお願いします。 提案されたとおりに LinkServer を更新しましたが、問題が発生した後にすでに更新されていたと思います。とにかくもう一度アップデートを試み、ボードの電源を入れ直し、新しいワークスペースを作成し、デモ プロジェクトをインポートしましたが、デバッグしようとすると同じ Ee(42) エラーが発生します。 プロセスを示す短いビデオを録画したので添付します。 ご協力ありがとうございました。良い新年をお迎えください。 よろしくお願いします、 ピーター Re: Connection problem with MCXN647 (Ee(42) error) こんにちは@Peter-D ビデオをありがとう。 .launch ファイル (下の画像) を削除して、ボードを再度消去してください。 デバッグを開始するには、下の図に示すデバッグ ボタンを使用します。 それでも動作しない場合は、ボードを交換することをお勧めします。 ちなみに、私は正月休みを頂き、1月5日に復帰します。もしご不明な点がございましたら、当日にお問い合わせください。 ご理解のほどよろしくお願いいたします。新年あけましておめでとうございます。 BR アリス
記事全体を表示
SAF - ASIL Certification Hi Support, Customer is using S32K31 with SW32K3_SAF_1.0.5_D2503.  They are asking for our SAF ASIL certificates, or any document to show it is ASIL "ready/compliance". Regards, Marcus Safety_SW Re: SAF - ASIL Certification Hi Support, Any updates? Re: SAF - ASIL Certification Hi Marcus, for every premium SAF package there is possible to download Safety SW Assessment Summary report. For SAF 1.0.5 I can see that on Flexera available as well: S32K3_SAF_1.0.5_Safety_SW_Assessment_Summary.pdf Kind Regards, Radoslav Re: SAF - ASIL Certification Hi @marcuslim , It is now technically and legally restricted to share files with customers, only legal way is via sales force I think. Anyway, I wanted screenshot from nxp.com from SAF product page, same as I have shared, to see that is really missing. How does customer get the release? Safety Assessment should be there, everybody else can see that. I'm attaching here internally the report and let you find the way how to legally share the file with the customer. But please try to explain the customer proper way how to get it nxp.com=>Software accounts=>Automotive SW - S32K3 Premium Software=>Automotive SW - S32K3 - Safety Software Framework Kind Regards, Radoslav Re: SAF - ASIL Certification Thanks Radoslav! The customer has found the document.  We can close this thread. Regards, Marcus
記事全体を表示
如何使用恩智浦 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 的联系人,以澄清这个问题。谢谢
記事全体を表示
i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Hello NXP community members, I have a custom board with an IMX6ULL and Qualcomm BT+Wifi combo chip on it. This project is based on Yocto kirkstone, linux-imx 5.15.71 kernel version. The communication method between mx6ull and qca9377 is sdio. I have a few questions about the occasional communication errors that occur during sdio communication between mx6ull and qca9377. 1. Set dts to use sdio clock speed of 132MHz imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; &iomuxc { pinctrl_usdhc1: usdhc1grp { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10071 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 0x130b0 >; }; pinctrl_usdhc1_100mhz: usdhc1grp100mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170b9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100b9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9 >; }; pinctrl_usdhc1_200mhz: usdhc1grp200mhz { fsl,pins = < MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170f9 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100f9 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9 >; }; }; 2.  mmc0 info # cat /sys/kernel/debug/mmc0/ios clock: 132000000 Hz actual clock: 132000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 6 (sd uhs SDR104) signal voltage: 1 (1.80 V) driver type: 0 (driver type B) 3. Sometimes the sdio communication error log like below is printed AR6000: SDIO bus operation failed! MMC stack returned : -84 __HIFReadWrite, addr:0X001000, len:00000256, Read , Sync Debug Assert Caught, File /usr/src/debug/kernel-module-qca9377/3.1-r0/git/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c, Line: 1459, Test:status == A_OK || status == A_ECANCELED "Change sdio clock speed (132MHz -> 50MHz)" 1. set dts to use sdio clock speed of 50MHz. imx6ul-14x14-evk.dtsi &usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; bus-width = <4>; vmmc-supply = <&reg_sd1_vmmc>; pm-ignore-notify; keep-power-in-suspend; non-removable; status = "okay"; }; 2.  mmc0 info # cat /sys/kernel/debug/mmc0/ios clock: 50000000 Hz actual clock: 44000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 2 (sd high-speed) signal voltage: 0 (3.30 V) driver type: 0 (driver type B) 3. sdio communication error log is not displayed. 1. The sdio communication between mx6ull and qca9377 seems unstable when the sdio clock is set to 132MHz. Is there a way to improve it by modifying the dts value? 2. If not possible, what value do you recommend using for the sdio clock value? Thank you in advance. Best regards  i.MX6 All i.MX6UL Linux Yocto Project Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) refer to the data sheet, Signaling level of SDR104/SDR50 mode is 1.8 V. Pls check your HW and double confirm this Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Dear  Joan Xie, Thank you for fast reply.   Let me explain ​a little more.   <HW> - Soc is NXP mx6ull processor (MCIMX6Y2DVM09AB) - mmc0 is connected to Qualcomm BT/WiFi Combo chip (sdio connection) -> 132MHz, 1.8V - mmc1 connected to 8G eMMC  -> 132MHz, 1.8V   <mmc0>     # cat /sys/kernel/debug/mmc0/ios     clock:     132000000 Hz     actual clock:  132000000 Hz     vdd:      21 (3.3 ~ 3.4 V)     bus mode:    2 (push-pull)     chip select:  0 (don't care)     power mode:   2 (on)     bus width:   2 (4 bits)     timing spec:  6 (sd uhs SDR104)     signal voltage: 1 (1.80 V)     driver type:  0 (driver type B)   <mmc1>     # cat /sys/kernel/debug/mmc1/ios     clock:     132000000 Hz     vdd:      21 (3.3 ~ 3.4 V)     bus mode:    2 (push-pull)     chip select:  0 (don't care)     power mode:   2 (on)     bus width:   3 (8 bits)     timing spec:  9 (mmc HS200)     signal voltage: 1 (1.80 V)     driver type:  0 (driver type B)   <Description> - Communication with the eMMC connected to mmc1 is running at 132MHz, 1.8V and there are no issues. - The sdio communication with the BT/WiFi chip connected to mmc0 is also driven at 132MHz, 1.8V, but intermittent sdio communication errors occur.   More questions is loke below: 1. For eMMC(mmc1), it seems to be guaranteed for HS200 (132MHz/1.8V), but for SDIO(mmc0) it seems to be guaranteed only up to 104MHz in SDR104 mode. Check please? 2. If so, is the maximum sdio clock speed guaranteed by the mx6ull chip up to 104MHz?    (I would like to confirm whether the MX6ULL chip can guarantee SDIO 132MHz clock speed.) Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Thank you for your fast reply. About question 1, I think I was a big mistaken. Sorry about that. And I checked that you  mentioned like below ""SD/SDIO UHS-I mode (up to 208 MHz in SDR mode, up to 50 MHz in DDR mode)" So, if we use sdr104 in mmc0, the maximum clock is 208MHz, so is it possible to guarantee a 132MHz clock? Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) 1. For eMMC(mmc1), it seems to be guaranteed for HS200 (132MHz/1.8V), but for SDIO(mmc0) it seems to be guaranteed only up to 104MHz in SDR104 mode. Check please? >refer to the data sheet, can up to the UHS-I SDR104 mode 104MB/s max, not 104Mhz max, refer to the RM: SD/SDIO UHS-I mode (up to 208 MHz in SDR mode, up to 50 MHz in DDR mode) 2. If so, is the maximum sdio clock speed guaranteed by the mx6ull chip up to 104MHz? (I would like to confirm whether the MX6ULL chip can guarantee SDIO 132MHz clock speed.) >you can refer to the data sheet, for SDR104, the frequency can up to the 200Mhz, we have tested SDR104 on the mmc0 up to the 198Mhz, refer to your log, it seems your mmc1 works under  HS200?you can measure the clock by oscilloscope Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) yes, you can refer to the dtsi file, which set the 132M as default, you also can dump the clock tree to check if the clock is 132Mhz or not Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Thank you joanxie, I'll check more to see if it's actually a clock speed issue and ask again. Thanks. Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) I debugged the above content in SW. Please answer my questions after confirming the details. 1. Chip Errata for the i.MX 6ULL     "ERR010450 MMC: EMMC can only run under or equal to 150 MHz"     https://www.nxp.com/docs/en/errata/IMX6ULLCE.pdf        2. SW debug 1) error value define     include/uapi/asm-generic/errno.h:67:#define EILSEQ 84 /* Illegal byte sequence */ 2) EILSEQ setting location     - cmd         drivers/mmc/host/sdhci.c: sdhci_cmd_irq()             if (intmask & (SDHCI_INT_TIMEOUT | SDHCI_INT_CRC | SDHCI_INT_END_BIT | SDHCI_INT_INDEX)) {                 if (intmask & SDHCI_INT_TIMEOUT)                     host->cmd->error = -ETIMEDOUT;                 else                     host->cmd->error = -EILSEQ;                         - data         drivers/mmc/host/sdhci.c: sdhci_data_irq()             if (intmask & SDHCI_INT_DATA_TIMEOUT)                 host->data->error = -ETIMEDOUT;             else if (intmask & SDHCI_INT_DATA_END_BIT)                 host->data->error = -EILSEQ; 3) log     [418.109795] [sdhci_cmd_irq()] intmask = 0xa0001     [418.114178] [sdhci_data_irq()] intmask = 0x200002     [418.118999] AR6000: SDIO bus operation failed! MMC stack returned : -84     [418.125847] __HIFReadWrite, addr:0X000800, len:00000044, Read , Sync     [418.144284] Debug Assert Caught, File /usr/src/debug/kernel-module-qca9377/3.1-r0/git/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c, Line: 1459, Test:status == A_OK || status == A_ECANCELED 3. SDHCI register 1) intmask value of sdhci_cmd_irq() is 0xa0001     Bit 0  (0x00001)😞 SDHCI_INT_RESPONSE  -> Command response OK     Bit 17 (0x20000)😞 SDHCI_INT_INDEX     -> Command index error     Bit 19 (0x80000)😞 SDHCI_INT_CRC       -> Command CRC error 2) intmask value of sdhci_data_irq() is 0x200002     Bit 1  (0x00002)😞 SDHCI_INT_DATA_END  -> Data OK     Bit 21 (0x200000)😞 SDHCI_INT_DATA_CRC -> Data CRC error 4. guess the casue     According to imx6ull Errata ERR010450,     "SDR104 at 1.8 V can only work below or equal to 150 MHz."     If it can operate at up to 150MHz, it seems likely that cmd/data CRC errors will occur at 132MHz due to timing margins caused by temperature/voltage fluctuations, etc. 5. Question     Currently, we are in a situation where we cannot adjust the value through HW tuning and must respond through SW.     It seems that lowering the sdio clock value can reduce or eliminate the CRC error rate. What is NXP's opinion? Thank you. Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Dear joanxie, Based on what you provided, I tested using the register below. sdhci-esdhc-imx.c #define ESDHC_MIX_CTRL_SMPCLK_SEL (1 << 23) #define ESDHC_MIX_CTRL_AUTO_TUNE_EN (1 << 24) #define ESDHC_MIX_CTRL_FBCLK_SEL (1 << 25)     SMPCLK_SEL        0     AUTO_TUNE_EN   1     FBCLK_SEL            1 1. test 1     1) set AUTO_TUNE_EN 1 -> 0     2) log         [ 39.150703] AR6000: Unregistering with the bus driver     3) wlan0 registration fail         $ ifconfig wlan0 up         ifconfig: SIOCGIFFLAGS: No such device 2. test 2     1) set FBCLK_SEL 1 -> 0     2) log         [ 39.160750] AR6000: Unregistering with the bus driver     3) also wlan0 registration fail         $ ifconfig wlan0 up         ifconfig: SIOCGIFFLAGS: No such device 3. test 3     1) set AUTO_TUNE_EN 1 -> 0 && FBCLK_SEL 1 -> 0     2) System freezes during boot as shown in the log below         [ 18.834619] wlan: loading driver v4.5.25.65         [ 18.894917] hifDeviceInserted: Dumping clocks (50000000,132000000) I tried modifying and testing it by referring to articles in the NXP community, but I was not satisfied with the results. Please note. Thanks for your help Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) I consulted from wireless team, they have already verified WIFI with imx6ull via usdhc, and can set max clock is 150Mhz, so for imx6ull side, can support this, and I found some WIFI chip would affect autotunning, so I suggest that you can disable these registers to check, if these aren't your root cause, I suggest that you need check your HW and pcb design, if you couldn't confirm this, you can submit a ticket for SCHEMATIC review Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) I consulted from wireless team, they have already verified WIFI with imx6ull via usdhc, and can set max clock is 150Mhz, so for imx6ull side, can support this, and I found some WIFI chip would affect autotunning, so I suggest that you can disable these registers to check, if these aren't your root cause, I suggest that you need check your HW and pcb design, if you couldn't confirm this, you can submit a ticket for SCHEMATIC review Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Dear joanxie, Thank you for fast reply. I'll let you know after check refer to your guide. Have a nice day and weekend! Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) this is what I talked about before, the detailed information about auto-tuning affect the failure https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Dear joanxie, Thank you for your kind guide. I debugged this issue by referring to the link you provided. 1. patch 1    1) patch using refer to the link you provided       https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/uSDHC-auto-tuning-and-possible-SDIO-failures/ta-p/1352855 2. patch 2    1) add "fsl,sdio-async-interrupt-enabled" on dts file imx6ul-14x14-evk.dtsi: &usdhc1 { fsl,sdio-async-interrupt-enabled; //add this line     2)  below part is enabled sdhci-esdhc-imx.c: usdhc_auto_tuning_mode_sel() /* * If sdio device use async interrupt, it will use DAT[1] to signal * the device's interrupt asynchronous when use 4 data lines. * Then hardware auto tuning circuit MUST NOT check the DAT[1] line, * otherwise auto tuning will be impacted by this async interrupt, * and change the delay cell incorrectly, which then cause data/cmd * errors. * This is the hardware auto tuning circuit limitation. */ if (imx_data->boarddata.sdio_async_interrupt_enabled) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; After patching the above, the problem was not reproduced through debugging. (sdio clock changing test(50MHz->100MHz->132MHz), ping test, iperf3 test etc..) Just one more question to confirm patch you guide. If I apply this patch, the problem will be fixed, but is there any possibility that it will have other effects on the sdio communication between mx6ull and the wifi chip?   Thank you for your support. Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) it's glad to hear these patch work, but in fact the new bsp already merge the, as I known, I don't hear any other exist issue between imx6ull and wifi chip Re: i.MX6ULL: Issue with 132MHz sdio clock out for BT+WiFi chip(Qualcomm QCA9377) Thank you joanxie, I aslo check another yocto version (imx-6.6.52, fslc-6.1.72) I found  similar patch like below on yocto scarthgap imx-6.6.52 version /* * For USDHC, auto tuning circuit can not handle the async sdio * device interrupt correctly. When sdio device use 4 data lines, * async sdio interrupt will use the shared DAT[1], if enable auto * tuning circuit check these 4 data lines, include the DAT[1], * this circuit will detect this interrupt, take this as a data on * DAT[1], and adjust the delay cell wrongly. * This is the hardware design limitation, to avoid this, for sdio * device, config the auto tuning circuit only check DAT[0] and CMD * line. */ if (imx_data->init_card_type == MMC_TYPE_SDIO) auto_tune_buswidth = ESDHC_VEND_SPEC2_AUTO_TUNE_1BIT_EN; esdhc_clrset_le(host, ESDHC_VEND_SPEC2_AUTO_TUNE_MODE_MASK, auto_tune_buswidth | ESDHC_VEND_SPEC2_AUTO_TUNE_CMD_EN, ESDHC_VEND_SPEC2); but not patched on yocto scarthgap fslc-6.1.72 version. I will check other yocto version using your guidance.  Thank you for support.
記事全体を表示
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。
記事全体を表示
在 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
記事全体を表示
S32K322 で can1 を core1 に割り当てる方法 こんにちはNXPサポーター、 現在、MCALでS32K322を使用していますが、Core0でCAN0を、Core1でCAN1を実行したいと考えています。 私が理解している限りでは、まず EB で CAN と Platform の両方の MultiCore サポートを有効にし、EcucPartition 関連のモジュールを適切に構成する必要があります。 実行時に、Core1 の main 関数で Platform_Init() と Can_43_FLEXCAN_Init() を呼び出します。 Core1 で CAN1 を実行するにはこれで十分ですか、それとも CAN1 を Core1 に適切に割り当てるために他に何かする必要がありますか? ありがとうございます! よろしくお願いいたします クーパー24025
記事全体を表示
imx93_ota“此 wic 之后不会终止标签” 我使用“./assemble_base_image.sh -e -b imx93”命令创建了“swu_singlecopy_rescue_imx93_emmc_20240605.sdcard”文件。请使用uuu升级“swu_singlecopy_rescue_imx93_emmc_20240605.sdcard”文件。出现错误。 “此 wic 不会终止标签” D:\share\imx-matter_2023-q4_imx8mmevk-matter>uuu.exe -b emmc_all swu_singlecopy_rescue_imx93_emmc_20240605.sdcard 适用于 nxp imx 芯片的 uuu(通用更新实用程序)--libuuu_1.5.165-0-g7347a80 成功 0 失败 1 2:33 1/ 1 [此 wic 在 ] SDPS 后没有终止标签:boot -scanterm -f swu_singlecopy_rescue_imx93_emmc_20240605 D:\share\imx-matter_2023-q4_imx8mmevk-matter>暂停 请按任意键继续。 。 。 回复:imx93_ota“此 wic 之后未终止标签” 这个回复表明你作为 NXP 工程师对 NXP BSP 源代码一无所知。 此外,根本原因不是扩展名 .sdcard。 在您的意见中,如果将 .wic 重命名为 .sdcard,则可以更改图像。它需要 dd 命令。 在你的脑海里,就像一个 .txt文件,当您重命名为.mp4时,它就可以变成一部电影。 回复:imx93_ota“此 wic 之后未终止标签” 思考! 回复:imx93_ota“此 wic 之后未终止标签” @tgt007我已经通过私人消息向您发送了答案并列出了此根本原因的所有源代码。 您可以决定现在就公开它。 我稍后会公开它,以便让 NXP 工程师有机会真正阅读他们自己已经存在多年的代码。 回复:imx93_ota“此 wic 之后未终止标签” 如果NXP工程师不了解自己的代码,那么我可以为您提供培训并提供这个问题的答案。 回复:imx93_ota“此 wic 之后未终止标签” AN13872 回复:imx93_ota“此 wic 之后未终止标签” 如何生成WIC文件。此命令“./assemble_base_image.sh -e -b imx93”自动生成SDCARD文件。
記事全体を表示
FRDM-K64F mcuexpresso 在多个目标之间切换 当您通过拔下旧目标/插入新目标来切换目标后进行调试时,它会要求您通过序列号确认目标。我想保留三个目标并能够在它们之间切换,无需拔掉电源即可进入此确认屏幕,但看不到执行此操作的选项。由于 USB 连接器断断续续,我损坏了一台价值 700 美元的逻辑分析仪,并且不想对我的任何评估套件也发生同样的问题! 回复:FRDM-K64F mcuexpresso 在多个目标之间切换 埃里希,您是一位学者,也是一位绅士!非常感谢。幸运的是,昨天由于磁盘错误,我刚刚升级到 24.12,并且运行良好! 干杯 奈杰尔 回复:FRDM-K64F mcuexpresso 在多个目标之间切换 非常感谢您辛勤地帮助我。现在您的评论“进入闪光屏幕”引起了我的兴趣。你的意思是有一个图标可以故意输入吗?如果是的话我还没有找到。重新插入模块后,我唯一可以进入它的时间是当我进入“调试(项目名称)链接服务器调试”时。或者也许存在一个项目设置,当我在重建后尝试调试时,我还没有找到它来输入?我已经浏览了所有设置和图标来寻找这样的快捷方式! 回复:FRDM-K64F mcuexpresso 在多个目标之间切换 感谢您对我的问题的考虑,但我已经了解该屏幕并使用过它。问题是,如果不拔掉模块,我就无法进入该屏幕。如果它找不到最后编程的模块,它就会出现,否则它将始终重新刷新最后一个模块而不会弹出该对话框!我需要的是一种无需拔掉刚刚闪现的目标即可更改目标的方法。 回复:FRDM-K64F mcuexpresso 在多个目标之间切换 谢谢您的回复,但我想您误解了我的困境。我有三个相同的 MCU,当我打开刚刚收到的三个 MCU 时,总共有六个。我正在构建一个将使用所有这六个的网络项目。它们都是相同的 FRDM-K64F,并且都将运行相同的代码。当我更新代码时,我需要立即将其加载到每个模块中,以便它们保持同步。拥有六个不同的项目并且每次代码更改时都更新所有六个项目将非常耗时。现在我正在拔下每个模块并插入下一个模块来刷新它们。这会导致 USB 插座因磨损而出现一些间歇性故障。我想一直保留它们并选择从 MCUexpresso 中刷新和运行哪一个。 谢谢! 奈杰尔
記事全体を表示
在 IMX8mm 上编程 SJC_DISABLE、JTAG_SMODE 和 JTAG_HEO 熔丝 你好 在 AN4581 应用笔记第 5.7 节中,建议对 SJC_DISABLE、JTAG_SMODE 和 JTAG_HEO 熔丝进行编程以完全保护设备,但是同时看 IMX8MMRM 和 IMX8MMSRM,我找不到这些熔丝的确切位置(银行、字、位)。在哪里可以找到这些信息? 谢谢! Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 你好,我是@igorpadykov、 如果您能把这些信息也发给我,我将不胜感激。 预先致谢 Dj Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 您好, 您能否将这些信息也发给我? 另外,imx8m nano 和 mini 之间有区别吗? Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 我们也希望得到这些信息。 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 嗨,@伊戈尔帕季科夫、 我需要有关 imx8m mini 熔丝的信息。能否请您提供给我?出于网络安全原因,我需要禁用 JTAG。 最好的奖励 胡利安 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM @igorpadykov 你还能把 JTAG_HEO 熔丝的信息发给我吗? 谢谢! Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 您也能与我分享一下吗?为什么这不只是发布在公共应用程序备注、参考手册或网络安全参考手册中?通过隐蔽实现的网络安全不是网络安全。 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 您能公开这封邮件吗?为什么安全参考手册中没有列出这些信息?对于i.MX8M Nano,这已在网络安全参考手册中列出。但是我不知道 Mini 是否使用同样的熔丝。 此外,AN4581 还列出了值得关注的熔丝 DIR_BT_DIS。但我找不到任何参考。 Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 我们还想在 imx8m-mini 上禁用 JTAG,但我在《参考手册》修订版 2,2019 年 8 月 8 日第 6.2 章 Fusemap 中找不到任何有关它的信息。您能为我指明正确的方向吗? 谢谢! Re: Programming SJC_DISABLE, JTAG_SMODE and JTAG_HEO fuses on iMX8MM 嗨 Rodrigo_travess 附加信息已通过邮件发送。 问候 igor
記事全体を表示
requset activation code for S32DS V2.2 The license of S32 Design Studio for ARM v2.2 was expired.  Please give me a valid code. Re: requset activation code for S32DS V2.2 Hi,  your S32DS license has been extended. 
記事全体を表示
使用LPC4370的GPIO产生的脉冲长度无法控制 我尝试使用LPC4370的GPIO来产生一对长度200ns左右的Push,Pull脉冲。一开始我使用定时器中断嵌套GPIO控制的方法实现,但观察示波器发现这种方法实现的脉冲宽度非常不稳定,能明显观察到既有ns级别的脉冲也有us级别的脉冲,并且无法控制。我尝试分析问题,但是无从下手,希望有人能够帮忙提供解决方法,或者帮忙指出问题出在哪里。这是我的中断函数, 其余相关代码及图像在楼下附上。 void TIMER2_IRQHandler(void) { /* Clear timer interrupt */ Chip_TIMER_ClearMatch(LPC_TIMER2, 1); *gpnot = 0x02; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x40; } 回复: 使用LPC4370的GPIO产生的脉冲长度无法控制 非常感谢,我参考这个示例实现了我的需求 回复: 使用LPC4370的GPIO产生的脉冲长度无法控制 Hi @Maf33  生成对齐互补的脉冲,请参考: https://www.nxp.com/docs/en/application-note/AN11538.zip   这个应用笔记基本涵盖了了SCTimer所有基本的用法。 BR Alice 回复: 使用LPC4370的GPIO产生的脉冲长度无法控制 非常感谢回复,具体时序要求见楼下,似乎sct的pwm控制没办法做到这样子的时序? 回复: 使用LPC4370的GPIO产生的脉冲长度无法控制 您好,非常感谢回复@Alice_Yang 我这边对push和pull的时序有要求,我之前的尝试过程中,sct的pwm控制的话好像无法做到边沿对齐(50ns以内的延迟也可以)并且发射三个脉冲?我不是很确定,也许只是我sct的做法不对?motorcontrolpwm功能似乎可以达成要求,但很可惜只在bga256封装的LPC4370上面支持,我所使用的是bga100的封装版本。 回复: 使用LPC4370的GPIO产生的脉冲长度无法控制 我的实际工程中需要HSADC配合定时器触发,当我试着产生仅仅一个脉冲的情况下,仍然无法产生200ns的脉冲,大部分时候产生的都是1us多的脉冲,甚至同样的延时方法无法得到相同的延时(包括NOP)。在一些测试中,可以在示波器上同时看到200ns的脉冲和1us的脉冲。 回复: 使用LPC4370的GPIO产生的脉冲长度无法控制 我一开始怀疑问题出在定时器,于是我将定时器移除,使用单纯的for循环的来实现周期,这样可以达成我的需求:产生200ns宽度的Push Pull脉冲各三个,但当我用同样的方法将脉冲个数提高到四个甚至更多的时候,就又不受控制了,从图片中可以很明显看到,200ns的脉冲宽度直接变成了不同长度的us级别脉冲。 #define TICKRATE_HZ 1000 volatile uint32_t *gpset = &LPC_GPIO_PORT->SET[1]; volatile uint32_t *gpclr = &LPC_GPIO_PORT->CLR[1]; volatile uint32_t *gpnot = &LPC_GPIO_PORT->NOT[1]; int main(void){ /* —— 时钟与板级初始化 —— */ SystemCoreClockUpdate(); Board_Init(); DEBUGOUT("SystemCoreClock = %d Hz\r\n", SystemCoreClock); // Chip_GPIO_Init(LPC_GPIO_PORT); DEBUGSTR("GPIO driver init done\r\n"); /* —— PUSH: GPIO1[1] 输出 —— */ Chip_SCU_PinMux(1, 8, MD_EHS, FUNC0); LPC_GPIO_PORT->DIR[1] |= 1<<1; /* —— PULL: GPIO1[6] 输出 —— */ Chip_SCU_PinMux(1, 13, MD_EHS, FUNC0); LPC_GPIO_PORT->DIR[1] |= 1<<6; *gpset=0x42; while (1) { for(int i=0;i<180000;i++){} *gpnot = 0x02; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x42; for(int j=0;j<2;j++){} *gpnot = 0x40; } return 0; }
記事全体を表示
用于 NFC 驾驶舱的 SPI 适配器 你好 我找到了你的 PN5180 和其他阅读器的探索板,它上面似乎有一个 USB <-> SPI 适配器,所以 NfcCockpit 可以用它与 PN5180 之类的东西通信。 我的问题是:有没有基于 Arduino 的固件可以实现同样的功能? 我有很多基于 esp32 或 rp2040 的板,但你提供的固件似乎不支持它们... Re: SPI Adapter for the NFC Cockpit 你好,谢谢你的建议! 最后,我设计了自己的解决方案: https://github.com/dakhnod/NFCCockpitSPIAdapter 再次感谢! Re: SPI Adapter for the NFC Cockpit 你好@dakhnod 1.我的问题是:有没有基于 Arduino 的固件可以实现同样的功能? 没有,没有基于 Arduino 的固件。 2。我有很多基于 esp32 或 rp2040 的板,但你提供的固件似乎不支持它们... 你可以将 NFC COCKPIT VCOM 移植到 tesp32 或 rp2040,源代码可以从 NFC Cockpit 下载|恩智浦半导体
記事全体を表示
TEA2017 27-30V 550W 设计,PFC Mosfet 在 DCM/QR/CCM 模式下迅速发热。 你好我正在处理一个客户项目,该项目采用 TEA2017 PFC 和 LLC 设计,电压为 27-30V,功率为 550W。 最初,我们使用固定频率 55khz 的 PFC,mosfets 的温度比平时高,但仍可通过散热片控制,但现在我们正试图提高 PFC 的效率。因此采用 DCM/QR/CCM 模式。遗憾的是,在我们的设计中,在 DCM/QR/CCM 模式下,mosfets 的温度会迅速升高到失效温度。 我们尝试过但没有成功的方法: 1:使用晶体管作为栅极驱动器来驱动 Pfc 栅极 2:确认我们的开关是在振荡周期之后和 DrainPFC 下降时进行的。 3.禁用 LLC 并将负载直接连接到 Vboost,以测试/调整 PFC(结果:茶水没有切换 PFC,Vboost 保持在 327V(SNSBoost 为 2V)) 我们的设计或 TEA 设置没有太大变化,因为我们正在尝试测试 DCM/QR/CCM。任何正确方向的帮助/线索都将非常有用。 我已经公布了原理图的 PFC 部分,我们使用的是 CONFIG_D。 Re: TEA2017 27-30V 550W Design, PFC Mosfet rapidly getting hot with DCM/QR/CCM Mode. HI 1:您应该确认哪个元器件变热了电感器或其他元器件,然后提供散热解决方案。 2: 您也可以按照所附的 excel 计算表配置电路,然后更新原理图。
記事全体を表示
配置自定义 SCP03 密钥的指南 嗨,@Kan_Li、 我正在使用 ESP32 主机和 SE050C1。环境详情: Plug& Trust: v3.0.6 (Mini) SE050 小程序版本:03 01 01 6F FF 01 0B 我可以使用默认密钥打开安全通道,在 SE 上生成 EC 密钥对,并成功创建 CSR。 现在我想配置一次自己的 SCP03 密钥集(ENC/MAC/DEK、AES-256),将其存储在新密钥版本下的 SE050 上,然后始终使用该版本打开 SCP03 会话。 我需要你做什么 v3.0.6 中 PUT KEY 的应用程序接口/示例(迷你版) 在我的 Mini drop 中,我看到了 INS_GP_PUT_KEY 的定义,但我没有找到类似 Se05x_API_PutKeys()、nxScp03_ChangeKeys() 或 ex_scp03_change_keys 示例这样的高级辅助函数。 能否确认 Mini v3.0.6 是否包含 SCP03 键盘旋转助手? 如果回答为 "是":我应该调用哪些源文件和函数,以及包含哪些头文件? 如果否:请分享使用迷你 APDU 传输(例如,Se05x_API_Transceive/Se05x_API_SendAPDU)通过已打开的 SCP03 会话发送GlobalPlatform PUT KEY(CLA=0x80,INS=0xD8)的推荐方法(和最小代码示例),包括 ENC/MAC/DEK 和KCV计算的预期TLV 格式。 v3.0.6 中的 AES (SCP03) 验证上下文结构 我的启动环境是 gex_ss_boot_ctx.ex_se05x_auth。   ex_se05x_auth.param.scp03.ex_static. Enc/Mac/Dek ex_se05x_auth.param.scp03.keyVer 我通过 argv(--auth aes)选择 AES,并将密钥载入 ex_static.{Enc,Mac,Dek}。和版本号输入 keyVer。 请确认 v3.0.6 Mini 的正确字段名称,这样我就不用靠反复试验来确定了。 参考实现/路径 如果在完整的 Plug& Trust(非迷你版)中有演示 SCP03 密钥更新的示例,能否告诉我确切的路径和函数名称,以便我在迷你版中照搬该逻辑?我寻找的典型名字 examples/sss/ex_scp03_change_keys.* hostlib/hostLib/libCommon/scp/nxScp03.* hostlib/hostLib/libSE05X/src/*scp03* 或任何 INS_GP_PUT_KEY 的用法。 版本& 密钥长度 我计划使用 AES-256(32 字节密钥)和新的密钥版本(例如 0x11)。在小程序03 01 01 6F FF 01 0B 的密钥版本选择或最小密钥长度方面,有什么限制或最佳实践建议吗? 工具替代品 如果推荐的方法是使用一次配置,然后将我的固件切换为始终使用新密钥打开,那么您能否分享工具名称/命令(以及从何处获取)。 我的直接障碍是 Mini 中缺少 PUT KE Y 的可调用助手;如果你能在此小程序版本中共享 SE050 所期望的确切 APDU 构建和发送顺序,我很乐意实现原始 APDU。 非常感谢你的指导! 致以最崇高的敬意, Reddy A71CH SE050 Re: Guidance to provision custom SCP03 keys 你好@Rutwik0409、 到目前为止,我们只在MW的完整版和纳米版中提供了PlatformSCP密钥轮换演示,但是我认为您只需要在每个设备生命周期中运行一次此类应用程序,因此您可以尝试将纳米代码包移植到您的平台上作为快速解决方案。请参阅https://github.com/NXPPlugNTrust/nano-package/tree/master/examples/se05x_rotate_scp03_keys了解详情。 希望对你有所帮助、 祝您愉快, Kan ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请另开新主题,并参考已关闭的主题。 -------------------------------------------------------------------------------
記事全体を表示