Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
U-Boot 中的自定义脚本 你好呀。 这是一个通过自定义脚本有效使用 U-boot 的好方法。 引导脚本是引导加载程序启动时自动执行的脚本,在 操作系统自动启动过程。 引导脚本允许用户自动执行一组预定义的 U-Boot 命令 在继续正常的操作系统启动之前。这对于生产环境特别有用, 没有可用串行端口来显示 U-Boot 监视器的目标。 该信息可以在 U-Boot 参考手册中找到。 我将以在IMX8MM-EVK的CORTEX M4中加载二进制文件为例。 就我而言,我在 MMC 2:1 中有一个二进制文件,名为gpio.bin ,我将跳过这些步骤,因为这不是目标。 首先,您需要在 Linux 机器上安装u-boot-tools : sudo apt install u-boot-tools 该软件包为我们提供了工具mkimage来转换文本文件(.src、.txt)文件到 U-Boot 的引导脚本文件。 现在,创建您的自定义脚本,在本例中,这是一个用于在 Cortex M4 中加载二进制文件的简单脚本: nano mycustomscript.scr 并编写你的 U-Boot 命令: fatload mmc 2:1 0x80000000 gpio.bin cp.b 0x80000000 0x7e0000 0x10000 bootaux 0x7e0000 Alejandro_Salas_0-1705729663162.png 现在我们可以使用 mkimage 将文本文件转换为引导脚本。 句法: mkimage -T 脚本 -n “引导脚本” -C 无 -d mkimage -T script -n "Bootscript" -C none -d mycustomscript.scr LCM4-bootscript 这将创建一个名为 LCM4-bootscript(或按您的称呼)的文件。 将此引导脚本文件加载到 U-Boot 的一种方法是使用 UUU 工具,在 U-Boot 中使用命令在 fastboot 中设置设备: u-boot=> fastboot 0 然后在 Linux 中将开发板通过 USB 连接到 PC 运行以下命令: sudo uuu -b fat_write LCM4-bootscript mmc 2:1 LCM4-bootscript 现在我们在 MMC 2:1 中的 U-Boot 中有了引导脚本。 最后,我们可以在 U-Boot 中运行引导脚本: u-boot=> load mmc 2:1 ${loadaddr} LCM4-bootscript 158 bytes read in 2 ms (77.1 KiB/s) u-boot=> source ${loadaddr} ## Executing script at 40400000 6656 bytes read in 5 ms (1.3 MiB/s) ## No elf image at address 0x007e0000 ## Starting auxiliary core stack = 0x20020000, pc = 0x1FFE02CD... Cortex M4 启动成功: Alejandro_Salas_1-1705730669972.png 我希望这对你有帮助。 顺祝商祺! Salas. i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6 全部 i.MX6DL i.MX6 双核 i.MX6DualPlus | 6QuadPlus i.MX6 四核 i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7 双核 i.MX7 单核 i.MX7ULP Linux 回复:U-Boot 中的自定义脚本 @pvsnsubhash谢谢!我会在某一天尝试看看您的解决方案。看看它是否也对我有用。 回复:U-Boot 中的自定义脚本 @Arjen_Hoogesteger我想我已经弄清楚了。我们需要创建一个自定义的.scr文件并在 include/configs/ .h 中的文件中添加详细信息引导加载程序源代码中的文件。 #定义CFG_EXTRA_ENV_SETTINGS \ 额外环境设置 \ “boot_scripts=lx2160ardb_boot.scr\0”   在 boot_scripts 参数值中更改您的自定义脚本名称。 回复:U-Boot 中的自定义脚本 非常有用的信息。我和@pvsnsubhash所寻求的信息基本相同。我们如何才能将这样的自定义脚本作为创建的 Yocto 图像的一部分自动运行? 回复:U-Boot 中的自定义脚本 @Manuel_Salas这非常有用,但是我们如何才能让这个自定义脚本在自动启动计时器和内核加载开始之前自动运行。比如,如果我们想在 uboot 执行期间运行自定义脚本以及默认的 _boot.scr 脚本。 默认启动脚本在 nxp yocto-sdk 中位于哪里
記事全体を表示
i.MX 8/8X 系列 DDR 工具发布 重要提示:如果您对 DDR 工具或支持文档有任何疑问,或想报告相关问题,请在 i.MX 社区创建支持工单。请注意,任何私人消息或直接电子邮件均不会被监控,也不会收到回复。 i.MX 8/8X DDR 工具概览 此页面包含 i.MX 8/8X DDR 工具的最新发布版本。本页面所述工具适用于以下配备系统控制器单元(SCU)的 i.MX 8/8X 系列 SoC: i.MX 8QuadMax 及其衍生产品 i.MX 8QuadPlus i.MX 8QuadXPlus 及其衍生产品 i.MX 8DualXPlus 和 i.MX 8DualX i.MX 8DXL (i.MX 8XLite) 及其衍生产品 i.MX 8SXL 注意:有关 i.MX 8M 系列的 DDR 工具,请参考:i.MX 8M 系列 DDR 工具发布说明                          i.MX 8/8X DDR 工具的用途是让用户能够根据其设备配置(密度、片选数量等)和电路板布局(数据总线位交换等)生成并测试自定义的 DRAM 初始化程序。此过程使用户能够继续进行引导加载程序和操作系统的启动工作。操作系统启动后,建议运行基于操作系统的内存测试(如 Linux memtester),以进一步验证和测试 DDR 内存接口。 i.MX 8/8X DDR 工具包括: DDR 寄存器编程辅助工具 (RPA) DDR 压力测试 有关这些 DDR 工具及其用法的更多详细信息,请参阅本页附带的 MX8X_DDR_Tools_quickstart_guide.pdf。 i.MX 8/8X DDR 寄存器编程辅助工具 (RPA) i.MX 8/8X DDR RPA(简称 RPA)是一个 Excel 电子表格工具,用于根据用户特定的 DDR 配置(DDR 设备类型、密度等)开发 DDR 初始化程序。RPA 以两种格式生成 DDR 初始化程序(在单独的 Excel 工作表标签中): DDR 压力测试脚本:此格式专门用于 DDR 压力测试,方法是先复制此工作表标签中的内容,然后将其粘贴到文本文件中,并将该文档命名为带有 “.ds” 文件扩展名的文件。用户在执行 DDR 压力测试时将选择此文件。 DCD CFG 文件:此格式是系统控制器单元固件 (SCFW) 专门使用的配置文件。在这种情况下,用户复制此工作表标签中的内容,将其粘贴到文本文件中,将该文档命名为带有 “.cfg” 文件扩展名的文件,并将此文件放置在适当的 SCFW 板文件目录中。 i.MX 8/8X DDR 寄存器编程辅助工具 (RPA):当前版本 注意:在所有情况下,RPA 版本都与最低 SCFW 版本对齐,如下表所示。在某些情况下,提供 BSP 对齐作为额外细节,但是,RPA 工具专门与最低 SCFW 版本及更高版本对齐。 要获取最新的 RPA,请参考以下链接(注意,现有的 RPA 已从本主页面移除,并移至下方特定于 SoC)的链接中): i.MX8QM: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QM-DDR-Register-Programming-Aid-RPA/ta-p/1166307 i.MX8QXP/QXP/DX: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QXP-DXP-DX-DDR-Register-Programming-Aid-RPA/ta-p/1166302 i.MX8DXL/SXL: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-DDR-Register-Programming-Aid-RPA/ta-p/1602262 处理器 掩模版本 支持的存储器 最新 RPA 版本 * 说明 i.MX 8QM B0 LPDDR4 版本 23*** 启示录 22** 版本 21** 版本 20** 版本 19** 版本 23:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 22:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 21:修复了 1 个 DRC 操作,将对 VREF 训练的调用注释掉以用于 DRC1,并添加了 DDRC_SCHED 寄存器编程,以与最新的 SCFW 编程对齐(有关更多详细信息,请参考 RPA 修订历史)。 Rev 20:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练规避命令) 版本 19:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8QXP C0、B0 LPDDR4 版本 16*** 版本 15** 版本 14** 版本 13** 版本 16:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 15:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 14:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练变通命令) 版本 13:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8QXP C0、B0 DDR3L 启示录 23 版本 22*** 版本 21 版本 20 版本 23: -修正了寄存器配置 DDR_PHY_PTR4.tDINIT1 位域编程。以前,计算仅基于 tRFC,但是,计算应该基于 “tRFC + 10ns”。此问题已得到纠正。 -将 DDRC_INIT4、DDR3 MR2.ASR = 1 设置为默认设置,以允许 DRAM 根据其外壳温度自动选择自刷新速率(但用户可以通过下拉菜单选择禁用)。此外,删除了 DTCR0.DTRDBITR 的条件设置,因为 DDR3 不支持 DBI,所以不需要该设置。此设置的默认值为零,并将保持不变。 -为用户提供了根据 DDR3L 设备的预期最高温度(1X、2X、4X)选择自动刷新速率的选项。用户应参考 DDR3L 数据表以了解支持的温度范围和相关的刷新速率。 版本 22:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 21:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 - 与 SCFW 1.1.10 及更高版本兼容 -此版本所做的更改不会影响基于 v19 的 DCD CFG 文件输出 -在 DDR 压力测试脚本中发现问题,即某些命令没有根据寄存器配置工作表中的 ECC 设置进行正确配置;此问题已得到解决(单元格 A84、A87、A90、A93) -此外,在 DCD CFG 和 DDR 压力测试脚本工作表中,所有依赖于 ECC 配置的命令都已更新,以包括与数据总线是否配置为 16 位的 “或” 运算(ECC 仅支持全 32 位数据总线宽度配置) i.MX 8DualX C0、B0 LPDDR4 版本 16*** 版本 15* 版本 14** 版本 13** 版本 16:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 15:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 版本 14:与 SCFW 1.4.0 和 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本一起使用(以支持 SW VREF 训练变通命令) 版本 13:与 SCFW 1.3.1 和 NXP BSP GA 版本 L5.4.3_1_0_0 一起使用 i.MX 8DualX C0、B0 DDR3L 版本 21 版本 20*** 版本 19 版本 18 版本 21: -修正了寄存器配置 DDR_PHY_PTR4.tDINIT1 位域编程。以前,计算仅基于 tRFC,但是,计算应该基于 “tRFC + 10ns”。此问题已得到纠正。 -将 DDRC_INIT4、DDR3 MR2.ASR = 1 设置为默认设置,以允许 DRAM 根据其外壳温度自动选择自刷新速率(但用户可以通过下拉菜单选择禁用)。此外,删除了 DTCR0.DTRDBITR 的条件设置,因为 DDR3 不支持 DBI,所以不需要该设置。此设置的默认值为零,并将保持不变。 -为用户提供了根据 DDR3L 设备的预期最高温度(1X、2X、4X)选择自动刷新速率的选项。用户应参考 DDR3L 数据表以了解支持的温度范围和相关的刷新速率。 版本 20:重要提示:此版本与 SCFWv1.7.0(及更高版本的 SCFW)对齐。使用 SCFWv1.7.0(及更高版本的 SCFW)时,必须使用此版本或更高版本的 RPA,不能使用早期版本的 RPA。请参见表格末尾的注释。 版本 19:以下更改对 DDR IO 接口没有影响。此更新设置主要是在 DCD 文件中添加了一个由 RPA 配置的总 DDR 密度的定义。该定义由 SCFW 使用。 - 与 SCFW 1.1.10 及更高版本兼容 *有关 RPA 以前版本的历史记录,请参考相应 RPA 的 “修订历史” 标签。 ** 一般来说,即使使用预发布的 BSP,也建议使用最新的 RPA 工具,因为它确保您使用最新的修复程序和功能进行测试。可能会提供较旧版本的 RPA 以支持 BSP 的现有/已发布版本。这仅适用于那些与预发布 BSP 兼容但可能与 BSP 的已发布版本不兼容的 RPA 工具。 ***重要提示:如表格上方所述,对于所注明的 RPA 版本,它与 SCFWv1.7.0(及更高版本的 SCFW)对齐。旧版本的 RPA 与 SCFWv1.7.0(及更高版本的 SCFW)不对齐。如果尝试将旧版本的 RPA 与 SCFWv1.7.0(及更高版本的 SCFW)一起使用,将导致 SCFW 无法启动。DCD 输出中的问题行如下: 对于 MX8QXP/DualX: 数据 4 0xff190000 0x00000CC8 /* DRC0 启动 */ 对于 MX8QM: 数据 4 0xff148000 0x00000885 /* DRC0 启动 */ 数据 4 0xff1a0000 0x00000885 /* DRC1 启动 */ 如果用户希望使用带有 SCFW 1.7.0(及后续版本)的较旧 RPA(不推荐),则必须从较旧 RPA DCD 文件输出中删除上述行。此外,这些行被以下预处理命令包裹:"#ifndef SCFW_DCD"、"#else" 和 "#endif"。这些也应该被移除。例如 MX8QXP: [移除] ifndef SCFW_DCD [移除] /* 对于 1200MHz DDR,DRC 600MHz 操作 */ [移除] DATA 4 0xff190000 0x00000CC8 /* DRC0 启动 */ [移除] #else [移除] #endif 注意:当提到 “SCFWv1.7.0(及更高版本的 SCFW)” 时,它指的是 SCFWv1.7.0、1.7.1、1.7.2……1.8.0、1.9.0、1.10.0…… 等,其中 “……” 是次要版本 / 补丁,因此当您看到 1.7.2…… 时,它指的是 1.7.3、1.7.4 等)。除非另有说明,表格上方所示的最新 RPA 与最新的 SCFW 版本对齐。 i.MX 8/8X DDR 压力测试 i.MX 8/8X DDR 压力测试工具是一个基于 Windows 的软件工具,用于在构建用于 u-boot 和操作系统启动的 SCFW 之前,验证 DDR 初始化程序是否可运行。DDR 压力测试使用从 RPA 工具生成的 .ds DDR 压力测试脚本以及 SCFW 的特殊构建版本,该版本使用以下选项构建: DDR_CON=ddr_stress_test_parser 或者在 i.MX 8QuadMax 的情况下使用一个 DDR 控制器: DDR_CON=ddr_stress_test_parser_DRC0_only DDR 压力测试提供了一个 “Target” 选项,用于指定正在测试的 SoC。以下是可供选择的目标选项: MX8QM – 用于测试 i.MX 8QuadMax 及其衍生产品 i.MX 8QuadPlus MX8QX – 用于测试 i.MX 8QuadXPlus 及其衍生产品 i.MX 8DualXPlus/DualX MX8DXL – 用于测试 i.MX 8DXL 及其衍生产品 i.MX8 SXL   要安装 DDR 压力测试工具,请保存并解压 zip 文件 mx8_ddr_stress_test_ERxx_installation.zip(其中 “xx” 是当前版本号),然后按照屏幕上的安装说明进行操作。 注意,解压 DDR 压力测试工具 .zip 文件时,建议执行 “在此处解压” 操作。某些系统不允许从另一个文件夹运行解压后的安装可执行文件,只有从与原始下载的 zip 文件相同的位置执行时才能工作。 有关 DDR 压力测试使用方法的更多详细信息,请参考 DDR 压力测试工具交付内容中的 MX8_DDR_Tool_User_Guide。 注意:在新的自定义板上使用 DDR 工具之前,用户应正确地将系统控制器单元固件(SCFW)移植到此新板上。没有正确移植且可工作的 SCFW,DDR 工具将无法运行。          i.MX 8/8X DDR 压力测试 要求 该工具需要访问Windows注册表,因此用户必须以管理员模式运行它。 该工具不能在需要由客户签名的镜像的 OEM 封闭设备上运行。 当用户设计新的 i.MX 8/8X 板时,请确保遵循相应的硬件开发指南和 MX8_DDR_Tool_User_Guide 中概述的规则,这可以帮助用户在其各自的 i.MX 8/8X 板上启动 DDR 设备。   i.MX 8/8X DDR 压力测试 SECO 固件 通常不建议更新 DDR 压力测试默认附带的 SECO (ahab) 固件。不建议这样做是因为 DDR 压力测试的目的是测试 DDR 内存接口,而非整个 SCFW 到 SECO 固件的操作,即便较新版本的 SCFW 可能会提示 SECO 固件版本不是最新的。DDR 压力测试附带的 SECO 固件版本在 DDR 压力测试发布前已通过工厂测试并证实可用;将 SECO 固件更新为其他版本可能会导致意外后果,使 DDR 压力测试无法运行。在大多数情况下,仅更新 SCFW 而不更新 SECO 固件是允许的。 如果用户希望更新 DDR 压力测试中的 SECO 固件版本,则需要重命名该固件,去掉芯片版本(例如,更新 MX8QM SECO 固件时,用户需要将 mx8qmb0-ahab-container.img 重命名为 mx8qm-ahab-container.img,主要是去掉 “b0”)。MX8QXP 是个例外,如果更新 C0 芯片版本的 SECO 固件,用户应保留 C0 这一命名。 如果用户发现更新后的 SECO 固件导致 DDR 压力测试无法运行,建议恢复为 DDR 压力测试发布时附带的默认 SECO 固件版本。 i.MX 8/8X DDR压力测试用户指南 i.MX 8/8X DDR 压力测试工具包含文档:MX8_DDR_Tool_User_Guide.pdf 注意:使用本工具前,请仔细阅读包内的 MX8_DDR_Tool_User_Guide。 DDR 压力测试修订历史 版本 主要变更(功能) NXP BSP软件版本 ER 14 已更新以支持解析 DDR 压力测试脚本中的 VREF 训练命令 此版本与 NXP BSP GA 版本 L5.4.3_2_0_0 及更高版本对齐。 ER15 - 支持 i.MX 8Lite(又名 DXL) - 在数据训练失败时提供更详细的输出,特别是指出哪些字节通道失败 - 有助于调试电路板布局问题 此版本与 NXP BSP GA 版本 Linux 5.15.71_2.2.0 及更高版本保持一致。  相关资源链接: i.MX 8ULP DDR 工具:i.MX 软件和开发工具 | NXP Semiconductors 向下滚动到“其他资源 --> 工具 --> DDR 工具” i.MX 8M 系列 DDR 工具发布 i.MX 6/7 DDR 压力测试 GUI 工具 i.MX 8QM RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QM-DDR-Register-Programming-Aid-RPA/ta-p/1166307 i.MX 8QXP/DXP/DX RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8QXP-DXP-DX-DDR-Register-Programming-Aid-RPA/ta-p/1166302 i.MX 8DXL (i.MX 8XLite) RPA: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-DDR-Register-Programming-Aid-RPA/ta-p/1602262 常见问题: 问:DDR 压力测试运行时,会显示先测试区域 1,然后测试区域 2。什么是区域 1 和区域 2? 答:i.MX8X 系列中有两个不同的 DDR 内存区域,这是由于 Cortex A 内核的架构以及 i.MX8X 相关的内存映射所致。 区域 1 是 32 位区域,起始地址为 0x080000000,结束地址为 0x0FFFFFFFF(共 2GB) 区域 2 是 64 位区域(针对 Cortex A 内核架构),起始地址为 0x880000000,结束地址取决于剩余密度: •对于板载总密度为 4GB 的情况,区域 1 为 2GB,区域 2 为 2GB,因此区域 2 的结束地址为 0x8FFFFFFFF(0x900000000 减 1) •对于总密度为 6GB(NXP 板卡密度)的情况,区域 1 为 2GB,区域 2 为 4GB,因此区域 2 的结束地址为 0x97FFFFFFF(0x980000000 减 1) •对于总密度为 8GB 的情况,区域 1 为 2GB,区域 2 为 6GB,因此区域 2 的结束地址为 0x9FFFFFFFF(0xA00000000 减 1) 因此,区域 1 和区域 2 之间的内存映射存在一个 “空洞”。因此,DDR 压力测试首先测试较低的区域(区域 1),直到该区域测试完毕(最多 2GB),如果 DDR 密度超过 2GB,测试将在区域 2 中测试剩余密度。 问:i.MX8X 系列片上系统是否支持具有 17 个行地址 (R [16:0]) 的 LPDDR4 存储器? 答:i.MX8QM、i.MX8QXP 和 i.MX8DXP 片上系统及其衍生产品不支持较新的 17 行地址 LPDDR4 存储器。这意味着,为了支持最大 4GB(32Gb)的 LPDDR4 密度,配置必须为 16 行、2 秩(而非不支持的 17 行、1 秩)。即将推出的 i.MX8DXL 计划支持 17 行地址的 LPDDR4 设备。 问:运行 DDR 压力测试时,我可以选择不同的 i.MX8X AP UART 端口吗? 答:强烈建议遵循 NXP 板卡设计,包括选择相同的 UART 端口;这将减轻用户的软件移植工作,并最大限度地减少不必要的调试问题。DDR 压力测试需要使用 USB OTG 端口和 AP UART 端口(强烈建议连接 SCFW UART 端口以获取 SCFW 调试信息)。到目前为止,工厂认为用户没有理由选择与 NXP 板卡上使用的不同的 AP UART 端口。选择相同的 AP UART 端口可确保 DDR 压力测试更快启动,而不是不必要地调试为什么不同的 UART 端口无法工作。 无论如何,有些人出于某种原因希望使用不同的 UART 端口,因此,NXP 提供了变通方法以允许选择不同的 UART 端口。要选择不同的 UART 端口(0、1 或 2),用户只需在 DDR 压力测试 DDR 初始化(.ds)脚本的末尾添加以下行: memory set  0x5C01042C 32   内存设置 0x5C01042C 32 0x00000000 # UART0 端口选择用于 AP UART(默认) 内存设置 0x5C01042C 32 0x00000001 # UART1端口选择用于AP UART 内存设置 0x5C01042C 32 0x00000002 # UART2端口选择用于AP UART 请注意,UART 端口 0、1 和 2 具有作为默认 UART 引脚的焊盘名称(IOMUX ALT0 配置)。到目前为止,DDR 工具不支持在其他非默认 UART 引脚上多路复用的其他 UART 端口。不过,i.MX8QXP/DXP 和即将推出的 i.MX8DXL 是个例外,它们可以使用在 FLEXCAN2 上多路复用的 UART3。要选择此端口,请在 .ds 文件的末尾添加以下内容: 内存设置 0x5C01042C 32 0x00000003 # UART3 端口选择用于 AP UART(i.MX8QXP/DXP 和 i.MX8DXL 除外) 有些 RPA 内置了支持(通过下拉菜单)来选择 UART 端口。对于那些没有此功能的 RPA,这是因为这些 RPA(恩智浦板卡)未使用不同的 UART 端口进行测试,因为板卡需要切割线路并重新连接 UART 信号,而且有些板卡可能没有现成的这些 UART 线路。不过,用户仍然可以手动添加此 UART 端口选择。参考以下 RPA 以查看 UART 端口选择选项: MX8QXP DDR3 MX8DXP DDR3 问:测试 [8GB(64Gb)的 MX8QM 或 4GB(32Gb)的 MX8QXP] 的 LPDDR4 内存时,DDR 压力测试为何似乎挂起? 答:此问题并非由 DDR 压力测试本身引起,而是由所使用的 SCFW 版本导致。默认版本的 SCFW 二进制文件早于 SCFW 所做的一项更改,即当检测到 DDR 压力测试正在运行时忽略 DRAM 密度限制。与 DDR 压力测试 ER14 相关联的此版本 SCFW 将可测试的 DRAM 密度限制为 [MX8QM:6GB,MX8QXP:3GB],因为此版本的 SCFW 配置为在恩智浦板卡上运行作为基础。如 DDR 压力测试用户指南中所述,建议用户在使用 DDR 压力测试之前,先将最新的 SCFW 移植到其板卡上,以考虑恩智浦板卡与其板卡之间的差异。此外,用户有以下选项可启用超出 [MX8QM:6GB,MX8QXP:3GB] 的测试;请注意,在运行 DDR 压力测试之前,用户有责任确保 SCFW 有一个正常工作的移植版本。 1.最新的 SCFW 应包含一项更新,即如果检测到 SCFW 是为与 DDR 工具一起使用而构建的,则设置无密度限制 —— 用户可以尝试获取最新的移植工具包并构建新的固件。这是推荐的更改。 2. 如果使用早于此更改的现有/较旧版本的 SCFW,在 board.c 的 board_system_config () 函数中,有以下代码块(显示 MX8QM 示例): /* Board has 6GB memory so fragment upper region and retain 4GB */         BRD_ERR(rm_memreg_frag(pt_boot, &mr_temp, 0x980000000ULL,             0xFFFFFFFFFULL)); 用户可以按如下方式进行修改:     if (ddrtest == SC_FALSE)     {         sc_rm_mr_t mr_temp;         /* Board has 6GB memory so fragment upper region and retain 4GB */         BRD_ERR(rm_memreg_frag(pt_boot, &mr_temp, 0x980000000ULL,             0xFFFFFFFFFULL));         BRD_ERR(rm_memreg_free(pt_boot, mr_temp));     } 如果 SCFW 是为 DDR 工具构建的,这将禁用此部分代码的执行(与 1 相同,但使用较早的固件版本时需要用户手动完成)。 3. 在上述代码块中,将 0x980000000 更改为 0xA00000000。这应该允许上述 MX8QM 示例支持 8GB 密度(对于 MX8QXP,将 0x8C0000000ULL 更改为 0x900000000ULL 以支持 4GB 密度)。 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus
記事全体を表示
CANコネクティビティ Hi , IMX6 ULLのevkボードを持っています。私の理解では、CAN機能があるということです。 DB-9コネクタをボードに接続するためのコネクタを、ボックスに付属のベースイメージでCANが有効になっている場合、または有効にする方法を教えてもらえますか。 よろしくお願いします。 アトゥル i.MX6UL Re:CAN接続性 Hello,  正確な部品番号を探している場合は、WF1250801200ですが、もう生産されていないようです。 このリンクを参照して、9ピンDコネクタのピン配置を確認できます。 Alejandro_Salas_0-1727104403705.png よろしくお願いいたします。 Salas. Re:CAN接続性 Hi @Manuel_Salas , コネクタを提供できない場合は。8ピンポートの各ピンの使い方を教えてください。例えば、どのピンにCAN0_H、どのピンにCAN0_Lするなど。 ありがとうございます アトゥル Re:CAN接続性 Hi @Manuel_Salas , ご返信ありがとうございます。imx6ullボードの缶ポートをDB-9コネクタに接続するためにコネクタを使用してほしいのですが、ボードのパッケージには含まれていなかったからです。 よろしくお願いいたします。 アトゥル Re:CAN接続性 こんにちは@athul_am  すべての i.MX 6は、i.MX 6SABRE-AIのデフォルトデバイスツリーで1つのCANをサポートします。FlexCANデバイスツリーを使用して両方のCANをサポートしますが、FECとピンが競合しています。i.MX 6SoloX-SD、7Dual SABRE-SD、6Ultre Lite EVK、および 6ULL EVK のデフォルトのデバイス ツリーでサポートします。FlexCANモジュールをサポートするプラットフォームにより、FlexCANはCANFDモードをサポートします。 また、テーブル42のテーブルをご覧ください。FlexCANドライバファイルはIMXリファレンスマニュアルにあります。 また、i.MX6ULLはJ1201ポートを介したCANアクセスを提供します。 Alejandro_Salas_0-1726090008241.png よろしくお願いいたします。 Salas.
記事全体を表示
指示和通知 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我想和你分享一些我找到的关于指示和通知的信息。希望这些信息能帮助你更深入地了解这些内容。 指示和通知是可以通过属性 (ATT) 协议发送的命令。因此,在 ATT 层定义了两种角色: 客户端设备通过 BLE 链路使用 GATT 协议访问远程资源。通常,主设备同时也是客户端,但这并非强制要求。 服务器设备具有GATT数据库、访问控制方法,并向远程客户端提供资源。通常,从机也是服务器。 BLE 标准定义了两种服务器向客户端传输数据的方式:通知和指示。规范中定义的每条消息的最大数据有效载荷大小为 20 字节。通知和指示由服务器发起,但需经客户端启用。 通知无需确认,因此速度更快。但这样一来,服务器无法知晓消息是否已送达客户端。 需要确认指示已被确认并传达。客户端向服务器发送了一条确认消息,这样服务器就知道消息已到达客户端。ATT协议中一个有趣的定义是,如果未收到确认,服务器不能发送两个连续的指示。换句话说,您必须等待每个指示的确认,然后才能发送下一个指示。 图1。指示/通知 不过,在通信开始时,服务器无法发送指示或通知。首先,客户端必须在服务器端启用通知和指示权限,服务器才被允许发送指示或通知。这一过程需要客户端写入将要被通知 / 指示的特征的客户端特征配置描述符 (CCCD)。 也就是说,客户端可以向服务器请求针对特定特征的通知。一旦客户端在服务器中启用了该特征的通知功能,每当该特征的值可用时,服务器就能将其发送给客户端。例如,考虑一个心率传感器应用程序与心率智能手机应用程序相连的场景。心率服务可以对其心率测量特征进行通知。 在这种情况下,传感器是服务器,而智能手机是客户端。设备连接后,智能手机应用程序必须通过其 CCCD 设置心率测量特征的通知权限。当智能手机应用程序(客户端)将 CCCD 设置为启用通知后,心率传感器(服务器)就能在有心率测量结果可用时发送通知。如果该特征具有指示属性,也需要遵循相同的流程。 归根结底,是客户端决定允许服务器对某个特征进行指示或通知。 最后,值得一提的是,与通知不同,指示虽然更可靠,但速度更慢,因为服务器发送数据后,客户端必须确认已收到数据。 KW41Z31Z21Z
記事全体を表示
如何在 i.MX8MP 上连接 Wi-Fi 网络 材料: i.MX8M Plus EVK Rev. A USB Type-C 线 USB Type-B 线 AC适配器 EA1045CR Micro SD(可选) 基于88W8997的无线模块 软件: Yocto Project Mobaxterm 个人版 v20.2 Build 4296 该测试是在装有 Linux 5.10 Hardknott 的 i.MX8M Plus EVK 上完成。 要实现这一点,您需要识别您的 Wi-Fi 模块,并查找该模块所需的驱动程序。在我的案例中,我使用的是随 i.MX8M Plus 提供的 88W8997 模块,但您可以选择任何其他 Wi-Fi 模块。 就我而言,我在 Yocto 上构建了一个基本镜像,按照 Yocto 用户指南,我只对核心启动镜像进行 bitbake,以便我能够启动 i.MX8M plus。 将您的镜像部署到 SD 或 eMMC 上。 这些说明适用于SD卡和MMC卡,但为了简洁起见,通常只列出SD卡。 要使 Linux 镜像能够运行,需要四个独立的部分: Linux 操作系统内核镜像 (zImage/Image) 设备树文件 (*.dtb) 引导加载程序镜像 根文件系统(即 EXT4) Yocto Project 构建会生成一个 SD 卡镜像,该镜像可以直接闪存。这是最简单的方法,只需一个命令就可将所需一切加载到此卡。 .wic 镜像包含四个经过正确配置的图像,适用于 SD 卡。该版本包含预构建的 .wic 镜像,专为单板配置构建。它运行 Wayland 图形后端。除非 U-Boot、设备树和 rootfs 发生改变,否则它无法在其他板上运行。当需要更多灵活性时,可以单独加载各个组件,并且相关指令也包含在此处。SD 卡可以逐一加载各个组件,或可以加载 .wic 镜像,并且个别 部件可以被特定组件覆盖。 默认 .wic 镜像上的 rootfs大小限制为略低于 4 GB,但通过重新分区和重新加载 rootfs,可以将其增加到存储卡的大小。rootfs 也可以更改以指定所使用的图形后端。 执行以下命令,将 SD 卡镜像复制到 SD/MMC 卡。更改以下 sdx 来匹配 SD 卡所用的。 $ sudo dd if= .wic of=/dev/sdx bs=1M && sync SD 卡的全部内容将被替换。如果 SD 卡容量大于 4 GB,则无法访问额外的空间。 由于此版本不包含集成的驱动程序,我们需要在 Linux 用户空间上手动添加。 请按照以下说明加载驱动程序模块并启动基于 88W8987 的无线模块,更多信息请访问以下链接:https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth/2-4-5-ghz-dual-band-2x2-wi-fi-5-802-11ac-plus-bluetooth-5-3-solution:88W8997?tab=Documentation_Tab 使用预建镜像中包含的 nano 编辑器编辑和验证 wifi_mod_para.conf 配置文件中的模块参数。 nxf63675_0-1637803047960.png 将以下行添加到配置文件中: PCIE8997 = { cfg80211_wext=0xf wfd_name=p2p max_vir_bss=1 cal_data_cfg=none drv_mode=7 ps_mode=2 auto_ds=2 fw_name=nxp/pcieuart8997_combo_v4.bin } 在内核中加载模块: nxf63675_1-1637803047961.png 核实命令输出中的内核调试消息 nxf63675_2-1637803047979.png 请验证模块现在是否对系统可见: nxf63675_3-1637803047979.png nxf63675_4-1637803048004.png 现在模块已准备就绪,我们需要启用该模块。在我的系统中,Wi-Fi 名称为 mlan0,但在其他 Linux 系统中可能会有所不同。 nxf63675_5-1637803048026.png 如果您需要查看可用的网络,可以扫描并选择您需要的网络。 nxf63675_6-1637803048028.png 识别您的网络并将其添加到 WPA supplicant 文件中: nxf63675_7-1637803048029.png nxf63675_8-1637803048031.png 将 Wi-Fi 与配置相关联: nxf63675_9-1637803048041.png 检查您是否已正确关联 SSID: nxf63675_10-1637803048049.png 使用 DHCP 获取 IP 地址 nxf63675_11-1637803048057.png Ping 任何您熟悉的公共网站以检查网络。 nxf63675_12-1637803048071.png 如果您遇到名称解析的临时故障,您需要更改由DHCP分配的默认DNS: nxf63675_13-1637803048072.png 修改 /etc/resolv.conf 文件并添加您首选的 DNS 服务器地址。以我的情况为例,我添加了 Google 的 DNS 服务器,因为它们能够访问大多数常见的网页。 nxf63675_14-1637803048072.png 这样应该就可以正常工作了。 nxf63675_15-1637803048085.png Linux Yocto Project
記事全体を表示
NT3H2111能量收集 Hello, 我正在评估 NT3H2111 作为 ST25DV 的替代品。然而,从数据表中无法清楚了解能量收集的行为方式。这很重要,因为我们的应用确实需要暂时启用能量收集的能力。 能量收集功能可以禁用吗? 当没有磁场和/或能量收集功能被禁用时,VOUT 引脚是否处于高阻抗状态?当外部电压施加到VOUT引脚时,电流泄漏是多少? 感谢您的帮助! Alexis 回复:NT3H2111 能量收集 你好earth75 , NT3H2111 无法“禁用”能量收集。换句话说,如果 LA/LB 引脚上有 RF 电压,您将始终在 VOUT 上看到整流电压(当然,这取决于所使用的负载)。 关于漏电流,应该在10-15uA范围内。 BR Tomas  回复:NT3H2111 能量收集 你好@earth75 如果您不想使用能量收集功能,保持 VOUT 引脚悬空就可以了。 回复:NT3H2111 能量收集 Hi @KaiLi  谢谢,我已经阅读了申请说明。 它详细描述了 VOUT 在收集过程中的行为以及场强和输出功率之间的关系。 然而,我对没有场的情况下的行为很感兴趣:当电压从外部施加到引脚(例如通过电池)时,Vout 会发生什么情况?它会吸收电流吗? 此外,是否可以禁用能量收集,以便 VOUT 始终处于高阻状态? 此致, Alexis 回复:NT3H2111 能量收集 你好@earth75 我建议您看一下以下文档,它应该可以帮助您了解能量收集功能。 https://www.nxp.com.cn/docs/en/application-note/AN11578.pdf
記事全体を表示
SENT发射机通道 Hi, 在 S12ZVC 微控制器中仅观察到一个 SENT TX 模块。如果我们需要在一个微机中设置 4 个或更多单独的发送通道,我们如何适应这些类型的情况? 从下面的 NXP 链接详细信息中,我的理解是,无需实际的 SENT 发射器,我们就可以使用下面的 S32K144 示例代码传输 SENT 脉冲模式。我无法理解下面链接附加的代码。 https://community.nxp.com/t5/S32K-Knowledge-Base/Uart-to-SENT-protocol-transmitter/ta-p/1129291 我们是否有类似上述 S12ZVC micros 链接示例代码。我有 S12ZVC - DEVKIT EVB。我想实现 4 个 SENT TX 独立通道。在 S12ZVC 微型计算机中,我只观察到一个 SENTTX。我们还有其他选择吗? 我们是否有带有 4 个独立 SENT tx 通道的微型/EVB。 回复:SENT 发射机通道 你好@UmaMaheswaraReddy , 我无法确认是否可以使用 TIM 和 PWM 模块模拟 SENT,因为我们没有这方面的任何演示或文档。但是是的,这两个模块只共享两个引脚。 BR, Daniel 回复:SENT 发射机通道 Hi Daniel, 谢谢你的信息。 我们可以使用 TIM 和 PWM(无需实际的 SENT 发射器)实现 SPC(带触发器的 SENT)。根据我对 S12ZVC 引脚摘要的理解,我们只有两个带有 TIM 和 PWM 组合的引脚(PT2、PT3)。所以我们最多可以实现 2 个 SPC(通过触发器发送),对吗? UmaMaheswaraReddy_0-1727944912660.png 我没有看到任何其他引脚同时支持 PWM 和 TIM。如果我错了,请纠正我。 我的要求是我需要在一个板中实现 6 个 SPC(带触发器的 SENT)。 仅 PT2 和 PT3 与 TIM 和 PWM 组合。 UmaMaheswaraReddy_3-1727945223305.png UmaMaheswaraReddy_2-1727945184061.png 谢谢! Y Uma Maheswara Reddy. 回复:SENT 发射机通道 你好@UmaMaheswaraReddy , 是的,你说得对,这只是针对接收者而言的。 我私下给你发了一个 S32K1xx SENT TX FlexIO 示例。 根据我掌握的信息,下周应该有一个 S32K3xx SENT TX FlexIO 示例。 BR, Daniel 回复:SENT 发射机通道 Hi Daniel, 在 S32K3xx 系列 RTD 中,我们观察到用于 SENT RX 的 FLEXIO SENT 驱动程序。我们是否有 SENT TX 的 SENT 驱动程序示例? UmaMaheswaraReddy_0-1727758590197.png 谢谢! Y Uma Maheswara Reddy. 回复:SENT 发射机通道 你好@UmaMaheswaraReddy , S32K1xx系列具有FlexIO模块,可用于模拟SENT协议。 对于较新的 S32K3xx,我们还有 RTD FlexIO SENT 驱动程序。 S12Z MagniV系列没有FlexIO。 它需要使用 GPIO 或 TIM 模块进行模拟,但我们没有任何示例/文档。 此致, Daniel
記事全体を表示
S32K3 単調性カウンタリセット問題 Hi NXP, LC = OEM環境でHSE単調カウンターを試しましたが、開始、増加、再初期化できました。 私の質問は、プログラムカウンタ機能、レコード操作カウンタを実装したいということです。一度だけ初期化して増やしたいのですが、LC = OEMで0に再初期化することはできません。 1. モノトニックはこれに適していますか? 2. もしない場合、このケースに適した他の機能はありますか? Re:s32k3モノトニックカウンターリセット問題 こんにちは@victory  HSE FW RMの次のスクリーンショットをご覧ください。 lukaszadrapa_0-1727938392834.png lukaszadrapa_1-1727938402944.png よろしくお願いします。 Lukas
記事全体を表示
【RTD400 MCAL】 K344 KEY control EMIOS PWM content.png 1 摘要 在学习了 S32K3 PWM 并编写了一些 MCAL 代码后,这是第一篇以 K344 EMIOS + ICU + TRIMUX + LCU 组合为起点的 MCAL 文章记录,涉及 PORT、DIO、EMIOS、中断 ICU、TRIGMUX、LCU 等综合配置。开发板平台仍基于 NXP 官方的 S32K344EVB、RTD400,实现的功能为:使用 EMIOS0 的两个通道和 EMIOS1 的一个通道。EMIOS0 的一个通道输出 PWM 后,通过 TRIGMUX 连接 LCU 生成一组互补 PWM;另一个通道通过 SW5 PT26 按键实现 PWM 占空比的硬件中断控制。EMIOS1 的一个通道直接连接板载红灯 PTA29,通过改变 PWM 占空比实现亮度渐变,再通过直接改变开关周期实现呼吸灯效果。同时,当 PWM 关闭红灯时,通过 DIO 点亮板载绿灯;当 PWM 打开红灯时,DIO 关闭板载绿灯。 文字描述总是不如图形描述直观,因此这里是图片: 1.png 图1 2. 功能实现 本文基于将 MCAL 代码移植到 S32DS 演示程序。然后在 S32DS 平台上,通过 EB 配置 MCAL 相关模块,再通过 S32DS 编译下载进行仿真。当然,若喜欢命令行模式,可直接使用 EB 配置的 xmd 文件,然后用 VScode 编译,过程也很简单,本文不赘述命令行方式。     2.1 硬件和软件平台 板:S32K344EVB,也可以使用其他 K3 板。 IDE:S32DS3.5 RTD:K344 RTD 400 MCAL工具:EBtresos Studio 29.0 2.2 软件控制过程 在介绍具体的 MCAL 配置前,先给出本文功能的软件流程图:                                                                             2.png 图2 从图中可以看到,默认情况是通过 MCAL 配置的状态,之后在代码中也会修改 PWM 频率,通过按键和循环延时修改 PWM 占空比。 2.3 资源分配概览 本文中使用的硬件资源和功能列举如下: 3.png 图3 eMIOS 相关总线的配置如下: 4.png 图4 需要注意的是,对于 MCL emios 中的主总线和总线模式,需在 PWM 模块中选择合适的 PWM 模式和计数器总线,否则可能出现配置错误或无法生成正确 PWM 波形的情况。 从官方的 S32K3 RM 中,您可以查看时钟通道和总线类型: 5.png 图5 例如,若在 PWM0 中选择 EMIOS_CH23,则该总线对应总线 A,且该时钟可用于所有通道,因此 PWM0 为 CH12 时可使用总线 A。CH22 对应总线 F,该时钟也可用于所有通道,因此 PWM1 CH4 选择总线 F 没问题。CH0 对应总线 B,该时钟对应 0-7 通道,因此也可用于 PWM2 为 CH2 的情况。为 EMIOS 通道选择计数器总线时钟源时,必须考虑计数器总线的通道覆盖范围。 除了计数器总线的选择,还有 PWM 模式的选择,这相对容易处理。时钟向上计数时选择 OPWMB,时钟上下计数时选择 OPWMCB 中心对齐 PWM。 在实际使用中,模式选择通常根据自身的 PWM 要求确定,然后根据以下 RM 表进行选择: 6.png 图6 可找到相应模式能支持的通道类型,再根据图 5 中的通道类型选择对应的通道、计数器总线等。具备这些基础知识后,即可直接进入 EB 配置。 2.4 EB 配置 在此,我们列出了与本文相关的EB tresos中使用的所有模块,并重点介绍了需要特定配置的模块。 7.png 图7 2.4.1 Dio module 需要配置 DioPort 接口。主要是配置 PTA30(板载绿灯),选择 DioPort Id=1,Dio Channel Id=14。DioPortId 和 Dio Channel Id 的规则如下: 通道 = DioChannelId + DioPortId×16 对于 S32K3X4 衍生产品 – Port AL=0 – Port AH=1 – Port BL=2 – Port BH=3 – Port CL=4 – Port CH=5 – Port DL=6 – Port DH=7 – Port EL=8 – Port EH=9 – Port FL=10 – Port FH=11 – Port GL=12 – Port GH=13 PTA30=>30=DioChannelId(14)+DioPortId*16 2.4.2 Icu module 首先,配置IcuSiul2,目标是启用板载SW5的PTB26输入中断。PTB26 对应 EIRQ[13], 相应的中断情况如下: 8.png 图8 9.png 图9 (1) Icu->IcuSiul2->IcuSiul2Channels:13 (2)Icu->IcuChannel 配置为: 10.png 图10 选择 IcuChannelRef 作为先前配置的 IcuSiul2Channels,并添加中断通知功能: User_EdgeDetect,请注意,此函数是需要在代码中添加的用户中断处理函数的名称。 (3)Icu->IcuHwInterruptConfigList-> ICU外设ISR名称:SIUL2_0_IRQ_CH_13,IcuIsrEnable启用 2.4.3 Mcl module 该模块主要用于配置 emios 计数时钟、trgmux 和 LCU 配置。 (1)Mcl->Trgmux 逻辑实例->硬件实例:TRGMUX_IP_HW_INST_0 (2)Mcl->Trgmux 逻辑组: 11.png 图11 主要目的是通过Trigmux将PWM1 Emios0_ch4连接到LCU0_IN0。 (3)Mcl->LCU配置 以下是LCU模块的配置。主要功能是配置逻辑输入和逻辑输出。有一个输入 IN0 和两个输出 OUT0 和 OUT1。 12.png 图12 13.png 图13 14.png 图14 OUTPUT0 的值为 0XAAAA=43690, OUTPUT1 的值为 0X5555=21845 此目的在于从输入的 PWM 生成一对互补的 PWM。 15.png 图15 (4)Mcl->Emios Common 添加两个 Emios,即 EMIOS_0 和 EMIOS_1,意味着使用两个 EMIOS。 EMIOS0 配置有两个主总线通道:CH_22 和 CH_0,具有不同的模式类型,分别为上下计数和向上计数。 EMIOS1 配置了一个主总线通道:CH_23,计数向上 对应图4。 16.png 图16 17.png 图17 注意这里的通道不是实际的 PWM 输出通道,而是 PWM 通道的计数器总线通道,具备提供时钟的能力。 2.4.4 Mcu module  该模块是整个 MCU 配置时钟的基础。使用原始 RTD PWM 演示程序的默认设置时,有一点需要注意 Mcu->McuClockSettingConfig_0->McuClockReferencePoint->McuClockReferencePoint_0->核心时钟48MHz。 该时钟是 EMIOS 时钟的来源。有了时钟源,根据设置的周期计算实际 PWM 频率就不难了。例如,若需要 1Khz 的 PWM,可配置周期 = 48M/1K=48000。 2.4.5 平台模块 Platform->Interrupt Controller->IntCtrlConfig0,启用 SIUL_1_IRQn,并添加 Handler 为: SIUL2_EXT_IRQ_8_15_ISR 注意,SIUL2_EXT_IRQ_8_15_ISR 不是随意编写的,必须与 Siul2_Icu_Ip_Irq.c 中的一致,否则会报错。 18.png 图 18 不同的中断有不同的中断服务函数,需要找到代码中定义的函数名并填入 EB。 EB配置如下所示: 19.png 图19 2.4.6 Port module 8个引脚的配置如下: 20.png 图20 可以看到,主要有 3 个 EMIOS PWM、1 个输入中断、1 个输出 GPIO 以及 2 个输出 LCU 互补 PWM。 2.4.7 Pwm module Mcl 配置 EMIOS 的计数器时钟通道。需要在 Pwm 模块中配置要输出的 PWM 通道,并链接到 MCU 时钟源和 Mcl 中的 emios 计数器总线源。 (1) Pwm->PwmEmios 为相应的 EMIOS 模块添加两组。例如,本文使用 EMIOS0 和 EMIOS1,因此需要添加两个: 21.png 图21 对于PwmEmios_1,有一个通道,配置如下: 22.png 图22 PwmEmiosBusRef: /Mcl/Mcl/MclConfig/EmiosCommon_1/EmiosMclMasterBus_0 23.png 图23 可以看到,这里 PwmEmios_1 的 busRef 是 Mcl 中的 Emios_ch_23,即总线 A。 也就是说,EMIOS1_CH12 所用的总线参考时钟来自 EMIOS1_CH23,即总线 A。 PwmEmios_0 中配置了两个通道,配置如下: 24.png 图24 25.png 图25 EMIOS0_CH4 使用的总线参考时钟来自 EMIOS0_CH22,该总线是总线 F。 另一个 EMIOS0 通道: 26.png 图26 27.png 图27 EMIOS0_CH2 使用的总线参考时钟来自 EMIOS0_CH0,即总线 B,因此请选择总线 BCDE。 此时,我们可以清楚地理解实际的PWM输出通道与内部MCL Emios计数器总线通道之间的关系。 (2)Pwm->PwmEmios 有了上述配置的 PWM 具体信息,我们可以直接配置 PWM 通道。总共有三个通道: PWM0、PWM1、PWM2,这些也是代码中需要用到的标志。 28.png 图28 2.5 主代码 #include "Pwm.h" #include "Mcu.h" #include "Port.h" #include "Mcl.h" #include "Platform.h" #include "Dio.h" #include "Icu.h" //#include "check_example.h" #define NUM_BLINK_LED (uint32)10U #define DELAY_TIMER (uint32)5000000U #define MCL_EMIOS_1_CH_23 (uint16)279U #define MCL_EMIOS_0_CH_22 (uint16)22U Mcl_LcuSyncOutputValueType PWM_OutputList[2]; volatile uint8 UserCountIrqCH0; void TestDelay(uint32 delay); void TestDelay(uint32 delay) { static volatile uint32 DelayTimer = 0; while(DelayTimer 3. 测试结果 上电后,板载红灯闪烁,然后从熄灭状态逐渐变亮,与绿灯交替闪烁。 测试 PWM1 PTB16:EMIOS0_CH4,稳定后波形为 20Khz,占空比在 25% 和 75% 之间交替变化。PWM2 PTB14:EMIOS0_CH2,稳定后频率为 1KHZ,随着板载 SW5 的按下,占空比在 25% 和 75% 之间交替变化。 测试 PTD3、PTD2,可见是一对互补波形,频率与 PTB16 相同,占空比变化规律也相同。由此可见,本文中的按键中断、3 路主 PWM 以及 2 路 LCU PWM 均已正常工作。 29.png 图29 30.png 图30
記事全体を表示
s12zのCAN上のFreemaster Hello, mc9s12zvmc128デバイスを使用して、プロジェクトでFreemaster over CAN(UARTまたはBDMの代わりに)を有効にしようとしています。これはサポートされていますか? 私の資料: - FreeMASTER_Serial_Communication_Driver_V2.0 - フリーマスター 3.2 - IXXAT USB-to-CAN コンパクトデバイス 日時:s12zのCAN上のFreemaster Hello, FreeMASTER 3.xはすべてのバージョンの通信プロトコルをサポートしているため、S12Zのシリアルドライバー2.0とも互換性があります。FreeMASTERはプロトコルバージョンを自動的に検出します。 新しいドライバーが S12Z に移植されたとは思いませんが、2.0 ドライバー パッケージの例は問題なく動作するはずです。 よろしく ミハル 日時:s12zのCAN上のFreemaster 私がよく理解している場合:Freemaster 3.2は、少なくともCANではFreemasterドライバーV2.0と互換性がありません(BDMとUARTはうまく機能します)。 FreeMASTER通信ドライバ3.0(S12)はどこにありますか?
記事全体を表示
PCF2131 - 2 番目のパルス信号が誤ってトリガーされる Hello, 私はRamónで、STMマイコンを使用してPCF2131で働き始めました。デバイスで新しい時間+日付を設定した後、パルスの2番目の信号に問題があります。 私がフォローしているスキームは次のとおりです。 1.私は割り込みなしでデバイスを設定し、秒パルス信号のみを設定しました。制御レジスタは次のように設定します。 **コントロール1:0b0000 0001、コントロール2、3、4、5:0b0。-> 2番目のパルス信号のみを使用します。 ** INTA/B Mask1/2: 0b0 -> すべての割り込みが無効 ** WDコントロール:0x20 ->パルス秒信号、WDなし。 2.次に、RTCから読み取り、整合性を確認します。次に、マイコンの時刻を設定します。 3.定期的に、デバイスはSNTPを介してsincronyzされます。そして、ここからが問題です。 新しい日付を受信すると、RTCを停止し、プリスケーラーをクリアし、新しい時間を設定して(操作の遅延を追加)、RTCを再開します。この時間が秒の変化(約920〜950ms)に近づき、遅延を増やして時間を設定すると(これにより、新しい時間が約50〜80msになります)、秒パルス信号がトリガーされ、MCUはリアルタイムよりも1秒早く増加します。なぜこのようなことが起こっているのかはわかりません。割り込みの無効化、クリア、および再有効化を試しましたが、それでも同じです。なぜこれが起こっているのか何か考えはありますか? 測定した信号を、送信したI2Cデータに添付しました。2つ目は、この特定のフレームに設定されている日時のズームで、100分の1秒が4に設定されていることがわかります。
記事全体を表示
例 MCAL S32K312 MEM_InFls DS 3.5 RTD 3.0.0 ******************************************************************************* 本デモ・アプリケーションは、S32K3xx MCU 用 MEM_InFls MCAL ドライバーの使用方法を示すことを目的としています。 本例では、MEM_InFls ドライバーを使用して、FLASH メモリ アドレス 0x50_0000 に 128 バイトを書き込みます。 ------------------------------------------------------------------------------ * テストハードウェア: S32K3X2EVB‑Q172 * MCU: S32K312 * コンパイラ: S32DS 3.5 * SDK リリース: RTD 3.0.0 * デバッガ: PE Micro * ターゲット: internal_FLASH ******************************************************************************* Dinesh_Guleria_0-1715852390344.png 結果:-- Dinesh_Guleria_1-1715852435648.png FLASH 書き込み/消去コードを配置した RAM の位置: ‑‑ RAM サイズの最大アドレスから 256 バイト下にコードを配置しました 0x20417DAA = 541162922 Dinesh_Guleria_4-1715852864835.png Dinesh_Guleria_3-1715852777286.png フラッシュ ルーチン保存に必要な RAM サイズ (MAP/リンカー・ファイルより): ‑‑ 0x00407E64 ‑ 0x00407E38 = 44 バイト Dinesh_Guleria_2-1715852737622.png Dinesh_Guleria_5-1715852986217.png S32K3 フラッシュメモリ用語 :-- Dinesh_Guleria_0-1715853503848.png Dinesh_Guleria_2-1715853660788.png Dinesh_Guleria_3-1715853699814.png  
記事全体を表示
[过滤器:垃圾邮件] nismkiki 的帖子正文匹配 "फोनपे",板 "电源管理单元"。 [过滤器:垃圾邮件] nismkiki 的帖子正文匹配 " ",板 "电源管理单元"。 帖子主题:Re:如何退还错误的交易 职位机构: फनपे में गलतलनेदेन से पैसा वपास ग्राहक सेवा नंबर 076_995 95_414) कैसे पाएं अगर आपन फोन किसी गलत अकाउंट मे पैसे भेज दिए हैं या कोई गलत ट्रांजैक्शन हो गया है、तो निम्नलिखित तरीके अपनाएं फोनपे ऐप में शिकायत दर्ज फोनपे में गलती से की गई पमेंट को वापस कैसे पाएं? 正文"फोनपे" 匹配的过滤模式"फोनपे" 。 用户[id=258406,login=nismkiki]的发帖因以下最终用户面临的错误而被拒绝: 信息正文中包含फोनपे,这在本社区是不允许的。请在发送您的帖子前删除这些内容。
記事全体を表示
从恩智浦i.MX设备向云服务提供商传输安全的物联网数据 嗨,恩智浦社区 我正在开发一个基于恩智浦i.MX 平台的物联网边缘设备项目,我想了解如何架构从嵌入式硬件到云的高效数据管道的建议。 我们的想法是在i.MX应用处理器上捕获传感器遥测数据,在本地预处理数据,然后将其安全地转发给选定的云服务提供商进行存储、分析和仪表板。我一直在研究在恩智浦平台上运行的轻量级 MQTT 代理和安全 TLS 堆栈的各种选择,我很好奇其他人推荐了哪些方法来平衡本地处理和云延迟。 具体而言,我很想听听: • 推荐的连接堆栈 + i.MX 上的网络安全 • 在恩智浦设备上使用 MQTT/HTTP 架构的经验 • 其他人用来管理间歇性连接的策略 提前感谢! Re: Secure IoT Data Streaming from NXP i.MX Devices to Cloud Service Providers 您的目标是哪一代 i.MX/SoC(8M Plus、8MM、93、95)?对于电路板支持包,你使用的是哪个版本? i.MX 上推荐的连接堆栈 + 网络安全 • 在恩智浦设备上 使用 MQTT/HTTP 架构的体验(i.MX 运行本地代理(Mosquitto/EMQX)。设备发布到边缘主题;当广域网启动时,代理会桥接到云端,在未启动时进行缓冲。如果使用 linux 电路板支持包,支持它) • 其他人用来管理间歇性连接的策略
記事全体を表示
RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); How is IO multiplexing modified? Is this function setting the IO to be multiplexed? /*! * @brief Sets the IO_MUX pin mux mode. * @note The parameters can be filled with the pin function ID macros. * * This is an example to set the GPIO2/GPIO3 as the Flexcomm0 UART RX/TX: * @code * IO_MUX_SetPinMux(IO_MUX_FC0_USART_DATA); * @endcode * * This is an example to set the GPIO6/GPIO10 as Flexcomm1 I2C SDA/SCL: * @code * IO_MUX_SetPinMux(IO_MUX_FC1_I2C_6_10); * @endcode * * @Param pinLowMask The GPIO0- 31 pins mask. * @Param pinHighMask The GPIO32-63 pins mask. * @Param gpioFcSetMask The GPIO and Flexcomm registers mask to set, defined by IO_MUX_GPIO_FC_MASK() * @Param gpioFcClrMask The GPIO and Flexcomm registers mask to clear, defined by IO_MUX_GPIO_FC_MASK() * @Param fselSetMask The FSEL register mask to set * @Param fselClrMask The FSEL register mask to clear * @Param fselClrMask The FSEL register mask to clear * @Param ctimerSetMask The C_TIMER_IN/C_TIMER_OUT register mask to set, defined by IO_MUX_CTIMER_MASK() * @Param ctimerClrMask The C_TIMER_IN/C_TIMER_OUT register mask to set, defined by IO_MUX_CTIMER_MASK() IN/C_TIMER_OUT register mask to clear, defined by IO_MUX_CTIMER_MASK() * @Param sctimerSetMask The SC_TIMER register mask to set * @Param sctimerClrMask The SC_TIMER register mask to clear */ static inline void IO_MUX_SetPinMux(uint32_t pinLowMask, uint32_t pinHighMask, uint32_t gpioFcSetMask, uint32_t gpioFcClrMask, uint32_t fselSetMask, uint32_t fselClrMask, uint32_t ctimerSetMask, uint32_t ctimerClrMask, uint32_t sctimerSetMask, uint32_t sctimerClrMask) Is this macro generated by the configuration tool? It's full of numeric, masked macros, not readable! #define IO_MUX_FC3_USART_DATA \ 0x05000000U, 0x00000000U, /* Pin mask */ \ IO_MUX_GPIO_FC_MASK(0, 3, 0x200), IO_MUX_GPIO_FC_MASK(1, 3, 0x1EE), /* GPIO &FC mask */ \ 0x00000000U, 0xC0000000U, /* FSEL mask */ \ IO_MUX_CTIMER_MASK(0, 0), IO_MUX_CTIMER_MASK(0x40, 0x40), /* CTimer mask */ \ IO_MUX_ SCTIMER_MASK(0, 0), IO_MUX_SCTIMER_MASK(0x10, 0x10) /* SCTimer mask */ How can I change it to another Io Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? Thank you for your reply. 1. I'm going to pick another set of IOs and make a serial port (UART). 2. I am reading the SDK, refer to the code inside, the first time to meet the MCUXpresso style code, there are places do not quite understand, there is noMCUXpresso implementation of FlexComm to do the UART application documentation? There is no MCUXpresso implementation of FlexComm for UART application documentation? 3. My board is now unavailable for download _0-1766554912971.png _1-1766555131238.png _2-1766555144857.png I chose M33. _3-1766555188005.png _4-1766555202952.png _5-1766555238535.png Unable to download J-link is a paid product, I have products that don't support him very well, I don't like him very much, I want to use CMSIS-DAP _6-1766555583288.png But I haven't found a way to update the firmware I need to implement the download of the program urgently now, I hope I can get your help! Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? Hi, I would recommend you base your application in the SDK examples.  It is not a requirement to modify or configure the peripherals using Config Tools. You can modify the source code according your needs.  Are you using a module for the RW612? Could you please explain me what exactly you want to achieve? Regards, Daniel. Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? _0-1766589894233.png _1-1766589920354.pngI've managed to download it now. Re: RW612 IO_MUX_SetPinMux(IO_MUX_FC3_USART_DATA); IO复用如何修改? Hi, Can you please confirm you are using the FRDM-RW612? Please take a look at UM12160. To update the firmware of the on board debugger, you will need to short JP2. Follow the steps mentioned in section 3.5. Regards, Daniel.
記事全体を表示
SPL_MULTI_DTB_FIT を有効にした後のフラッシュエラー こんにちは、テクノロジーオタクの皆さん 私は imx93frdm ボードに取り組んできました。最近、SPL でマルチ dtb をサポートするために、SPL_MULTI_DTB_FIT を有効にしようとしています。これを有効にすると、uuu ツールでフラッシュするときに LIBUSB エラーが発生します。 根本的な原因は何なのか教えてください。 FRDMトレーニング Yocto Project Re: Flashing error after enabling SPL_MULTI_DTB_FIT こんにちは、 SFDC で続行します。 よろしくお願いします、 志明
記事全体を表示
CRC Evaluation using direct memory addressing Hello all. I'm working with S32K358 MCU, MBD Toolbox v1.6.0 and Matlab R2024a. I know that Crc module isn't supported by the toolbox, so I configured the .mex file of the project in order to generate the RTD configuration suitable for my application, including Crc module, and then I wrote a Matlab function in order to manually call, as custom code, the "Crc_SetChannelCalculate" function. This works fine and I can evaluate correctlty the CRC over a data streaming like an array. Now what I would like to do is to evaluate the CRC on an area of memory, using directly the memory address as data input. If I write the code "manually" using S32DS IDE (outside Matlab), the code looks like this: //--- code start uint32 CrcResult; uint8 *data; data = (uint8 *)0x40A1F0; //arbitrary address chosen for starting calculation CrcResult = Crc_SetChannelCalculate(CRC_LOGIC_CHANNEL_2, data, 16, 0, TRUE); //in this way I calculate the CRC of 16 byte, with starting value = 0, read directly in flash starting from address 0x40A1F0 //--- Of course, before this, I initialized the logic channel CRC_LOGIC_CHANNEL_2 with the properties suitable for my application. This code works fine but I'm not able to "translate" it on Matlab, because I didn't find a suitable way for make a direct memory addressing (and, if I'm not wrong, Matlab doesn't support this possibility). I would please ask you if someone has an idea on how to face this matter. Thansk in advance for your help and support. Daniel
記事全体を表示
Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Source Hi team, We are starting a new ISO 26262 (ASIL-B) project using the FS32K144HAT0MMHT MCU and want to understand how the Safety Peripheral Drivers (SPD) work. Where can we download the SPD package, and do we need a specific package name like SW32K1-SPD-D in the NXP Software License & Support portal? Is SPD free or included with standard RTD/SDK downloads, or does it require a separate license? Are there any example or free sources available to study SPD drivers for early development? Any guidance on locating SPD or related resources would be appreciated. Thank you! Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc Hi @KAVINKUMAR7, The S32K1 – Safety Peripheral Drivers (SPD) includes only the following driver: Extended MCEM Driver for S32K1, Version 1.0.1 https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K1-SPD-D&_gl=1*ao7djc*_ga*M.... The driver is included in the S32K1xx Standard Software package, which is available free of charge. It is compatible with the S32K1/S32M24x Real-Time Drivers, ASR R21-11, Version 2.0.0 P04. However, no functional example is provided for this driver. Regards, Daniel Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc Hi, This SPD supports production. Could you please confirm whether it is suitable for use in a production environment? Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc Hi @KAVINKUMAR7, Yes, it does. Please refer to the release notes. This version is at RTM (Ready to Manufacture) level. danielmartynek_0-1766921833541.png Regards, Daniel Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc Hi, Thank you for the response. I have installed the latest S32 Design Studio IDE and used the RTM (Ready to Manufacture) RTD SDK as mentioned in the release notes. The CAN sample project was generated directly using the provided SDK and configuration tools. However, even with this setup, I am still facing the following build error: fatal error: Port_Ci_Port_Ip_Types.h: No such file or directory Error occurs at:  board/Port_Ci_Port_Ip_Cfg.c:56 #include "Port_Ci_Port_Ip_Types.h" Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc Hi @KAVINKUMAR7, It appears that this is a compatibility issue. In the correct S32DS IDE version, only the compatible RTD and the SPD specified in the SPD release notes should be installed. No additional RTD versions should be present. If you require multiple RTD versions, we recommend installing separate IDE instances. Since your follow-up question is no longer related to the SPD, please create a new thread if you need further assistance. Regards, Daniel
記事全体を表示
NFCアンテナデザイン(材質) 国: ドイツ 説明: こんにちはNXPさん、 私の名前はマルクス・シュナイダーです。 NFC コントローラに関する専門知識を踏まえて、NFC アンテナの設計、特にこれらのアンテナに使用されている材料について質問があります。 ITO 層で作られた NFC アンテナをお勧めしますか、それともこれは最善の解決策ではないでしょうか? コントローラとしてはおそらくPN5180が使用されるでしょう。
記事全体を表示
需要扩音许可证的 S32DS 大家好,我发现以前项目中使用的 SPC5745 系列产品的 IDE 许可证已过期。最近,我需要在 S32DS 上开发和修改 PA 平台。能否提供一份新的使用许可证? Re: S32DS for PA lisence need 您好, 您的 S32DS 许可证已延期。
記事全体を表示