Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 理解和使用.sdcard格式 Yocto Communiy BSP 和 Release BSP 中默认启用的一个非常有用的功能是在 .sdcard 中生成烘焙图像的选项格式。 如果 .sdcard默认情况下未选择格式,可以在 conf/local.conf 文件上通过添加 IMAGE_FSTYPES 来启用它,如下所示: IMAGE_FSTYPES="sd卡" 值得注意的是,如果指定了这个变量,那么只会创建类型定义的文件系统。此变量最常用的默认值是: IMAGE_FSTYPES="tar.bz2 ext3 sd卡" .sdcard 格式创建一个包含所有必要分区的映像,并将引导加载程序、内核和 rootfs 加载到该映像中。您可以使用 dd 将此文件中的数据低级复制到 SD 卡设备,如以下命令示例所示: $ sudo dd if=.sdcard of=/dev/sd bs=1M && 同步 .sdcard 上使用的分区文件 .sdcard 分区如下所示: IMAGE_ROOTFS_ALIGNMENT 为引导加载程序保留的未分区空间 引导空间 Kernerl 和其他数据 根文件系统大小 根文件系统。 在 RootFS 分区上授予更多可用空间 .sdcard 的大小文件将完全取决于 rootfs 的大小。这意味着,除非我们向 rootfs 分区添加额外的空间,否则生成的文件将不会对我们所有的 SD 卡容量进行分区。(当然,一旦加载到 SD 卡上,总是可以选择编辑分区) 为了添加更多空间,您可以使用 IMAGE_ROOTFS_EXTRA_SPACE 变量。您可以将其添加到 local.conf 文件中,并添加以 KB 为单位的可用磁盘空间。例如,如果您想保证 1GB 的额外空间,您可以将以下行添加到您的 local.conf 文件。 IMAGE_ROOTFS_EXTRA_SPACE = "1048576" 值得注意的是,这是 IMAGE_OVERHEAD_FACTOR 变量的附加空间,该变量定义了应用于初始图像大小的乘数。这仅适用于乘数乘以 默认情况下,构建过程对此变量使用乘数 1.3。当使用此方法确定最终生成的图像大小时,此默认值会导致 30% 的可用磁盘空间添加到图像中。这意味着在安装后脚本之前应该有 30% 的可用磁盘空间。如果您希望获得更多空间,可以按如下方式编辑此变量: 图像开销因子 = "1.5" 这将导致在安装后脚本之前向映像中添加 50% 的可用磁盘空间,并且不考虑可能来自包管理系统的开销。 IMAGE_ROOTFS_SIZE 是如何计算的 这个变量也是以千字节为单位,它由 OpenEmbedded 构建系统使用一种算法来确定,该算法考虑了用于生成图像的初始磁盘空间、图像的请求大小(通过开销因素)以及要添加到图像的额外可用空间(通过额外空间变量)。 构建系统首先运行 du(磁盘使用情况)命令来确定 rootfs 目录树的大小。如果 IMAGE_ROOTFS_SIZE 当前值大于磁盘使用量乘以开销因子,则仅添加额外的空间。如果 IMAGE_ROOTFS_SIZE 小于磁盘使用量乘以开销因子,则在添加额外空间之前将磁盘使用量乘以开销因子。 IMAGE_ROOTFS_SIZE 必须设置为默认值,该值通常非常低,因为它只是在每次烘焙图像时初始化并根据实际尺寸要求进行更新。 您也可以直接使用此变量来选择要分配给 RootFS 的空间。例如,将 RootFS 设置为 2GB 需要在 local.conf 文件中添加以下内容: IMAGE_ROOTFS_SIZE = “2097152” 图像开销因子 = “1.0” 在这个例子中,我们将开销因子保留为 1,这样就不会添加额外的空间,因为我们指定了我们想要的 rootfs 大小。 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你知道发生了什么事吗?在 tmp/deploy/images/ / 文件夹中,较短的 sdcard 文件名只是较长文件名的链接。运行 dd 命令时我总是使用较长的文件名。 另外,我发现引导加载程序中存在严重的 CRC 环境错误。无论出于何种原因,总是要求您第一次从新映像的卡启动时中断启动,然后输入“saveenv”(不带引号),然后重置。这也许可以解决你的问题。每次我将新图像写入 SD 卡时,我都必须这样做。 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您可能从网页上复制粘贴了命令“IMAGE_ROOTFS_SIZE = “2097152””,但其中的双引号字符( “ ”)有误。请将其替换为“linux double quote "”,解析错误即可消失。 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 根据第一段,该文档似乎在说这些变量中的任何一个都应该添加到 conf/local.conf。 然而,当我添加 IMAGE_ROOTFS_SIZE = “2097152” 图像开销因子 = “1.0” 到我的 conf/local.conf 文件,我收到 bitbake 错误: 错误:/home/user/yocto/build/conf/local.conf:26 处的 ParseError:未解析的行:'IMAGE_ROOTFS_SIZE =“2097152”' 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 是否会逐步淘汰这一模式,转而采用“WIC”模式?rocko repo 无法构建 .sdcard默认文件。 有人知道是否有关于 WIC 文件格式的类似描述以及如何使用它吗? 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您能分享一下您的解决方案吗?谢谢 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 事实证明,如果更改制造工具脚本,制造工具也可以创建多个分区。该文档包含在制造工具下载中。我计划使用 *.sdcard 图像对我的设备上 eMMC 进行编程,并且无论如何都需要使用制造工具。制造工具中的默认设置甚至不使用 *.sdcard 图像,所以我想我现在不需要解决这个特定问题。 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> jtis我也有同样的问题。我正在尝试做同样的事情。 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好, gusarambula ,这份文档包含非常重要和有用的信息,希望下次你能在教程中向我们解释所有可以使用命令“dd”应用于带有 i.MX 的 SD 的选项。 请继续努力 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 非常感谢您的反馈! Bio_TICFSL ,我终于可以提到你了。您能否对此文档提出评论? 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 非常好的文档,特别是关于扩展分区容量的主题,看起来像是一个常见问题解答。 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 非常好的文档! 回复:.sdcard 指南格式 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 很棒的文件,古斯塔沃。
查看全文
美国 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 研讨会文件
查看全文
都灵理工大学苏默里飞思卡尔杯队技术报告 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 都灵理工大学 Sumery 队飞思卡尔杯技术报告 - 2015 年 EMEA 总决赛 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 都灵理工大学 Sumery 队飞思卡尔杯技术报告 - 2015 年 EMEA 总决赛
查看全文
AMF-ACC-T1659 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 除了故障安全系统架构之外,容错能力在高度自动化的汽车中也变得越来越重要。本次会议讨论了容错系统架构的理论基础,并展示了如何使用飞思卡尔微控制器构建这些架构,特别是在高级驾驶辅助系统 (ADAS) 领域。利用飞思卡尔汽车产品组合中内置的关键功能安全概念,可以实现高效、可扩展的解决方案,涵盖从故障安全系统到容错和故障运行架构的范围。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 除了故障安全系统架构之外,容错能力在高度自动化的汽车中也变得越来越重要。本次会议讨论了容错系统架构的理论基础,并展示了如何使用飞思卡尔微控制器构建这些架构,特别是在高级驾驶辅助系统 (ADAS) 领域。利用飞思卡尔汽车产品组合中内置的关键功能安全概念,可以实现高效、可扩展的解决方案,涵盖从故障安全系统到容错和故障运行架构的范围。
查看全文
所有电路板的 GPIO 测试常见问题解答(FAQ) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 虽然您可以自行开发驱动程序来在内核空间中控制 GPIO,但从用户空间访问 GPIO 有一种更为简便的方法。当时间要求不严格时,您可以使用 GPIO-SYSFS。 SYSFS 是一个虚拟文件系统,它将内核内部框架的一些功能导出到用户空间,而 GPIO 是可以通过 SYSFS 导出功能的框架之一。 GPIO-SYSFS 功能自内核 2.6.27 版本起,在所有主线内核中均已可用。 配置内核以通过SYSFS导出GPIO 要在 SYSFS 中启用 GPIO,请选择以下内核选项: 设备驱动程序 ---> --- GPIO 支持 [*] /sys/class/gpio/... (sysfs 接口) 如果您使用的是 i.MX233 或 i.MX28,在重新编译内核后,请务必重新生成引导流,因为即使在 ltib 环境下,这一操作也不会自动完成。 请确认您打算使用的引脚确实可用作 GPIO 引脚,且未被内核请求(gpio_request)。如果某个引脚已通过 gpio_request 进行了请求,您需要在内核中使用 gpio_export 导出该引脚,以便通过 SYSFS 进行访问。若引脚未被默认配置为 GPIO,您需要在 /arch/arm/mach-XXX中的相应文件中设置 IO MUX。 在用户空间访问GPIO 启用 GPIO-SYSFS 功能后,您可以使用新内核启动设备,以进行一些测试。 首先,您需要将要测试的 GPIO 导出到用户空间: echo XX > /sys/class/gpio/export XX 应由以下算法确定: GPIOA_[B] 是您需要导出的 GPIO,其中,“A” 表示 GPIO 组,“B” 表示该组中引脚的偏移量。若第一个可用的 GPIO 存储区是 0 // (例如 iMX.28) XX = A×32 + B; 否则 // 第一个 GPIO 存储区是 1 XX = (A-1)×32 + B; 导出 GPIO 引脚后,您将能够看到 GPIO 接口被导出到: /sys/class/gpio/gpioXX 通过该接口,您现在可以执行一些操作,例如: # 读取引脚值 cat /sys/class/gpio/gpioXX/value # 更改引脚方向 echo in > /sys/class/gpio/gpioXX/direction echo out > /sys/class/gpio/gpioXX/direction # 切换 GPIO 输出电平 echo 0 > /sys/class/gpio/gpioXX/value echo 1 > /sys/class/gpio/gpioXX/value 需要特别注意的是,通过 GPIO 虚拟文件系统,每次只能操作一个 GPIO 引脚(每个命令仅针对一个引脚)。 关于:所有电路板常见问题解答 GPIO 测试 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这或许是个愚蠢的问题,但我要怎样才能知道哪个引脚在物理上与 gpioXX 相连呢?
查看全文
Example_C40_Ip_ECC_Fault_Skip_S32K312_DS34_RTD2211_v1 ************************************************************************************************ * 详细说明: * 此示例展示了如何跳过在 C40_Ip_Read() 期间导致无法纠正的 ECC 错误异常的指令。 * ----------------------------------------------------------------------------------------------- * 测试硬件:S32312EVB-Q172 * MCU:S32K312 * 调试器:S32DS 3.4、PEMicro Multilink * 目标:internal_FLASH ************************************************************************************************* 回复: Example_C40_Ip_ECC_Fault_Skip_S32K312_DS34_RTD2211_v1 Hi @danielmartynek      RTD3.0.0 P01里有这个选项,RTD3.0.0 P07里则没有这个选项了。     目前已移植到RTD3.0.0 P07版本上验证可以了。     用C40_Ip_ReportEccUnCorrectedError();替换了C40_Ip_DsiHandler(); 回复: Example_C40_Ip_ECC_Fault_Skip_S32K312_DS34_RTD2211_v1 @danielmartynek  请问下在RTD3.0.0 P07下,C40_Ip_DsiHandler函数已经没有了,该怎么处理异常呢?请帮忙指导下,谢谢。
查看全文
Matlab2023a 调用 S32DS3.5 时遇到错误 亲爱的MBDT团队:我们使用 MATLAB 2023a 脚本在编译 Simulink 模型后生成代码,然后调用 eclipsec.exe 进行无界面后台编译。构建完成后,将在 Simulink 诊断查看器中创建一个超链接,用于直接打开与已编译项目对应的工作区。该工作流在 S32DS 3.4 版本中运行非常顺利。然而,在升级到 S32DS 3.5.8 之后,出现了两个问题:问题 1:单击 Simulink 创建的超链接将启动后台进程 s32ds.exe,随后会弹出一个窗口,并立即关闭。我们尝试了多种解决方案,例如在 s32ds.ini 文件中添加参数 `"-vm \bin\javaw.exe" `(但这对 s32ds.exe 没有任何影响),并在系统环境变量中将 JDK 11 设为优先选项。这些尝试都没有解决问题。问题 2:如前所述,通过 MATLAB 脚本调用 eclipsec.exe 会触发屏幕截图中显示的错误:Java 已启动但返回退出代码 =1。我们将"\bin\javaw.exe、" 以及 JDK 11 的路径设置为系统环境变量的最前项。命令提示符正确显示了 Java 11(64 位),但 Simulink 编译时仍试图加载 jvm.dll。删除"client\jvm.dll 后"或者"server\jvm.dll" ,程序会改为定位 java.exe,但仍会报告错误,退出代码为 4。此外,在所有情况下,手动编译依然能够成功。所有相关的文件和设置都将上传以供您参考。请帮忙提供一些建议,以解决这个问题。谢谢。 Re: Matlab2023a Envokes S32DS3.5 Encountered Error 你好, 从你的信息来看,我理解你有一个 Simulink 模型,并使用 Embedded Coder 为其生成代码。然后您设置了一个使用 eclipsec 编译代码的工作流程。我发现的主要问题是 MATLAB 目前没有使用正确的 Java 版本。你有没有尝试就这个问题联系过他们? 此外,我怀疑您没有使用 NXP 开发的基于模型的设计工具箱(例如,S32K3、S32K1 等)。如果我错了,请告诉我。 此致, 索林·班奇拉
查看全文
FAQs – NXP TJA1445, TJA1446, TJA1465 and TJA1466 CAN Transceivers with Partial Networking Introduction This document summarizes the most common customer questions regarding the NXP TJA1445, TJA1446, TJA1465 and TJA1466 CAN transceivers. It is intended as a practical guide covering basic product selection, partial networking, wake-up behavior, low-power operation, and key implementation considerations. 1) What are the TJA1445, TJA1446, TJA1465 and TJA1466 devices? They are high-speed CAN transceivers that provide the physical interface between a CAN/CAN FD controller and the two-wire CAN bus. All four devices support partial networking via selective wake-up, enabling low-power ECU operation while still allowing wake-up by a valid bus event or local wake input. 2) What is the main difference between the 1445/1446 and 1465/1466 families? The TJA1445/TJA1446 are high-speed CAN FD transceivers, while the TJA1465/TJA1466 are CAN SIC transceivers with Signal Improvement Capability, which reduces ringing and enables reliable communication in more complex topologies and at higher CAN FD speeds. The TJA1465/TJA1466 can support CAN FD up to 8 Mbit/s, whereas the TJA1445/TJA1446 target up to 5 Mbit/s CAN FD. 3) What is the difference between TJA1445 and TJA1446? Both support CAN FD and partial networking, but the TJA1446 adds advanced system monitoring features such as a Q&A watchdog, RST_N, LIMPFSO_N, and accurate VIO undervoltage/overvoltage monitoring. The TJA1445 does not include these monitoring and safety interface features. 4) What is the difference between TJA1465 and TJA1466? Both devices support CAN SIC, partial networking, and CAN FD/XL passive behavior, but the TJA1466 additionally integrates the watchdog, VIO monitoring, RST_N, and LIMPFSO_N fail-safe/limp-home support. The TJA1465 is the simpler CAN SIC partial networking transceiver without these advanced monitoring functions. 5) What is Partial Networking (PN), and why is it useful? Partial Networking allows ECUs that are not needed to remain in low-power mode while selected ECUs remain active on the bus. A sleeping node can be woken by a local wake event or by a remote selective wake-up frame containing the ECU-specific CAN identifier. This reduces vehicle power consumption and is especially useful for modern vehicles and EVs. 6) What is selective wake-up? Selective wake-up is the PN feature in which the transceiver does not wake up on arbitrary CAN traffic, but only on a valid wake-up frame matching the configured identifier, and optionally also matching DLC and data mask conditions. This helps keep undesired ECUs asleep even while other CAN messages are present on the bus. 7) What is the difference between CAN wake-up pattern (WUP) and wake-up frame (WUF)? A Wake-Up Pattern (WUP) is a low-level CAN bus pattern used to activate biasing and trigger wake-up when selective wake-up is not active. A Wake-Up Frame (WUF) is a valid CAN frame checked by the PN filter and used for selective wake-up when PN is configured and enabled. 😎 Which device should I choose for 8 Mbit/s CAN FD or more demanding network topologies? For higher CAN FD speeds and more challenging topologies, the TJA1465/TJA1466 are the preferred options because they include Signal Improvement Capability, which significantly reduces signal ringing and enables reliable operation up to 8 Mbit/s CAN FD. 9) Which VIO voltages are supported? The TJA1445/TJA1465 support interfacing with 1.8 V, 3.3 V, and 5 V MCUs. The TJA1446/TJA1466 are offered as dedicated variants: A = 1.8 V, B = 3.3 V, and C = 5 V-oriented / higher-voltage VIO variants. The 1446/1466 variant must be chosen to match the target MCU I/O level. 10) What supply pins do these transceivers use? They use three main supply pins: VBAT, VCC, and VIO. VBAT is the main supply and must be present in all operating modes, VCC supplies the CAN transmitter and biasing, and VIO supplies the digital interface level adaptation to the MCU. 11) What operating modes are available? The devices support Normal, ListenOnly, Standby, and Sleep modes. In Normal, the node can transmit and receive. In ListenOnly, the receiver is active but the transmitter is disabled. Standby is the first-level low-power mode with INH active, and Sleep is the deeper low-power mode with INH inactive. 12) What is the purpose of ListenOnly mode? ListenOnly mode is intended for node diagnosis, failure containment, and pretended networking use cases. In this mode the device can receive CAN traffic but does not actively transmit onto the bus. In low-power ListenOnly configurations, the receiver can remain active while minimizing current consumption. 13) How is local wake-up performed? Local wake-up is performed through the WAKE pin, which can be configured to detect rising and/or falling edges. A local wake-up request is registered when the new WAKE level remains stable for at least the configured wake filter time. 14) What are typical WAKE pin application examples? Typical examples include a switch to ground, connection to an ignition signal, or using the INH output of another transceiver as the wake source. We also provide design guidance for ESD protection and resistor/capacitor selection in these WAKE circuits. 15) What is the INH pin used for? The INH output is used to control external regulators or high-side enable logic so that the MCU and related circuitry can be automatically powered down in low-power modes and re-enabled on wake-up. In Sleep mode, it allows the transceiver to keep wake-up capability while the rest of the ECU is powered down. 16) How is selective wake-up configured? Selective wake-up is configured via SPI by programming the PN ID registers, ID mask, frame control, and data rate/filter registers. If data-field-based wake-up is needed, the DLC and data mask registers are also configured. The configuration becomes active after setting CPNC = 1 and PNCOK = 1. 17) What happens if I change a PN register after configuration? When the content of any PN-related register is changed, PNCOK is automatically cleared, and it must be set again to load and activate the updated PN configuration. 18) Can the device wake on identifier only, or also on data? Both are possible. The devices support identifier-only filtering when PNDM = 0, and identifier + DLC + data mask filtering when PNDM = 1. With data mask filtering, the wake-up decision also depends on the configured DLC and data mask bits. 19) Can Remote frames be used for selective wake-up? If PNDM = 1 and the selective wake-up checks the data field, Remote frames are not supported because they do not carry data. If Remote frames need to be able to trigger wake-up, identifier-only filtering should be used instead PNDM = 0. 20) How many MCU pins are needed to interface these devices? For the TJA1445/TJA1465, typically six MCU pins are needed: four SPI pins plus TXD and RXD. For the TJA1446/TJA1466, typically seven MCU pins are needed because the RST_N pin should also be connected to the MCU. 21) Are the SPI pins shareable with other peripherals? Yes. SCK, SDI, and SDO may be shared with other devices, but the transceiver requires its own dedicated SCSN chip-select. Daisy-chain SPI connections are not supported. 22) What are the GPIO pins used for? On the TJA1445B/TJA1465B, three GPIOs are available, and on the TJA1446/TJA1466, two GPIOs are available. They can be configured for general-purpose I/O and various special functions, including additional TXD/RXD, status signaling, wake-up input behavior, and other remote I/O style uses. 23) Can one transceiver be connected to two CAN controllers? Yes. GPIO1/2 can be configured as RXD2/TXD2, allowing a second CAN controller in the MCU to connect to the same transceiver. 24) What is TXEN_N and how does it behave? On the TJA1445B/TJA1465B, TXEN_N is the transmitter enable/disable control. A HIGH level on TXEN_N disables the CAN transmitter. In low-power modes, special care is needed so that the pin does not unnecessarily increase quiescent current if VIO remains present. 25) What extra features do TJA1446/TJA1466 provide for safety and system monitoring? The TJA1446/TJA1466 provide a Q&A watchdog, RST_N, LIMPFSO_N, and VIO undervoltage/overvoltage monitoring. They can supervise the MCU, detect fault conditions, trigger system reset, and support limp-home or fail-safe strategies in the ECU. 26) What is LIMPFSO_N used for? LIMPFSO_N can be configured either as a limp-home output or as a fail-safe output, depending on the system safety concept. In a limp-home application, it can activate backup hardware in case of failure. In a fail-safe application, it can keep safety-relevant hardware disabled until correct system operation is confirmed. 27) What is RST_N used for on TJA1446/TJA1466? RST_N is a bidirectional active-low reset pin used both to reset the MCU in response to transceiver-detected failures and to allow the transceiver to detect reset-related fault conditions from the system side. It should be connected to the MCU reset input. 28) What ESD robustness is specified on CANH and CANL? The quick reference data in the datasheets specifies ±8 kV IEC 61000-4-2 ESD handling capability on CANH and CANL. External protection components can still be considered if required by the application environment. 29) Is there any timing requirement for the first SPI access after power-up or wake-up? Yes. For the TJA1445/TJA1465 family, the first SPI interaction should occur within the MCU reaction timeout after power-up or wake-up from Sleep; otherwise the device may automatically enter Sleep mode with wake-up sources enabled. This mechanism helps limit battery drain if the MCU fails to initialize correctly. 30) Are there any common pitfalls when entering Sleep mode? Yes. Before entering Sleep, the required wake-up sources must be enabled and pending wake-up interrupts should be cleared. The transceiver will not enter Sleep unless at least one main wake-up source is enabled and all wake-up interrupts are cleared. 31) Can these devices support in-system MCU flashing through the CAN bus? Yes. The datasheets describe Start-to-Normal (SNM) behavior, which allows the device to enter Normal mode directly after boot if the CAN bus is held dominant before the internal check completes. This can support generic bootloader or end-of-line flashing use cases. 32) Are these devices safety-oriented parts? Yes. All four families were developed in compliance with ISO 26262 and achieve ASIL B. The TJA1446/TJA1466 go further with advanced monitoring and fail-safe-oriented interfacing. 33) Which packages are available? The TJA1445A/TJA1465A are available in SO14 and HVSON14, while the B variants are available in DHVQFN18. The TJA1446/TJA1466 are available in DHVQFN18. 34) Where can I find example initialization and SPI command guidance? For practical implementation guidance, we provide AN14388 for TJA1445/TJA1465 and AN14452 for TJA1446/TJA1466. These application notes include SPI usage guidance, initialization considerations, PN setup recommendations, WAKE pin examples, GPIO usage examples, and low-power mode handling. 35) In one sentence, when should I choose each family? Choose TJA1445 for CAN FD + PN, TJA1446 for CAN FD + PN + advanced system monitoring, TJA1465 for CAN SIC + PN + higher-speed or more demanding networks, and TJA1466 when you need CAN SIC plus advanced monitoring and safety-oriented system supervision. CAN PHY Transceiver
查看全文
在 FRDM-IMX95 上调试 Ara240 模块 入门视频 (function() { var wrapper = document.getElementById('lia-vid-6393577020112w960h540r856'); var videoEl = wrapper ? wrapper.querySelector('video-js') : null; if (videoEl) { if (window.videojs) { window.videojs(videoEl).ready(function() { this.on('loadedmetadata', function() { this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) { bar.setAttribute('role', 'presentation'); bar.setAttribute('aria-hidden', 'true'); }); }); }); } }})(); (在我的视频中查看) 本指南提供分步说明,说明如何验证与 Ara240 模块的成功通信以及与 FRDM i.MX 95 开发板接口的运行时软件环境。 打破常规 熟悉 Ara240 模块 Ara240 Module [Top view]Ara240 模块 [俯视图] Ara240 Module [Back view]Ara240 模块 [后视图]      连接 M.2 模块 本节介绍如何将分立模块 Ara240 连接到 FRDM i.MX 95 开发板。FRDM i.MX 95 快速入门指南中的说明将引导您完成主板上预加载的嵌入式 Linux 映像的启动过程以及如何连接 USB 调试电缆。有关其他详细信息,请参阅 FRDM i.MX 95 开发板官方文档。 参考,引用: FRDM i.MX 95 快速入门指南 FRDM i.MX 95 开发板产品页面 FRDM i.MX 95 入门页面 ARA2-M2-16G-GT 入门 按照以下步骤将 Ara240 模块连接到 FRDM i.MX 95 开发板: 剧透 (加亮显示以阅读) 重要:在进行任何连接之前,请确保主板已关闭电源。 重要:在进行任何连接之前,请确保主板已关闭电源。 将 Ara240 模块插入 FRDM i.MX 95 开发板上的 M.2 Key-M 插槽。 使用提供的螺钉固定模块。 将风扇电缆连接到主板的风扇接头(有关接头的确切位置,请参阅 FRDM i.MX 95 主板文档)。 Connect the Ara240 to the FRDM i.MX 95 development board.将 Ara240 连接到 FRDM i.MX 95 开发板。 开启板电源 按照《FRDM-IMX95 入门》中的说明开启(启动)板。 开机后,检查风扇和 Ara240 模块的绿色 LED 指示灯是否亮起。   获取软件 本节将向您介绍 Ara240 Runtime 软件开发工具包 (SDK),这是 Ara240 SDK 的精简子集,旨在恩智浦平台上快速启用和执行。Runtime SDK 简化了安装和配置,使开发人员能够以最小的工作量在 Ara240 模块上快速部署和运行 AI/ML 工作负载。 概述 有关 Ara240 软件开发套件 (SDK) 的详细信息,请参阅 Ara240 软件发行说明 Ara240 入门页面仅概述了在特定 i.MX 开发平台上的使用情况 对于任何其他平台,请联系您的恩智浦代表寻求指导。 模块枚举和软件配置 本节提供有关在 FRDM i.MX 95 开发板上验证是否正确安装了 Ara240 模块和 Ara240 Runtime SDK 配置的说明。 验证设备检测 主板成功启动后,连接到串行调试端口以监测系统日志。要确认主板是否检测到 Ara240 模块,请运行以下命令: $ lspci | grep 1e58 预期输出: 0000:01:00.0 Processing accelerators: Device 1e58:0002 (rev 02) 启用 Ara240 设备 为了快速启用,Ara240 运行时 SDK 会在启动时启动。有关详细说明和环境设置步骤,请参阅Ara240 Runtime SDK 文档。 开发人员体验 本节概述了使用 FRDM i.MX 95 开发板支持 Ara240 运行时软件。 验证设置环境 使用以下指南来了解如何连接所需设备。对于大多数演示,你需要摄像头、键盘、鼠标、互联网连接和一个 HDMI 显示器。 Setup preparation for FRDM i.MX 95 board [Top view]FRDM i.MX 95 主板的设置准备 [顶部视图] Setup preparation for FRDM i.MX 95 board [Back view]FRDM i.MX 95 主板的设置准备 [返回视图] 剧透 (加亮显示以阅读) 注意:您可能需要使用 USB 集线器来同时连接键盘、鼠标和摄像头。 注意:您可能需要使用 USB 集线器来同时连接键盘、鼠标和摄像头。   运行时设置 说明 Runtime SDK 提供了一个完整的运行环境,可在 Ara240 模块上实现 AI/ML 加速。要运行演示应用程序,请确保 Ara240 启动过程已成功完成,系统已为演示评估做好准备。 请参阅 Runtime SDK 文档,了解有关以下方面的详细指导: 验证 Runtime SDK 的正确安装。 检查并更新 Ara240 固件版本。 验证代理服务启动状态。 在 Ara240 上执行基准测试。 按照这些步骤操作可确保模块正确初始化并可随时使用。Ara240 支持执行 CNN、LLM、VLM 和代理框架,使高级人工智能工作负载能够直接在 Ara 上运行。有关全面的示例和端到端工作流程指导,请参阅Ara SDK文档页面。 FRDM-IMX9
查看全文
2S TDM Master: Persistent 1-slot downward shift during continuous DMA streaming 1. Test Configuration I2S configured as TDM Master, DSP mode with short WS 8 slots per frame, 32-bit per slot, frame length = 256 bit Using fsl_i2s_dma driver Dual-buffer ping-pong transfer FreeRTOS task waits on a semaphore from the DMA callback, fills the buffer, then calls I2S_TxTransferSendDMA to re-submit Test data pattern: fixed 0x000Axxxx (upper 16 bits = 0x000A, lower 16 bits contain slot index and sample sequence number) 2. Persistent One-Slot Downward Shift (100% Reproducible) Logic analyzer captures show: Transmitted data is consistently shifted down by exactly one slot Data intended for Slot 0 appears in the physical Slot 1 position Data intended for Slot 1 appears in the physical Slot 2 position By extension, data intended for Slot 7 appears in Slot 0 of the next frame (or is lost) This shift is stable after the stream starts; it does not drift further over time and remains a fixed 1-slot offset 3. Startup Data Misalignment (Intermittent) The logic analyzer occasionally observes: After the WS frame sync pulse, the DATA line remains at low level (all zeros) for a period After a blank interval of 1~3 frames, valid test data suddenly appears Once the blank interval ends, the data still exhibits the 1-slot offset described in item 2 Xanderwangx_0-1780141578772.png Audio(PDM | I2S | SAI) Re: 2S TDM Master: Persistent 1-slot downward shift during continuous DMA streaming Hello @Xanderwangx , Thank you for your post. Could you please let us know which NXP MCU you are using? Also, are you working with one of our evaluation boards or a custom board? Are you using the SDK example code, or is this based on your own implementation? If it is your own code, would you be able to share it with us for further analysis? BR Celeste Re: 2S TDM Master: Persistent 1-slot downward shift during continuous DMA streaming Hello @Xanderwangx , Thank you for your reply. However, the RT family is not within my support scope. I mainly support MCX and Kinetis family. Also, this is MCX channel, not for RT product. Could you please create a new post under i.MX RT Crossover MCUs - NXP Community? The RT support team will be able to assist you there. BR Celeste Re: 2S TDM Master: Persistent 1-slot downward shift during continuous DMA streaming MCU: MIMXRT685-EVK (i.MX RT685) Board: Custom product board based on RT685. I am using Loop DMA mode with ping-pong buffers. The DMA is configured with I2S_TransferSendLoopDMA() using 2 descriptors. In the DMA callback, I fill the next buffer and the loop continues automatically. void I2S1_TDM_Init(void) { I2S_Type *base = I2S1; /* I2S Configuration */ i2s_config_t cfg; I2S_TxGetDefaultConfig(&cfg); cfg.masterSlave = kI2S_MasterSlaveNormalMaster; cfg.mode = kI2S_ModeDspWsShort; /* TDM = DSP mode */ cfg.divider = 24576000 / (TDM_SAMPLE_RATE * TDM_SLOT_NUM * TDM_SLOT_WIDTH); cfg.dataLength = TDM_SLOT_WIDTH; /* 32-bit */ cfg.frameLength = TDM_FRAME_LENGTH; /* 256-bit */ cfg.oneChannel = false; cfg.position = 0; cfg.wsPol = true; /* DSP A or B */ I2S_TxInit(base, &cfg); /* Enable 8 slots (Primary + 3 Secondary Channels) */ /* Note: Using 4 channels to cover 8 slots with 32-bit data */ I2S_EnableSecondaryChannel(base, kI2S_SecondaryChannel1, false, 32 * 2); I2S_EnableSecondaryChannel(base, kI2S_SecondaryChannel2, false, 32 * 4); I2S_EnableSecondaryChannel(base, kI2S_SecondaryChannel3, false, 32 * 6); /* DMA Loop Transfer Setup */ DMA_Init(DMA0); DMA_EnableChannel(DMA0, I2S_TX_DMA_CH); DMA_SetChannelPriority(DMA0, I2S_TX_DMA_CH, kDMA_ChannelPriority3); DMA_CreateHandle(&dma_handle, DMA0, I2S_TX_DMA_CH); I2S_TxTransferCreateHandleDMA(base, &i2s_handle, &dma_handle, I2S1_Callback, tdm_xfer); I2S_TransferInstallLoopDMADescriptorMemory(&i2s_handle, tdm_desc, 2); if (I2S_TransferSendLoopDMA(base, &i2s_handle, &tdm_xfer[0], 2) != kStatus_Success) { while (1); /* Fails if TDM_FRAMES * 8 > DMA_MAX_TRANSFER_COUNT(1024) */ } } The slot offset is random across power cycles, not fixed.I also tried disable interrupts before and after the DMA transfer to force synchronization, but slot misalignment still occurs. Does I2S_TransferSendLoopDMA() guarantee frame-aligned DMA startup on RT685? If not, how to force alignment to WS boundary? i.MX-RT600 
查看全文
S32K314 FreeRTOSのスタンバイ移行と実行モードへの復帰 私はS32K314、RDT 7.0.0を使用して割り込みとタスクを組み合わせたプロジェクトを開発しています。およびFreeRTOS 7.0.0。 割り込みとタスクは正常に機能しています。RTCで計測した指定時間が経過した後、実行モードからスタンバイモードに移行し、再び実行モードに戻るコードを実装しました。 システムが実行モードからスタンバイモードに移行し、その後リセットが発生してMCUブートローダーが再び実行されることを確認しました。 しかし、MCUの初期化が開始され、PLLがロックされた後、MCUペリフェラルにクロックを分配するプロセス中にエラーが発生します。POR(起動・再起動)中は正常に動作するため、システムをスタンバイモードに移行するプロセスに何らかのエラーがあると考えられます。 手伝っていただけませんか? Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 追加情報: このプロジェクトはスタンバイRAMを定義します。RAMは、BSSの先頭から始まる32キロバイトの領域として割り当てられます。この領域には、スタンバイ状態から復帰した後に必要となるデータが格納されます。 /*--- スタンバイモードへの移行 ---*/ /* RTCタイマーがWKPU0を起動するためのタイムアウトを設定します */ Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_RTC, RTC_BASE_CLOCK_HZ * seconds); /* すべてのOSタスクを一時停止します */ vTaskSuspendAll(); /* クロックモードをスタンバイに初期化します */ Mcu_InitClock(McuClockSettingConfig_Standby); /* 時計モードを設定します */ Mcu_SetMode(McuModeSettingConf_Standby); .....(リセット発生) /*--- MCU初期化 ---*/ /* スタンバイRAM領域をキャッシュ不可に設定する */ MpuConfigurator_AllocateStandbyRamToNonCacheable(); /* キャッシュ不可モードを有効にする */ MpuConfigurator_Enable(); /* MCUモジュールを初期化します */ Mcu_Init(NULL_PTR); /* 実行モードでクロック設定を初期化します */ if (E_OK == Mcu_InitClock(McuClockSettingConfig_Run)) { /* ポーリングによってPLLロックを待機する */ while (MCU_PLL_LOCKED != Mcu_GetPllStatus()) { /* PLLがロックされるまで待機 */ } /* PLLクロックをシステムに分配する */ Mcu_DistributePllClock(); ← ここでエラーが発生します Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは@Teruhikoさん エラーに関する詳細情報を入手できますか?これはどのような種類の障害例外ですか? https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K312-HARDFAULT-Handling-Interrupt-DS3-5-RTD300/ta-p/1806259 https://community.nxp.com/t5/S32K-Knowledge-Base/How-To-Debug-A-Fault-Exception-On-ARM-Cortex-M-V7M-MCU-S32K3XX/ta-p/1595570 https://community.nxp.com/t5/S32K-Knowledge-Base/Fault-handling-on-S32K14x/ta-p/1114447 コードをステップ実行することで、例外が発生する正確な場所を特定することもできます。 DCM_GPRレジスタにエラーがないか確認してください。RM、表231。DCMは、製品ファミリにおける機能と利用可能性を制御します。 リセット後のSRAM初期化が正しく行われなかったことが原因である可能性があります。 それを監視するERMは存在するが、モジュールのクロックはデフォルトではゲートで遮断されている。 ありがとうございました。 BR、ダニエル Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは@Teruhikoさん MCUがスタンバイモードを終了した後、デバッガを接続できるようになるはずです。 デバッグを容易にするために、アプリケーションの先頭に無限ループを追加することを検討してください。そうすることで、デバッガーを接続して、そこから実行をステップ実行できます。 volatile int var = 1; while(var){} MCU_WAKEUP_REASON の代わりに MCU_POWER_ON_RESET が検出された場合は、次のレジスタを確認してください: DCMROPP1~4。 ありがとうございました。 BR、ダニエル Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは、danielmartynek-san、 返信が遅くなり申し訳ありません。 システムがスタンバイモードに移行するとJ-TAGとの通信が途絶えるため、詳細なエラー情報を取得できていません。現在、デバッグ用のコードを書いています。 現在分かっていることをお伝えしたいと思います。 私は以下の条件下でリセットの原因を調査しました。 ・スタンバイモードへの移行後、RTCタイムアウト後に自動的にリセット復旧します。 → リセット原因: MCU_WAKEUP_REASON ・スタンバイモードに入った後、スタンバイモード中にWKPU割り込みで復帰した場合のリカバリをリセットする → リセット原因: MCU_WAKEUP_REASON ・RTCがスタンバイモードに移行した後、タイムアウトが発生してWKPU割り込みによってウェイクアップした際のリカバリをリセットする → リセット原因: MCU_POWER_ON_RESET リセット係数は正しいと思います。 各リセット要因における起動シーケンスの違いは、何らかの関連があるのではないかと推測される。 エラーの詳細が分かり次第、別途ご回答いたします。 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは@Teruhikoさん 時計は良さそうだ。 質問が1つあります。POR後にMCUをスタンドアロンで実行した場合(デバッガを使用しない場合)、アプリケーションは正常に動作しますか? 私が質問する理由は、アプリケーションがデバッガー経由で起動されると、デバッガーがシステム初期化の一部を実行するからです。スタンドアロン動作の場合、アプリケーションはこの初期化処理を自身で行う必要があります。スタンバイ状態から復帰すると、MCUはリセットされ、デバッガが切断されるため、動作は実質的にスタンドアロン起動と同じになります。 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは、ダニエルさん。 返信が遅くなり申し訳ありません。 回路設計に関していくつか疑問点があったので、それが今回の問題とどのように関連しているのか調べていました。 その結果、回路内のポート割り当てに問題があることが判明しました。 スタンバイ状態からの復帰時にリセットが発生すると、MCUに供給される電源電圧が不安定になった。 これまでいただいたすべてのサポートに心から感謝いたします。 どうもありがとうございます。 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは@Teruhikoさん Mcu_InitClock(Standby)の設定とは何ですか? それでも時計のオプションの1つであるべきです。例:表157。オプションA - 高性能モード(CORE_CLK @ 160 MHz)。 「動作が不安定」または「異常な挙動を示す」とは、具体的にどういう意味ですか? Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは、ダニエルさん アドバイスありがとうございます。 リセットしたら再接続できました。 コードをステップ実行すると、MCUペリフェラルの初期化は成功するのですが、OSタスクの起動プロセス中に「xSemaphoreCreateRecursiveMutex()」を呼び出すと、プログラムの動作が不安定になります。 さらに、この関数をステップ実行すると、`heap_4.c` の関数 `void * pvPortMalloc( size_t xWantedSize )` の次のセクションで動作が不安定になります。 2026-05-21 190438.png ヒープ割り当てが失敗しているようです。 スタンバイモードに移行する前に、何か手順を踏むべきことはありますか? Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode こんにちは、ダニエルさん。 本プロジェクトにおける「実行」モードと「スタンバイ」モードの設定を以下に示します。 ご提供いただいた表157の設定は、実行モードに適用されているものと理解しております。 また、表160のクロック値はスタンバイモードにも適用されていると考えています。RTCが時間を計測し、WKPUが再起動をトリガーできるように、これらのブロックにクロックを設定しています。 <不安定な挙動の説明> コードをステップ実行すると、現在の情報がIDEのコンソール画面に表示されます。前述の「heapVALIDATE_BLOCK_POINTER()」を実行すると、コンソール画面がスクロールし始め、ステップの実行が不可能になります。 <スタンバイモード> 。 K314_StandbyMode.png <実行モード> K314_RunMode.png   Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode スタンバイモードへの移行方法は以下のとおりです。 ・MCAL MCUモジュールの設定では、スタンバイモードの動作モードとして「STANDBY」が既に選択されています。 ・Design Studioの時計ツールでは、「実行」と「待機」用に既に個別の機能グループを作成済みです。 <手順> 1.通常動作モードでは、「Mcu_InitClock(Run)」と「Mcu_SetMode(Run)」の順に関数を呼び出すことで、実行モードで動作させることができます。 ... 2. スタンバイモードに移行するには、「Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_RTC, RTC_BASE_CLOCK_HZ * seconds)」を呼び出してタイマーを開始します。これにより、指定された時間が経過すると、RTC を介してシステムが自動的に実行モードで起動します。 3.実行中のすべてのOSタスクを一時停止するには、「vTaskSuspendAll()」を呼び出します。 4. 「Mcu_InitClock(Standby)」を呼び出し、続いて「Mcu_SetMode(Standby)」を呼び出し、スタンバイモードに移行します。 vTaskSuspendAll() を呼び出す理由は、以下のリンク先の情報に基づいています。 https://community.nxp.com/t5/S32K/S32K312-Does-FreeRTOS-need-to-be-shut-down-before-entering/mp/1756857
查看全文
S32K314 FreeRTOS 待机转换和返回运行模式 我正在使用 S32K314 和 RDT 7.0.0 开发一个结合了中断和任务的项目、和 FreeRTOS 7.0.0。 中断和任务运行正常。我已经实现了从运行模式过渡到待机模式的代码,并在 RTC 测得的指定时间过后返回运行模式。 我已经确认系统从运行模式过渡到待机模式,之后会重置,导致 MCU 引导加载程序再次运行。  但是,在 MCU 初始化开始和 PLL 锁定之后,向 MCU 外围设备分配时钟的过程中会发生错误。由于在 P.O.R. 运行时可以正常工作,我认为在将系统切换到待机模式的过程中存在一些错误。 您能帮帮我吗? Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 附加信息: 该项目定义了待机 RAM。RAM 从 BSS 开始分配为 32 千字节的区域。该区域在从待机模式恢复后存储必要的数据。 /*---过渡到待机模式---*/ /* 设置 RTC 计时器唤醒 WKPU0 的超时时间 */ Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_RTC, RTC_BASE_CLOCK_HZ * seconds); /* 暂停所有操作系统任务 */ vTaskSuspendAll(); /* 将时钟模式初始化为待机 */ Mcu_InitClock(McuClockSettingConfig_Standby); /* 设置时钟模式 */ Mcu_SetMode(McuModeSettingConf_Standby); ..... (Reset Occur) /*---MCU 初始化---*/ /* 将待机 RAM 区域设置为不可缓存 */ MpuConfigurator_AllocateStandbyRamToNonCacheable(); /* 启用不可缓存模式 */ MpuConfigurator_Enable(); /* 初始化 MCU 模块 */ Mcu_Init(NULL_PTR); /* 运行时钟初始化设置模式 */ if (E_OK == Mcu_InitClock(McuClockSettingConfig_Run)) { /* 通过**轮询**等待 PLL 锁定 */ while (MCU_PLL_LOCKED != Mcu_GetPllStatus()) { /* 等到 PLL 锁定 */ } /* 将 PLL 时钟分配给系统 */ Mcu_DistributePllClock();  ← 这里出现错误 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 嗨,@Teruhiko、 您能找到有关该错误的更多信息吗?故障异常属于哪种类型? https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K312-HARDFAULT-Handling-Interrupt-DS3-5-RTD300/ta-p/1806259 https://community.nxp.com/t5/S32K-Knowledge-Base/How-To-Debug-A-Fault-Exception-On-ARM-Cortex-M-V7M-MCU-S32K3XX/ta-p/1595570 https://community.nxp.com/t5/S32K-Knowledge-Base/Fault-handling-on-S32K14x/ta-p/1114447 您也可以逐步执行代码,以确定触发异常的确切位置。 检查 DCM_GPR 寄存器是否有任何错误。RM, 表 231。产品系列中由 DCM 控制的功能和可用性。 这可能是由于 RESET 后的 SRAM 初始化不正确。 有 ERM 可以对此进行监控,但默认情况下,模块的时钟处于封闭状态。 谢谢! BR,丹尼尔 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 你好,@Teruhiko、 MCU 退出待机模式后,就可以连接调试器了。 为了方便调试,可以考虑在应用程序开始时添加一个无限循环,这样就可以连接调试器,并从那里开始逐步执行。 volatile int var = 1; while(var){} 如果观察到的是 MCU_POWER_ON_RESET,而不是 MCU_WAKEUP_REASON,请检查下列寄存器:DCMROPP1-4. 谢谢! BR,丹尼尔 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 你好,丹尼尔-马蒂克先生、 对于延迟回复,我深表歉意。 由于在系统转换到待机模式时与 J-TAG 的通信会中断,因此我还无法获得详细的错误信息。我目前正在编写调试代码。 我想和大家分享一下我们目前了解到的情况。 我已经调查了以下条件下的重置原因: ・过渡到待机模式后 RTC 超时后自动恢复复位  → 重置原因:MCU_WAKEUP_REASON ・进入待机状态后,在待机模式下通过 WKPU 中断唤醒时重置恢复  → 重置原因:MCU_WAKEUP_REASON ・在过渡到待机模式后 RTC 超时后通过 WKPU 中断唤醒时重置恢复  → 重置原因:MCU_POWER_ON_RESET 我相信重置系数是正确的。 我怀疑每个重置因子的启动顺序差异是相关的。 一旦我掌握了有关错误的更多细节,我将另行回复。 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 你好,@Teruhiko、 时钟看起来不错。 一个问题:当你在 POR 之后独立运行 MCU 时(不带调试器),应用程序能运行吗? 我问这个问题的原因是,当应用程序通过调试器启动时,调试器会执行部分系统初始化。在独立组网 \\(SA\\) 操作中,应用程序必须自己处理此初始化。退出待机状态后,MCU 会重置并断开调试器的连接,因此其行为实际上与独立启动相同。 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 嗨,丹尼尔先生、 对于延迟回复,我深表歉意。 我对我们的电路设计有一些疑问,所以我在调查它与这个问题的关系。 结果,我发现电路中的端口分配有问题。 当从待机状态唤醒时发生 RESET 时,施加到 MCU 的电源电压变得不稳定。 我非常感谢你们迄今为止提供的所有支持。 非常感谢。 Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 你好,丹尼尔先生 谢谢您的建议。 重置后我能够重新连接。 当我逐步完成代码时,单片机外设初始化成功了,但当我在启动操作系统任务过程中调用 "xSemaphoreCreateRecursiveMutex() "时,程序却表现异常。 此外,当步进该函数时,在 `heap_4.c` 中函数 `void * pvPortMalloc( size_t xWantedSize )` 的以下部分,行为变得不稳定。 2026-05-21 190438.png 堆分配似乎失败了。 在过渡到待机模式之前,我应该采取哪些步骤? Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 你好,@Teruhiko、 Mcu_InitClock(Standby) 配置是什么? 它仍然应该是时钟选项之一,例如 表 157.选项 A - 高性能模式(CORE_CLK @ 160 MHz)。 你说它表现不稳定或不稳定,到底是什么意思? Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 嗨,丹尼尔先生、 本项目中 "运行 "和 "待机 "模式的设置如下所示。 我认为您提供的表 157 中的设置已应用于运行模式。 我还认为表 160 中的时钟值已应用于待机模式。我正在为这些方块设置时钟,这样 RTC 就可以测量时间,WKPU 可以触发重启。 当我逐步完成代码时,当前信息会显示在 IDE 控制台屏幕上。执行上述 "heapVALIDATE_BLOCK_POINTER() "时,控制台屏幕开始滚动,无法执行步骤 . K314_StandbyMode.png K314_RunMode.png   Re: S32K314 FreeRTOS Standby Transition and Return to Run Mode 下面介绍如何过渡到待机模式。 在 MCAL MCU 模块设置中,"STANDBY "已被选为待机模式的运行模式。 ・ 在 Design Studio 的时钟工具中,我已经为 "运行 "和 "待机 "创建了不同的功能组。 1.在正常运行模式下,按 "Mcu_InitClock(Run) "和 "Mcu_SetMode(Run) "的顺序调用函数,即可在运行模式下工作。 ... 2.要过渡到待机模式,请调用 "Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_RTC, RTC_BASE_CLOCK_HZ * seconds) "启动定时器,定时器将在指定时间后通过 RTC 自动唤醒处于运行模式的系统。 3.调用 "vTaskSuspendAll() "暂停所有正在运行的操作系统任务。 4. 调用 "Mcu_InitClock(Standby)",然后调用 "Mcu_SetMode(Standby) "过渡到待机模式。 调用 vTaskSuspendAll() 的原因是基于下面链接中的信息。 https://community.nxp.com/t5/S32K/S32K312-Does-FreeRTOS-need-to-be-shut-down-before-entering/m-p/1756857
查看全文
VS 代码扩展更新破坏了 RTOS 查看器 你好 到目前为止,我们使用的是 1.9.20 版本(旧版)的 vscode 工具,并使用https://marketplace.visualstudio.com/items?itemName=mcu-debug.rtos-views查看 freertos 线程的状态 (RT1189)。更新后,该工具不再工作,只显示"RTOS 检测未完成。下次停止时会恢复。" 有什么建议吗? 谢谢! Re: VS code extension update broke RTOS viewer 您好, MCUXpresso for VS Code 长期以来一直拥有自己的 RTOS 查看器。请查阅https://mcuxpresso.nxp.com/mcux-vscode/latest//html/RTOS-Details.html 此外,还有一项旧的更改,即扩展从使用Microsoft C/C++ 调试适配器迁移到基于 Cortex-Debug 的自有调试适配器。你必须创建一个新的调试配置,它会自动创建一个基于我们调试适配器的配置(你会注意到"mcuxpresso-debug" 作为类型)。 PS.请注意,如果使用 Segger 调试探针,则需要特别启用 RTOS 支持(请参阅 https://mcuxpresso.nxp.com/mcux-vscode/latest//html/Debug-Views.html#enabling-rtos-awareness)。 此致, 克里斯蒂安 Re: VS code extension update broke RTOS viewer 我们在调试时使用 -Og 标志编译,改成 -O0 后,查看器就能正常工作了。但我想该工具还需要改进,因为 Og 应该是标准编辑-调试程序的默认设置。 与此无关的是,我还在调试控制台中看到以下警告 "warning: could not convert ' \Main.cpp' from host encoding (CP1252) to UTF-32。 这种情况通常不会发生,请提交错误报告。" 谢谢! Re: VS code extension update broke RTOS viewer 谢谢! 事实上,该信息来自 MCUXpresso RTOS 视图本身(我错误地引用了另一个插件)。 我附上了 launch.json 和自定义设备脚本(它与 Linkserver 26.3.123 的 mimxrt1180-evk.json 相同,但"connect-script" 是"RT1180_reset.scp" 。 我们的应用程序在 hyperram 中运行,使用 SDK 2.16。已正确设置 Freertos 变量。 我可以通过我们的应用程序调试一个步骤,但 RTOS 详细信息视图仍显示"RTOS 检测未完成。它将在下一次停止时恢复。" 谢谢! Re: VS code extension update broke RTOS viewer @cristiantepus有什么最新消息吗? Re: VS code extension update broke RTOS viewer 今天我发现 MCUXpresso RTOS 查看器在发布模式下无法运行,也无法显示任何内容。 但是 https://marketplace.visualstudio.com/items?itemName=mcu-debug.rtos-views 可在-Og和发布模式下使用,但无法与当前的mcuxpresso vscode插件一起使用(被禁用?)。有办法恢复吗? Re: VS code extension update broke RTOS viewer 你好@arunkumar_g、 我们提供的 RTOS 详细视图依赖于 ELF 文件中存在的一些符号(如"FreeRTOSDebugConfig", " pxCurrentTCB", " uxCurrentNumberOfTasks", 等等)。我同意"RTOS 检测没有完成。" 没有说明出错的原因,我们将确保更清楚地说明这一点。 关于你在 " debug " 与 " 版本 " 中获得的结果,我想说这是编译器/链接器优化的结果——所需的符号被去掉了,所以任何消费者都找不到这些符号。在这种情况下,不仅 RTOS 详细信息视图会失效,底层 GDB 线程感知(LinkServer、J-Link、PEmicro)也无法在调用堆栈视图中显示和调试 FreeRTOS 任务。在这种情况下,我只能建议你确保更新代码,这样你就可以确保在两个 " debug " 和 " 版本 " 编译模式下都存在所需的符号。我们将确保更新文档和工具中的信息,以明确哪些符号是必需的,但却缺失了,从而导致视图无法显示数据。 您还提到 MCU 调试 RTOS 视图在这种特殊情况下可以工作。有可能,但我上次检查时还没有任何版本支持(版本可通过检查"FreeRTOSDebugConfig" 找到)。请记住,FreeRTOS 的数据结构是 RTOS 版本所特有的。要启用 MCU 调试视图,您可以询问维护者如何添加 "mcuxpresso-debug" 调试适配器(MCUXpresso 专用)。 鉴于您使用的是基于旧版 SDK 2.16 的项目,我建议您改用基于 CMake& Kconfig 的最新 MCUXpresso SDK。   一些有用的链接: - RTOS 详细信息:RTOS 详情 - MCUXpresso for VS Code 26.04 文档 - MCUXpresso SDK:MCUXpresso SDK 文档 - MCUXpresso SDK 文档   谢谢! 阿德里安
查看全文
Errata ERR053404: Use Cases for Different Message Buffer Configurations This article discusses the different use cases and configuration of the errata "ERR053404: FlexCAN: Message Buffer (MB) and Enhanced RX FIFO Filter Element (ERFFEL) Memory Corruption". The errata is impacting Messabe Buffers (MB) and Enhanced RX FIFO Filter Elements (ERFFEL), the impact of each MB or ERFFEL depends on the configuration of the payload buffer, MB and/or ERFFEL. In this post, we plan to provide some examples of such configuration and impact on the FlexCAN IP.  Taking a 64-byte payload as an example, the following configurations illustrate the trade-off between the number of Message Buffers (MBs) and acceptance filters: /* ERR053404: This errata explains affected words depends on MB payload size, this example applies for MB configured for 64-byte payload */ #define BYTES_IN_MB kFLEXCAN_64BperMB FLEXCAN_FDInit(EXAMPLE_CAN, &flexcanConfig, EXAMPLE_CAN_CLK_FREQ, BYTES_IN_MB, true); 1. MB0 is not used, MB1 is used. In this configuration, ERFFEL[0–29] can be fully utilized as acceptance filters, while MB1–MB6 are available as Message Buffers, maximum ERFCR[NFE] is 14. The following code can be used as reference for the driver configuration for this case.  /* Config fifo filters to make it accept STD frame with ID 0x123 ~ 0x140. Used ERFFEL[0–29], ERFCR[NFE]=14 */ uint32_t rxEnFifoFilter[] = {FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x123, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x124, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x125, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x126, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x127, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x128, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x129, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12A, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12B, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12C, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12D, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12E, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12F, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x130, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x131, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x132, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x133, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x134, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x135, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x136, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x137, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x138, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x139, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13A, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13B, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13C, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13D, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13E, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13F, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x140, 0, 0x3F, 0)}; flexcan_enhanced_rx_fifo_config_t rxEhFifoConfig; flexcan_rx_mb_config_t mbConfig; /* Setup Enhanced Rx FIFO. */ rxEhFifoConfig.idFilterTable = rxEnFifoFilter; rxEhFifoConfig.idFilterPairNum = sizeof(rxEnFifoFilter) / sizeof(rxEnFifoFilter[0]) / 2U; rxEhFifoConfig.extendIdFilterNum = 0; rxEhFifoConfig.fifoWatermark = RX_MESSAGE_COUNT - 1U; /* Reduce the frequency to enter IRQ. */ rxEhFifoConfig.dmaPerReadLength = kFLEXCAN_19WordPerRead; rxEhFifoConfig.priority = kFLEXCAN_RxFifoPrioHigh; FLEXCAN_SetEnhancedRxFifoConfig(EXAMPLE_CAN, &rxEhFifoConfig, true); rxFifoXfer.framefd = &rxFrame[0]; rxFifoXfer.frameNum = RX_MESSAGE_COUNT; /* Set Rx Masking mechanism for MB. Only accept data frame with desired ID. */ FLEXCAN_SetRxMbGlobalMask(EXAMPLE_CAN, FLEXCAN_RX_MB_STD_MASK(0x7FFU, 0, 0)); #define RX_MESSAGE_BUFFER_1 (1U) /* Setup Rx Message Buffer 1. */ mbConfig.format = kFLEXCAN_FrameFormatStandard; mbConfig.type = kFLEXCAN_FrameTypeData; mbConfig.id = FLEXCAN_ID_STD(0x121U); FLEXCAN_SetFDRxMbConfig(EXAMPLE_CAN, RX_MESSAGE_BUFFER_1, &mbConfig, true); 2. MB0 and MB1 are not used. In this case, ERFFEL[0–31] are available for acceptance filtering, and MB2–MB6 are reserved as Message Buffers, maximum ERFCR[NFE] is 15. The following code can be used as reference for the driver configuration for this case.  /* Config fifo filters to make it accept STD frame with ID 0x123 ~ 0x142. Used ERFFEL[0–31], ERFCR[NFE]=15 */ uint32_t rxEnFifoFilter[] = {FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x123, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x124, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x125, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x126, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x127, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x128, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x129, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12A, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12B, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12C, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12D, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12E, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12F, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x130, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x131, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x132, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x133, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x134, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x135, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x136, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x137, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x138, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x139, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13A, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13B, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13C, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13D, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13E, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x13F, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x140, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x141, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x142, 0, 0x3F, 0)}; flexcan_enhanced_rx_fifo_config_t rxEhFifoConfig; /* Setup Enhanced Rx FIFO. */ rxEhFifoConfig.idFilterTable = rxEnFifoFilter; rxEhFifoConfig.idFilterPairNum = sizeof(rxEnFifoFilter) / sizeof(rxEnFifoFilter[0]) / 2U; rxEhFifoConfig.extendIdFilterNum = 0; rxEhFifoConfig.fifoWatermark = RX_MESSAGE_COUNT - 1U; /* Reduce the frequency to enter IRQ. */ rxEhFifoConfig.dmaPerReadLength = kFLEXCAN_19WordPerRead; rxEhFifoConfig.priority = kFLEXCAN_RxFifoPrioHigh; FLEXCAN_SetEnhancedRxFifoConfig(EXAMPLE_CAN, &rxEhFifoConfig, true); rxFifoXfer.framefd = &rxFrame[0]; rxFifoXfer.frameNum = RX_MESSAGE_COUNT; 3. MB0 and MB1 are both used. Under this configuration, only ERFFEL[0–11] can be used as acceptance filters. ERFFEL[12–31] are not available, while MB0–MB6 can be used as Message Buffers, maximum ERFCR[NFE] is 5. The following code can be used as reference for the driver configuration for this case.  /* Config fifo filters to make it accept STD frame with ID 0x123 ~ 0x12E. Used ERFFEL[0–11], ERFCR[NFE]=5 */ uint32_t rxEnFifoFilter[] = {FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x123, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x124, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x125, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x126, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x127, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x128, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x129, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12A, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12B, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12C, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12D, 0, 0x3F, 0), FLEXCAN_ENHANCED_RX_FIFO_STD_MASK_AND_FILTER(0x12E, 0, 0x3F, 0)}; flexcan_enhanced_rx_fifo_config_t rxEhFifoConfig; flexcan_rx_mb_config_t mbConfig; /* Setup Enhanced Rx FIFO. */ rxEhFifoConfig.idFilterTable = rxEnFifoFilter; rxEhFifoConfig.idFilterPairNum = sizeof(rxEnFifoFilter) / sizeof(rxEnFifoFilter[0]) / 2U; rxEhFifoConfig.extendIdFilterNum = 0; rxEhFifoConfig.fifoWatermark = RX_MESSAGE_COUNT - 1U; /* Reduce the frequency to enter IRQ. */ rxEhFifoConfig.dmaPerReadLength = kFLEXCAN_19WordPerRead; rxEhFifoConfig.priority = kFLEXCAN_RxFifoPrioHigh; FLEXCAN_SetEnhancedRxFifoConfig(EXAMPLE_CAN, &rxEhFifoConfig, true); rxFifoXfer.framefd = &rxFrame[0]; rxFifoXfer.frameNum = RX_MESSAGE_COUNT; /* Set Rx Masking mechanism for MB. Only accept data frame with desired ID. */ FLEXCAN_SetRxMbGlobalMask(EXAMPLE_CAN, FLEXCAN_RX_MB_STD_MASK(0x7FFU, 0, 0)); #define RX_MESSAGE_BUFFER_0 (0U) /* Setup Rx Message Buffer 0. */ mbConfig.format = kFLEXCAN_FrameFormatStandard; mbConfig.type = kFLEXCAN_FrameTypeData; mbConfig.id = FLEXCAN_ID_STD(0x120U); FLEXCAN_SetFDRxMbConfig(EXAMPLE_CAN, RX_MESSAGE_BUFFER_0, &mbConfig, true); #define RX_MESSAGE_BUFFER_1 (1U) /* Setup Rx Message Buffer 1. */ mbConfig.format = kFLEXCAN_FrameFormatStandard; mbConfig.type = kFLEXCAN_FrameTypeData; mbConfig.id = FLEXCAN_ID_STD(0x121U); FLEXCAN_SetFDRxMbConfig(EXAMPLE_CAN, RX_MESSAGE_BUFFER_1, &mbConfig, true); Recommendation: To achieve a balanced trade-off between the number of Message Buffers and acceptance filters, Option 1 is recommended.
查看全文
AN14175: FlexIO QSPI for MCXN947 Hi,  I was reading through the following resource: Using FlexIO to emulate Quad SPI Controller, and wanted to try this on the MCXN947. The goal is to configure QSPI for MCXN947 as a slave, but I can't find that demo program in the SDK. I have the newest version of the IDE and SDK. Is there a different demo program I can use to try this?  Thanks! Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) MCXN Re: AN14175: FlexIO QSPI for MCXN947 Hello, The Software is in Application Note Software section in MCX N94, N54, N53, N52 and N24 MCUs | NXP Semiconductors page You can download it here Application Note Software for AN14175 Best Regards, Luis Re: AN14175: FlexIO QSPI for MCXN947 Do this code has been published ? Re: AN14175: FlexIO QSPI for MCXN947 Yes, you can download it here Application Note Software for AN14175 Best Regards, Luis
查看全文
Example S32K344 EMAC lwIP FreeRTOS MRCANHUB S32DS 3.6.1 RTD600 * Detailed Description: * Updated the example lwip_FreeRTOS_s32K344 to enable pinging the lwIP stack from the command window * *ping 192.168.0.209 * *Pinging 192.168.0.209 with 32 bytes of data: *Reply from 192.168.0.209: bytes=32 time=2ms TTL=255 *Reply from 192.168.0.209: bytes=32 time=1ms TTL=255 *Reply from 192.168.0.209: bytes=32 time=1ms TTL=255 *Reply from 192.168.0.209: bytes=32 time=1ms TTL=255 * *Ping statistics for 192.168.0.209: * Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), *Approximate round trip times in milli-seconds: * Minimum = 1ms, Maximum = 2ms, Average = 1ms * * * EVB: * - All jumpers in default positions. * * Configuration: * - Updated pin configuration * - Modified FXOSC, PLLAUX + dividers * - Platform: added EMAC_0_IRQn interrupt * - IP address set to 192.168.0.209 and enabled UDP_ECHO, etc. * - Added DIO * * main.c * - Updated only the header * device.c * - No updates * test.c * - Commented out the code that shuts down the TCP/IP stack after its predefined timeout * - Added LED task * * ------------------------------------------------------------------------------------------------ * Test HW: MR-CANHUBK344 * MCU: S32K344 * Debugger: Lauterbach Trace32 * Target: internal_FLASH * EVB connection: EMAC <-> RDDRONE-T1ADAPT <-> USB-to-Ethernet adapter <-> Laptop DELL, Windows 11
查看全文
由于 高效密码学标准\\(SEC\\)/CAAM 未初始化,BL2 中的安全启动失败 secure_boot_test.png 安全启动在 BL2 中失败看起来是因为 高效密码学标准(SEC)/CAAM 未初始化。在仔细研究代码时,似乎没有直接调用 sec_init,但看起来配置函数是在它之前被调用的,因此全局变量无法获得 高效密码学标准(SEC) 区块地址的定义常量。即 NXP_CAAM_ADDR 值。当我对这个值进行硬编码时,我可以让它稍微进一点,但随后我出现了无法刷新/重置任务铃声的错误。 QorIQ LS1设备 Re: Secure boot fails in BL2 because SEC/CAAM not initialized 你好 BL2中的这种安全启动失败是TF-A(可信固件-A)初始化流程中典型的 " chicken and egg " 问题,专门针对恩智浦Layerscape或i.MX平台。 当你对 NXP_CAAM_ADDR 进行硬编码并克服地址错误但遇到 Job Ring 刷新/RESET 错误时,这通常意味着 CAAM 硬件块要么没有时钟,要么处于过渡状态,要么被安全违规阻止。   1.初始化序列 sec_init 没有在配置函数之前被调用的原因,很可能是 bl2_main.c 中的顺序造成的。或特定平台的 plat_bl2_el3_setup.c 。 修复:确保在 bl2_el3_early_platform_setup 内调用 plat_ls_sec_init() (或与 SoC 类似的函数)。 全局变量问题:如果 NXP_CAAM_ADDR 没有弹出,请检查平台的 plat_get_caam_address() 函数是否返回 0,或者 BL2 转换表中的数据段是否没有正确映射。   2.为什么工作环冲洗失败 如果代码试图刷新作业环却失败了,请考虑以下三个罪魁祸首: 安全违规(最有可能):如果 SoC 处于 " Closed " 模式(已熔丝),CAAM 可能在从 bootROM 过渡到 BL2 的过程中触发了安全违规。网络安全违规会使 CAAM 处于 " Halted " 状态,在该状态下,在违规行为被清除之前,无法重置或使用工作戒指。 缺少时钟/功率:如果在 BL2 期间未在 DCFG(设备配置)或 PCC(外设时钟控制)中明确启用 高效密码学标准(SEC) 模块时钟门,则寄存器将可访问(如果幸运的话),但内部逻辑(如 Job Ring 控制器)不会响应重置命令。 主 ID (MID) 不匹配:作业环需要特定的主 ID 配置,以便 BL2(在 EL3 中运行)能够"自己的" 。如果 BootROM 将振铃分配到不同的 MID 但没有释放它们,BL2 在尝试 RESET 它们时会超时。   3.调试步骤 检查 SEC_VID(版本 ID)和 SEC_STA(状态)寄存器:在 Job Ring 重置呼叫之前阅读这些寄存器。如果状态寄存器显示网络安全违规,则需要找出触发该违规的原因(通常是前一阶段的身份验证失败)。 验证重置位:确保在切换重置位后等待足够长的时间。在某些芯片版本中,CAAM 重置所需的时间比 SDK 中提供的标准延迟环路长。 检查 TrustZone 设置:确保您正在访问的任务环在中央安全单元 (CSU) 或资源域控制器 (RDC) 中标记为 " Secure "。 此致 Re: Secure boot fails in BL2 because SEC/CAAM not initialized 开机后,但在加载 SRKH 镜像寄存器并释放 CPU 之前,如果我检查 DCFG_CCSR_DEVDISR1 寄存器,我会发现位 22 (高效密码学标准(SEC)) 设置为 1。根据有关重置的文档,该寄存器应全部为 0。在启动过程的这么早期,这个值可能在哪里设置?我需要对 pbl 命令做些什么吗?RCW 是否有误?我确实看到在低功耗安全寄存器中检测到电源故障,但我也看到配置寄存器显示应忽略/不应对低功率篡改采取行动。 Re: Secure boot fails in BL2 because SEC/CAAM not initialized 好吧,谁能帮我确认一下? 在 TF-A 驱动程序/nxp/dcfg/dcfg.c 中我找到了一个用于检查是否启用 高效密码学标准(SEC) 的计算方法。它在 SVR_SEC_MASK 和寄存器 0x1ee00a4 的值之间进行比特& ,寄存器 0x1ee00a4 是一个只读寄存器。如果我正确读取了字段,那么 16-23 位的状态是否为 ls1043 或 ls1023,是否 高效密码学标准\(SEC\) 硬件是否启用。我看到该位的值为 0x00000001。哪个会是这个芯片上禁用的高效密码学标准(SEC)封锁,对吗?我参考了完整零件号的示意图并得到了 LS1043ASN7MNLB,当我查看恩智浦的网站显示高效密码学标准(SEC)已禁用时。这是否导致了我的安全启动问题?高效密码学标准(SEC)能否启用这款芯片,还是在它离开恩智浦后就一成不变了?我们需要考虑其他芯片吗,还是可以在没有高效密码学标准(SEC)的情况下进行安全启动? Re: Secure boot fails in BL2 because SEC/CAAM not initialized 支持人工智能复制粘贴?如果我们要走这条路,就需要进一步调整代理。如果 SoC 知道自己的代码库,那么它就应该知道 NXP_CAAM_ADDR 是在头文件中静态定义的,而不是先填充的。
查看全文
CAAM 演出 你好 我有一个项目示例(源于 SDK 25.06.00 CAAM 示例),附在后面,我想测量仅计算 CRC 的 CAAM 性能。事实上,当我运行这个示例时,我立刻感觉它太慢了。为此,我使用了DWT->CYCCNT 寄存器。 我还将其与软件实施进行了比较。 我在 RT1170-EVKB 上运行它,得到的结果是这样的: Screenshot_2026-03-21_18-25-56.png   如果说第一项计算对于 CAAM 这样的加速器来说已经显得太慢(甚至比软件实现还要慢),那么第二项计算就太疯狂了。 有什么问题?也许是 SDK 中的一个错误? 顺祝商祺! 最大值 Re: CAAM performaces 你好@Kan_Li 感谢您的回复。 不幸的是,你的回答恰恰证实了我的担忧:在回复之前,所附项目显然根本没有打开过。 我这样说的原因很简单,也很客观: 该项目已经使用了 CAAM_CRC()。这不是我忽视的理论可能性,也不是我忘记尝试的替代途径。在随附的示例中,它@@ 已经存在了,而这正是我的测量中表现最差的路径。 Screenshot_2026-03-24_09-20-48.png 因此,我想再次澄清,我并没有发布关于如何使用驱动程序的通用问题。我花时间准备并附上了一个源自SDK示例的完整项目,特别是为了让恩智浦的支持人员可以直接构建、运行和验证行为。 我比较了相同 CRC 的计算结果: 软件中 与 CAAM 结果与我报告的问题如出一辙:对于硬件加速器来说,测得的性能出乎意料地差,在其中一个测试案例中,性能比软件实现要差得多。 这就是问题所在。 而不是 "也许可以试试 CAAM_CRC()"。 这已经完成了。 当客户附加一个可随时运行的项目时,通常不会浪费论坛存储空间、网络带宽或任何人的时间。这是因为客户希望支持人员能亲手重现问题,尤其是在项目已经为此最小化的情况下。 也许是我太相信附带的复制项目会在回答之前得到真正的审查。如果是这样,那就是我的责任了。 但如果这就是对附带完整复制器的技术帖子的关注程度,那么坦率地说,许多用户抱怨他们得到的支持质量不高也就不足为奇了。 因此,让我以一种现在不可能被误解的方式来重述这个问题: 所附项目已经使用了 CAAM_CRC()。 我使用 DWT->CYCCNT 测量了周期计数。 我比较了同一目标上的软件 CRC 和 CAAM CRC。 CAAM 的性能比预期的要差,有一次甚至比软件差了一大截。 鉴于这些事实,恩智浦能否采取以下措施之一: 使用所附项目重现结果、 解释管理费用的来源、 说明这是否是 SDK/驱动程序的问题、 或明确说明这些性能指标是预期的。 如果能提供具体的技术分析,我们将非常感激,而不是那些与所附例子本身已经相矛盾的建议。 致以最诚挚的问候, Max Re: CAAM performaces 你好@mastupristi、 SDK 示例使用了单独的 CRC 初始、更新和结束函数。驱动程序确实有一个一次性使用的 CAAM_CRC()函数,可以用来替代它,速度应该会更快。请尝试使用 CAAM_CRC(),并检查是否有任何不同。 祝您愉快, Kan ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请打开一个新主题并参考已关闭的主题。 ------------------------------------------------------------------------------- Re: CAAM performaces 你好@mastupristi、 对不起,是我不好!我正在查看您与我们分享的另一个 CRCendianess 项目。你们的项目在我的项目视图中靠得太近了,而且它们的 main() 几乎是一样的,......。很抱歉我忽略了这一点!   我刚刚使用不同的 CRC 输入数据长度对您的项目进行了测试,当要 CRC 的数据足够长时,例如您在测试中使用的数据长度的两倍,基于 CRC 初始、更新和结束的硬件计算比软件实现要好,但 CAAM_CRC() 在测试中总是最差的情况。 2026-03-24_19-04-07.png 感谢您的耐心等待! 祝您愉快, Kan ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请打开一个新主题并参考已关闭的主题。 ------------------------------------------------------------------------------- Re: CAAM performaces 你好@mastupristi、 看来我的主板出了点问题,我刚刚使用另一个 RT1170EVKB 主板得出了以下结果。 2026-03-25_18-57-37.png 你还有其他板可以再试一次吗? 祝您愉快, Kan ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请打开一个新主题并参考已关闭的主题。 ------------------------------------------------------------------------------- Re: CAAM performaces 你好@Kan_Li 令我担忧的是,在3个板和总共4次测试中,我们看到的行为截然不同,数字也截然不同。 让我们牢记一点:CAAM 是 MCU 的内部外设,它与 MCU 内部的 RAM 相互影响。实际上,板上的哪些外部元器件会以如此显著且不一致的方式影响 CAAM? 在这一阶段,似乎有理由考虑关键问题实际上是否可能在 MCU 方面。 这是我的 EVK 上的照片 rt1176.png 另外,能否请您说明一下,您是在什么确切条件下从 3 次测试中得出这些数字的?特别是 使用了哪个板, 安装了哪个 MCU、 以及在设置或条件方面是否存在其他相关差异。 最重要的是,你如何解释我和你的数字之间的差异? 目前我没有其他板可供进一步测试。 此致问候 最大值   Re: CAAM performaces 你好@mastupristi, 我这边的设备是 MIMXRT1176DVMAA/0P94B/CTAS2152A,和你的设备一样,在我的测试中,为了避免任何程序在调试你的代码之前在闪存启动,我将启动模式设置为串行下载模式并在SRAM中运行你的代码。你也这样做了吗?有可能从你这边跨板分享你的结果吗? 顺祝商祺! 坎 Re: CAAM performaces 你好@Kan_Li 我尝试了 "将应用程序链接到 RAM"(项目附后) Screenshot_2026-04-14_09-28-09.png 通过这种设置,我得到了以下结果: mastupristi_0-1776151857026.png 如您所见,情况有了明显改善,但真正令人惊讶的是,使用 CAAM 进行首次 CRC 计算所需的时间与 SW 版本相同。 使用 CAAM(CAAM_CRC())进行最新的 CRC 计算需要耗费 3.37 亿个周期(以前需要 14.22 亿个周期,因此只减少了 4 倍)。 我设法借到了另一个 EVKB,上面有这个微控制器 mastupristi_2-1776152915756.png 结果如下 mastupristi_1-1776152680926.png 因此,软件实现在这两个板上的行为完全相同。这并不奇怪,事实上,这正是我所期待的。 第一个 CAAM 所需的时间稍长,而第二个 CAAM 所需的时间要短得多(2.52 亿个周期)。 以下是摘要: SW CRC32 iSCSI SW CRC16 CCITT 硬件 (CAAM) CRC32 iSCSI(分别调用 init、update 和 finalize) 硬件 (CAAM) CRC16 CCITT(调用 CAAM_CRC() 这给我提出了很多问题 这种表现上的不一致性,尤其是第 4 号,令人十分担忧。是什么原因造成的? 与软件实现相比,这种加速器似乎根本没有加快速度。真的是这样吗,还是我遗漏了什么? 此致问候 最大值 Re: CAAM performaces 你好@mastupristi、 我仍在对 4 号检测结果进行内部核查,有更多信息时会通知你们。 对于其他测试,您是否按 SW/HW 计算了更多数据? 在核心上运行的 SW 确实能从缓存中获得一些好处,但当你放入更多数据时,你就会发现其中的差别。 顺祝商祺! 坎 Re: CAAM performaces 你好@mastupristi、 内部之后。经过讨论,我们发现问题是由 DCACHE 失效引起的: DCACHE invalidate 函数会降低函数的性能,因为项目使用了写入缓存 ("CACHE_MODE_WRITE_THROUGH=1") 配置,这也启用了宏 ("CAAM_OUT_INVALIDATE") 。这是在 SDK 示例中实现的,以避免数据一致性问题,主要是在中间件中。由于出现 ERR050396(如下),TCM 无法用于写入。 以下是该功能的测量结果: Kan_Li_0-1779782204663.png Kan_Li_1-1779782204669.png Kan_Li_2-1779782204657.png 在本例中,"输出" 位于非缓存区域,因此无需在该特定函数中进行无效处理。 /*!@brief CRC 的输出缓冲区。*/ uint8_t AT_NONCACHEABLE_SECTION(crc_output[4U]); 因此,当 DCACHE 失效被取消时: Kan_Li_3-1779782204733.png 最高优化 -O3 已启用: Kan_Li_4-1779782205151.png 考虑到数据访问的限制以及 CAAM 配置结构的处理,在这种情况下,从 ITCM 执行的优化 SW 实现(数据在 DTCM 中,频率为 @800 MHz)可能比 CAAM 更快。我认为,这取决于有效载荷的大小以及 SW 计算是否经常中断的整体应用概念。 顺祝商祺! 坎
查看全文
i.MX8QX6 – UUUフラッシュがlibusbエラーで停止する(LPDDR4行アドレスの不一致の可能性) こんにちは、 現在、以下の構成で作業を行っています。 SoC: NXP i.MX8QX6(MIMX8QX6AVLFZAC) LPDDR4: Micron MT53E768M32D2ZW-046 (AIT:C) Yoctoリリース: walnascar-6.12.34-2.1.0 Universal Update Utility を使用して imx-boot-imx8qxp-mek-sd.bin-flash_spl イメージをフラッシュしようとしています。 フラッシュ処理中にツールが停止し、最終的にLIBUSB_ERROR_NO_DEVICEを報告して、フラッシュ処理が完了しなくなります。 トラブルシューティングを実施しました 問題を特定するために、以下のことを試みました。 以前のリリースに含まれる古いimx-bootバイナリを使用してテストしました。 LF_v6.6.52-2.2.2_images_IMX8QXPC0MEK LF_v5.15.32-2.0.0_images_IMX8QXPC0MEK UUUツールの最新バージョンを使用しました フラッシュ処理を複数回繰り返した しかし、その行動は変わらない。 疑われる原因 メモリデバイスの仕様を精査した結果、社内調査により、 SoCのDDRコントローラ構成と実際のLPDDR4デバイスとの間でDDRアドレス行構成の不一致が発生している可能性があることが示唆されました。 Micronのデータシートによると、メモリデバイスは行アドレスR[16:0](17行)を使用します。 しかし、SoCのドキュメントによると、DDRコントローラは最大16行のアドレス線(R0~R15)をサポートしているようです。 この違いから、 DDRコントローラ構成とメモリデバイスのアドレス指定方式に不一致がある可能性があると推測されます。 質問 LPDDR4構成における行アドレスの不一致が原因で、起動初期段階でUUUフラッシュ処理がLIBUSB_ERROR_NO_DEVICEエラーで停止する可能性はありますか? これが原因である可能性がある場合、 i.MX8QX6 上のこの LPDDR4 デバイスの DDR パラメータを正しく設定するための推奨される方法は何ですか? 構成はNXPが提供するDDRツール/RPAツールを使用して生成すべきでしょうか、それともこの特定のメモリデバイス用のリファレンス構成は既に用意されているのでしょうか? 何かご助言やご提案があれば、大変ありがたく思います。 よろしくお願いします。 Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) こんにちは、 @Yogesh_   私は自分のimx8qxpボードでテストしました。問題は発生していません。私は以下のコマンドを使用してflash.binファイルをフラッシュします。 uuu -b emmc .\imx-boot-imx8qxpc0mek-sd.bin-flash   Snipaste_2026-03-17_10-23-38.png ご質問にお答えします: Q1 & Q2:これはこの問題を引き起こしません Q3:DRAMの適切なパラメータを設定する必要があります。次に、新しいflash.binファイルを再コンパイルします。しかし、おっしゃる通りです。お使いのDRAMの行数は17ですが、imx8qxpがサポートする最大行数は16です。ですから、16行の別のDRAMに交換してください。つまり、最大4GB(32Gb)のLPDDR4密度をサポートするには、構成は16行2ランクでなければならない。 BR Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) UUUツールがハングアップ/停止する問題を解決するための代替案をご提案いただけますでしょうか?以前のバージョンと最新バージョンのUUUツール両方を試してみましたが、依然として同じエラーが発生します。 Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) ご返信ありがとうございます。 Yoctoで生成されたimx-boot-imx8qxp-mek-sd.bin-flash_splとflash.binイメージの両方のログを添付しました。flash.binはRPAツールを使用して設定され、SCFWポーティングキットでビルドされ、正常に起動しています。 Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) こんにちは、 @Yogesh_ 以下のコマンドを実行した結果はどうなりますか? uuu -lsusb BR Re: i.MX8QX6 – UUU flashing stalls with libusb error (possible LPDDR4 row address mismatch) こんにちは、 @Yogesh_ 以下のコマンドは使用しないでください sudo uuu -v -b emmc_all imx-boot-imx8qxp-mek-sd.bin-flash_spl 以下のコードを使用してください。 uuu -b emmc imx-boot-imx8qxp-mek-sd.bin-flash_spl 1. Windows OS上でuuuツールを実行してみてください。 2. 下記のコマンドの結果を共有してください。 uuu -lsusb BR
查看全文
i.MX93 - 1PPS入力とPTP 目標: GPS レシーバからの Pulse-Per-Second (PPS) 信号と GPRMC ログを使用して、ENET_QoS イーサネット コントローラ内で PTP 時間の同期を検証する ハードウェア: i.MX 93 ビルドルート: 2025.11.1 Linux: 6.12.16 Linuxptp : 4.4 デバイスツリーオーバーレイの変更: eqos のステータスを「無効」から「正常」に変更します usdhc2 pinctrl-* エントリから pinctrl_usdhc2_gpio および pinctrl_usdhc2_gpio_sleep エントリを削除します。 pinctrl_eqos と pinctrl_eqos_sleep に「MX93_PAD_SD2_CD_B__ENET_QOS_1588_EVENT0_IN 0x31E」エントリを追加します。 usdhc2 cd-gpiosエントリを削除し、broken-cdに置き換えます pinctrl_usdhc2_gpio ノードと pinctrl_usdhc2_gpio_sleep ノードを削除します。  ターゲット上のソフトウェアの場所: eMMCからの起動 LinuxカーネルとptpアプリをubootingしてSDカードから実行する  Linux PTPソフトウェアを実行中: ptp4l -E4H -i eth1 ts2phc -c /dev/ptp1 -s nmea --ts2phc.nmea_remote_host10.128.240.54 --ts2phc.nmea_remote_port3001 --ts2phc.ピンインデックス0 -l 7 -m PPS入力: 現在、GPS レシーバからの PPS 信号を受け入れるように FRDM i.MX 93 ボードに変更を加える前に、あらゆるイベントのタイムスタンプを検証しようとしています。これらのイベントを生成するために、SD カード ソケットの機械式スイッチの脚の間に絶縁体を挿入しています。SD2_nCD に接続された IO ピンを GPIO 入力として手動で設定し、このアクションによってピンの入力電圧が変化することを確認しました。ハードウェアによるイベント情報のタイムスタンプは、特定の周期性に依存すべきではないと私は想定しています。 テスト結果: ts2phcはGPRMCログを受信していますが、ログにはポーリングで常にゼロイベント情報が返されることが示されています。 devmem プログラムを使用したスクリプト経由でレジスタを調べると、次のようになります。 SW_MUX_CTL_PAD_SD2_CD_B 0x00000001 SW_PAD_CTL_PAD_SD2_CD_B 0x0000031E MAC_SYSTEM_TIME_SECONDS 0x69AB35B0 MAC_SYSTEM_TIME_NANOSECONDS 0x10642013 MAC_TIMESTAMP_STATUS 0x00000000 MAC_補助制御 0x00000010 MAC_AUXILIARY_TIMESTAMP_NANOSECONDS 0x00000000 MAC_AUXILIARY_TIMESTAMP_SECONDS 0x00000000 システム時間レジスタが適切に時間をカウントしていることがわかります 補助タイムスタンプ レジスタにはゼロ以外の値が表示されることはありません。リファレンス マニュアルでは、FIFO が空のときには常にゼロが読み取られるのか、それとも最新のタイムスタンプが返されるのかは明確ではありません。 SW_MUX_CTL_PAD_SD2_CD_B レジスタの SION ビットを 0 と 1 の両方に設定してこれを試しましたが、結果に違いはありませんでした。 pin_index マッピングが予想どおりでなかった場合に備えて、MAC_AUXILIARY_CONTROL レジスタの 4 つの ATSEN ビットをすべて設定してみましたが、結果に違いはありませんでした。 i.MX 93 アプリケーションプロセッサリファレンスマニュアル、Rev. 6、2025-07-01 を読んだときに生じた追加の質問: 第 43 章 TSN 対応イーサネット コントローラ (ENET_QoS)、セクション 43.5、表 417 には、2 つの異なるイベント入力 1588_EVENT_AUX_IN と 1588_EVENT_IN がリストされています。これら 2 つの信号はどの外部ピンまたは内部デバイス ポートに接続されますか?1588_EVENT_IN ポートは ENET_QoS 内で何に接続しますか?1588_EVENT_AUX_INはptp_aux_trig_i[0]に接続され、ATSEN0ビットによって制御されていると推測します。(これはカーネルと ts2phc が期待していることでもあるようです。)それは正しいですか? 第43章、セクション43.5、表417には、1つのイベント出力1588_EVENT_OUTがリストされています。この信号はどの外部ピンまたは内部デバイス ポートに接続されますか?1588_EVENT_OUT ポートは ENET_QoS 内で何に接続しますか?PPS 出力の 1 つに関連付けられていますか? 第 43 章では、タイムスタンプをトリガーするために ptp_aux_trig_i 入力のどのエッジ (立ち上がり/立ち下がり/両方) が使用されるかが指定されていないようです。 Re: i.MX93 - 1PPS input and PTP こんにちは、 NXP Semiconductors製品にご興味をお持ちいただきありがとうございます。 AUX_IN 信号は、現在の時刻 (この時刻は、どのアプリケーションでもタイムスタンプ値として使用されます) をタイムスタンプ FIFO にラッチすることをトリガーするために使用されます (以前のトリガー イベントから複数のタイムスタンプ値がある場合があります)。 EVENT_IN はメディア クロック生成および回復ブロックへの入力であり、次のトリガーに使用されます。 アプリケーションから読み取られたターゲットプレゼンテーション時間のキャプチャは、リカバリモードが有効になっている場合は MAC_PPSn_Target_Time_Seconds に結果を生成します。 生成モードが有効になっている場合、サンプリングされたトリガーで現在のプレゼンテーション時間をキャプチャします。 1588_EVENT_OUT は、プロセッサによって PPS 出力を駆動するために使用されます。 よろしくお願いします。 Re: i.MX93 - 1PPS input and PTP AUX_IN という用語を使用する場合、それは表 417 の 1588_EVENT_AUX_IN という用語と同じですか? もしそうなら、どの特定の ATSEN* ビットにマップされますか? AUX_IN (1588_EVENT_AUX_IN) は、SW_MUX_CTL_PAD_SD2_CD_B の ENET_QOS_1588_EVENT0_IN モードに接続しますか? Re: i.MX93 - 1PPS input and PTP こんにちは@Kevin_M はい、1588_EVENTx_AUX_IN です。次のフィールドを確認してください。これが AUX の使用法です。 PTGE プレゼンテーション時間生成の有効化 このビットが設定されると、プレゼンテーション時間生成が有効になります。 0 - プレゼンテーション時間生成が無効 1 - プレゼンテーション時間生成が有効 ... MAC_PPS0_ターゲット時間秒 PPS ターゲット時間秒レジスタ このフィールドには、時間を秒単位で格納します。 PPSターゲットタイム秒レジスタ このフィールドには時間が秒単位で保存されます。タイムスタンプ値が両方のターゲット タイムスタンプ レジスタと一致するかそれを超えると、MAC は PPS 信号出力を開始または停止し、MAC_PPS_CONTROL レジスタの対応する PPS 出力に対して選択されたターゲット タイム モードに基づいて割り込み (有効な場合) を生成します。 ... 43.7.9.1 メディアクロック生成のプログラミングガイドライン 1. PPSインスタンスをメディアクロック生成モードに設定するには、適切なプレゼンテーションタイムコントロール(サポートされている生成モード「1001-1011」)をMAC_PPS_CONTROLレジスタのPPSCMD(0番目のインスタンスの場合)/PPSCMD#i(1、2、3番目のインスタンスの場合)にプログラムします。 2. 選択されたPPSインスタンスに基づいて、アプリケーションは対応するmcg_pst_trig_i[#i]に適切なトリガー信号を駆動する必要があります。 ... 43.7.9.2 メディアクロックリカバリのプログラミングガイドライン 1. MAC_TIMESTAMP_CONTROL レジスタの PTGE フィールドを設定して、現在のプレゼンテーション時間 (CPT) カウンタを有効にします。システム時間の初期化値をプログラムすることに加えて、同等のプレゼンテーション時間の初期値で MAC_PRESN_TIME_UPDT レジスタを更新します。その後、MAC_TIMESTAMP_CONTROL レジスタの TSINIT フィールドが設定されます。 2. システム時間に使用される増分値は、現在のプレゼンテーション時間にも使用されます。これは、増分値がサブ秒およびサブナノ秒単位であるためです。 1.各ATSENはそれぞれのEVENTにマッピングされます 2. 正解です。ここでAUX_INを確認できます。https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx8mp-pinfunc.h#L54 よろしくお願いいたします。 Re: i.MX93 - 1PPS input and PTP @JosephAtNXP私は PPS 出力を設定しようとしているわけではなく、IEEE 1722 と関係のあることもしようとしているわけではありません。ENET_QOS_1588_EVENT0_IN の状態が変化した瞬間にタイムスタンプを付けようとしています。 Re: i.MX93 - 1PPS input and PTP @JosephAtNXP さん、ENET_QoSで1588 PPSの入力がうまく機能しない理由について、まだ調査中でしょうか? Re: i.MX93 - 1PPS input and PTP @Kevin_Mこの問題の解決に何か進展はありましたか?私も同じ問題に直面しています。ENETインスタンスではPTPをPPS入力と同期させることはできますが、リファレンスマニュアルやドライバでEVENT0_INピンをENET_QOSで使用する方法が見つかりません。 Re: i.MX93 - 1PPS input and PTP ケビンさん、ありがとうございます。確かにそれが唯一の方法のようですが、stmmacドライバではまだ対応していないようなので、追加する必要がありますね。 Re: i.MX93 - 1PPS input and PTP NXPは、ENET_QoSのAUX TIMESTAMP機能がi.MX93チップの内部または外部のいずれにも接続されていないことを確認しました。 私は、1588_EVENT0_IN モードで SD2_CMD を介して PPS をルーティングし、MAC_PPS_CONTROL をプレゼンテーション時間制御オプション 0001 を使用するように設定して、PPS 信号の立ち上がりエッジでプレゼンテーション時間をキャプチャし、MAC_PPS0_TARGET_TIME_SECONDS でキャプチャされた時間を読み取ることに成功しました。まだ解決すべき細かい点はたくさんありますが、これは有望な解決策のように思えます。
查看全文