Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
FRDM-MCXA156:MCUXpresso IDE 中的 SWO 跟踪(数据、配置文件和中断)功能无法正常工作 大家好, 我目前正在使用FRDM-MCXA156开发板,在调试过程中遇到了SWO(串行线输出)问题。 虽然应用程序调试成功,但我无法在SWO 跟踪窗口中接收任何数据,包括: SWO 数据 SWO概况 SWO中断跟踪 SWO ITM 控制台 为了排查问题,我已经核实了以下内容: 使用配置工具已正确配置SWO 引脚。 TRACE 时钟已启用并配置为96 MHz ,与 MCU 内核时钟匹配(MCXA156 运行频率为 96 MHz)。 该项目正在使用LinkServer和板载MCU-Link探针进行调试。 尽管进行了这些配置,但在调试过程中所有 SWO 跟踪窗口仍然为空。 为了方便参考,我附上了SWO 跟踪配置、 SWO 数据、 SWO 配置文件和其他窗口的截图,以及相关的项目配置。 对于可能导致此问题的原因,或者在FRDM-MCXA156上启用 SWO 跟踪是否需要任何额外的配置步骤,我非常感谢您能提供任何指导或建议。 感谢您抽出时间提供帮助。 #swo #frdm-mcxa156 开发板 MCXA Re: FRDM-MCXA156: SWO Trace (Data, Profile & Interrupts) Not Working in MCUXpresso IDE 关于之前的帖子, 下面附上 SWO 启用配置和时钟的屏幕截图。 谢谢! Re: FRDM-MCXA156: SWO Trace (Data, Profile & Interrupts) Not Working in MCUXpresso IDE 你好@sidsal 对于 FRDM-MCXA156 板,将 SWO 信号连接到板载调试器的电阻 R36 默认情况下为 DNP(未安装)。请您填充 R36 并再次测试一下好吗? Alice_Yang_0-1786344510075.png 谢谢! BR 爱丽丝 Re: FRDM-MCXA156: SWO Trace (Data, Profile & Interrupts) Not Working in MCUXpresso IDE 感谢@Alice_Yang指出这一点。我检查了 FRDM-MCXA156 原理图,并确认将 P0_2/SWO 信号连接到板载 MCU-Link 调试器的 R36 标记为 DNP。 我还注意到,在 FRDM-MCXN947 上,等效的 SWO 连接 (R130) 装配了一个 0 Ω 电阻。请问FRDM-MCXA156上的R36是否也应该安装一个0Ω电阻,以便通过板载MCU-Link调试器进行SWO跟踪? 另外,能否请您解释一下为什么 FRDM-MCXA156 默认情况下 R36 未填充 (DNP)?是否有特殊的电路板设计原因或限制,要求该元件保持空置状态?所以我不能使用SWO功能吗? 感谢您的帮助。 Re: FRDM-MCXA156: SWO Trace (Data, Profile & Interrupts) Not Working in MCUXpresso IDE 你好@sidsal “请问FRDM-MCXA156上的R36是否也需要连接一个0Ω电阻,才能通过板载MCU-Link调试器进行SWO跟踪? ” 是的。如果要使用 SWO 功能,则需要安装一个 0 Ω 电阻或相应地焊接连接。 另外,能否请您解释一下,为什么FRDM-MCXA156芯片上的R36插槽默认是空的(DNP)?“ 我认为这是因为并非所有用户都需要 SWO 功能,所以默认情况下没有安装 0 Ω 电阻。 谢谢! BR 爱丽丝 Re: FRDM-MCXA156: SWO Trace (Data, Profile & Interrupts) Not Working in MCUXpresso IDE 感谢@Alice_Yang的支持。
查看全文
错误报告模块 MCU:S32K148,144引脚封装 RTD 版本:SW32K1_S32M24x_RTD_4.4_3.0.0_QLP03_D2507 S32 DS 版本:3.6.6 目标操作系统:裸机 主机操作系统:Windows 根据以上信息,我在驱动程序模块中找不到名为“ERM”(或任何类似名称)的模块。我查看了 MCAL 和非 MCAL 模块。 ERM 是否支持作为驱动模块,还是用户需要像以前基于“Processor Expert”的旧框架那样操作原始指针? Re: Error reporting module 非常感谢您提供的最新信息。 Re: Error reporting module 你好@durga_choudhury 是的,你的理解是正确的。它们作为单独的软件包提供,不包含在 RTD 中。 关于此次分居的原因,我目前正在进行内部审查。但是,值得注意的是,SAF 和 SPD 是根据 ISO 26262 功能安全标准开发的安全导向型软件组件。这使得它们能够集成到需要功能安全支持(最高可达 ASIL D)的应用程序中。 Re: Error reporting module 你好@VaneB 感谢您的跟进。所以你的意思是说,这些模块仅在 SPD 驱动程序中受支持,而不受免费提供的 RTD 支持。是这样吗? 是否有任何理由不能直接通过位操作模块的寄存器来使用这些模块?我尝试了“Processor Expert”驱动程序模型(使用 S32 DS v2.2)的示例,它似乎可以正常工作。 Re: Error reporting module 你好@durga_choudhury 对于 S32K1 设备,可以使用功能安全外设驱动程序 (SPD)。这些驱动程序包括扩展微控制器错误管理器 (eMCEM),它支持通过错误注入模块 (EIM) 和错误报告模块 (ERM) 硬件模块进行内存错误注入和检测。 有关 SPD 的更多信息,请联系您的 NXP 代表或您所在地区的授权代理商之一(代理商网络 | NXP 半导体)。 BR,VaneB
查看全文
S32K3 ADC 优化 DMA 流 你好, 当 ADC 组只有一个通道并且选中了“启用 DMA 流组”配置项时,执行 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 函数时会发生硬故障。 对于单个通道,如果选中“无中断 ADC 组”配置项,并且启用了“ACCESS_MODE_STREAMING,选择 ADC 流式 DMA 通道”,则可执行此操作。否则,配置文件中的 DMA 通道数为 255,这在这里是合理的。但我不太明白的是,为什么当 ADC_ENABLE_GROUP_STREAMING_RESULTS_RORDER 或 ADC_OPTIMIZE_DMA_STREAMING_GROUPS 为 STD_ON 时,而不是 STD_ON==GroupPtr ->AdcWithoutInterrupt 时,会调用 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 函数。这似乎不合理,而且调用此函数会导致硬故障。 Jason22_0-1785831767968.png BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason22 下次请不要使用QQ邮箱账号,请使用公司邮箱账号。 我测试过了,但没有发现任何问题。 我附上了我的测试项目和测试结果供你参考。 另外,我检查了你的代码,发现了一些错误。 1.时钟初始化错误,你的代码无法成功运行。 Senlent_0-1785915417329.png 2.“ adc_group0_val ”应归类为“不可缓存区域” 另外: 用户手册中对优化 DMA 流组的使用说明进行了详细说明。 RTD_ADC_UM.pdf Senlent_0-1785915908665.png Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason22 这是我的检测结果。如果您使用的是我提供的项目,并且优化级别设置为 -O0,那么我们的观察结果应该是一样的。 我觉得这里没什么问题。如果超出边界,肯定会进入硬故障,但测试结果并没有,这只能说明是编译优化级别的问题。没有必要在错误状态下继续分析。 Re: S32K3 ADC Optimize DMA Streaming 您好@Senlent 我不确定我的操作是否正确——我尝试用你的 ELF 文件进行调试,但没有成功。 1.png 请您按照我视频中演示的步骤操作一下好吗?我相信您能够重现这个问题。 步骤如下: 在该行设置断点 Mcl_Init(NULL_PTR); 。 运行程序直到它到达断点。 Mcl_Init(NULL_PTR); 。 禁用所有断点(点击“跳过所有断点”按钮)。 跨过 Mcl_Init(NULL_PTR);(单击“全部执行”按钮) 重新启用断点(单击“跳过所有断点”按钮),然后单击“恢复”按钮。 你会发现 Dma_Ip_ConvertLogicChToHwCh 再次输入,然后 逻辑 是 255。 BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 嗨@Senlent 很高兴你能看到 LogicCh 是 255。在你的项目中,它确实运行正常,但这属于越界访问,对吗?关于您所说的:“如果超出边界,就应该绝对进入硬故障”——我并不完全同意。C 语言不像 C++ 那样有运行时边界检查。对于指针数组,是否发生硬故障取决于越界访问所获得的值。 考虑一个指针数组:uint32* pArr[2] = {0x20400000, 0x20400004}。假设 pArr 的地址为 0x204300A0,则 pArr[2] 的值存储在地址 0x204300A8 处。如果 0x204300A8 包含 0x20400008,则 *pArr[2](越界访问,最终读取地址 0x20400008 处的值)不会导致硬故障。但是,如果 0x204300A8 包含 0x1FFFFFF0,则 *pArr[2](最终从 0x1FFFFFF0 读取)将导致硬故障。两者都是越界访问,但是否会发生硬故障取决于概率。 准确地说,硬故障并非由越界访问本身直接引起,而是因为对指针数组的越界访问得到了一个无效指针,而访问该无效指针触发了硬故障。 正因如此,在你的项目中,访问 Dma_Ip_pxInit->ppxLogicChannelConfigArray[255]->LogicChId.HwChId 不会导致硬故障,但在我的项目中却会导致硬故障。 BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason22 我会把设计团队的反馈意见发给你。 通常情况下,如果这是一个影响重大的漏洞,他们会在新版本中修复,并在发布说明中加以说明。 Re: S32K3 ADC Optimize DMA Streaming 嗨@Senlent 非常感谢您向设计团队报告这个问题。如果有最终结果,我应该在哪里查看?如果确实存在错误,是否会在类似于 SW32K3_S32M27x_RTD_R23-11_7.0.0_D2511_ReleaseNotes.pdf 的文档中公布? BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 您好@Senlent 是的,我直接使用了你的项目,没有做任何修改。在你的视频中, Dma_Ip_ConvertLogicChToHwCh 函数被间接调用 Mcl_Init ,这不是预期行为。预期行为是…… Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 间接呼叫 Dma_Ip_ConvertLogicChToHwCh 。我的视频演示了这一点:在运行期间 在 Mcl_Init 过程中,我跳过了所有断点,之后 Mcl_Init 完成后,我重新启用了断点。此时, Dma_Ip_ConvertLogicChToHwCh 再次输入, 逻辑 是255。 BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 您好@Senlent 非常感谢您的回复。我已经使用公司邮箱注册了一个新账号,本帖关闭后我将使用该账号。 我运行了你的项目,发现没有发生硬故障。但是,我的问题仍然存在。如下面的屏幕截图所示,该函数 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 配置 DMA_IP_CH_SET_MAJORLOOP_LOGIC_LINK_CH DMA通道的参数。当 Dma_Ip_ConvertLogicChToHwCh 被称为, 逻辑 值为 255。 Dma_Ip_pxInit->ppxLogicChannelConfigArray 指向 Dma_Ip_paxLogicChannelConfigArrayPB 数组,大小为 2。访问 Dma_Ip_pxInit->ppxLogicChannelConfigArray[255] 这应该是越界访问。虽然没有发生硬故障,但我认为这并不合理。 Jason07_0-1785979871220.png Jason07_1-1785979890128.png Jason07_2-1785979907208.png 这种越界访问是由调用引起的。 关于 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink ,这是我的另一个问题。我已经查看了相关内容。 RTD_ADC_UM.pdf 并且还检查了驱动程序代码。 优化DMA流组(单通道)时,数据直接从CDR传输到用户缓冲区,这与多通道情况下数据先从CDR移动到用户缓冲区的情况不同。 DmaIntermediateBuffer 然后从那里传输到用户缓冲区。 优化DMA流组(单通道) 不使用流式 DMA 通道。在配置文件中,以下值: AdcIpwConfigPtr->Mapping.AdcCountingDmaChanLogicId 数组确实存在 ADC_IPW_INVALID_DMA_CHANNEL_ID (255) Jason07_3-1785980010767.png 我不明白为什么 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 仍然需要调用。真正应该调用这个函数的是 无中断组(单通道) ,但当 ADC_ENABLE_GROUP_STREAMING_RESULTS_RORDER 或者 ADC_OPTIMIZE_DMA_STREAMING_GROUPS 是 STD_ON ,而不是 STD_ON == GroupPtr ->AdcWithoutInterrupt , Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 函数被调用。 Jason07_4-1785980037684.png 我找到了项目中的问题所在:当我取消选中“数据部分”时,硬故障就不再发生了。然而,我认为这并非问题的关键所在。 Jason07_5-1785980062079.png BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 您好@Senlent 最后一条回复里的图片不清晰。我已经以附件的形式再次上传了图片。我用数字给图片编号。 BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason07 @Jason22 请将优化构建选项设置为 -O0。 这是我在单步调试过程中观察到的结果。 Senlent_1-1786003373031.png 这可能是因为版本优化(-Os)阻止了调试器准确映射源代码变量。 Re: S32K3 ADC Optimize DMA Streaming 您好@Senlent 我的项目优化程度为 我运行了你的项目(也使用了 -O0参数),发现它在 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink -> ...... -> Dma_Ip_ConvertLogicChToHwCh , 逻辑 数值仍然是 255。 1.png 在你的截图中,是 Dma_Ip_ConvertLogicChToHwCh 因……而被称为 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink ? Mcl_Init 也叫 Dma_Ip_ConvertLogicChToHwCh ,在这种情况下 逻辑 为 0,这似乎与您的屏幕截图一致。 我在你的项目中运行了一个测试。 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 间接调用 Dma_Ip_ConvertLogicChToHwCh ,我观察到 &Dma_Ip_pxInit->ppxLogicChannelConfigArray[LogicCh] 是 0x429F28 ,与 &Dma_Ip_pxInit->ppxLogicChannelConfigArray[255] 。 2.png 然后我修改了地址处的值。 0x429F28 到 0x1FFFFFF0 ,并执行了第 348 行的代码。 3.png 发生了一次硬故障,并且 渔业和海事局 数值为 正如预期的那样,值为 0x1FFFFFF6。 4.png 这证实了越界访问确实存在。是否发生硬故障取决于该值。 Dma_Ip_pxInit->ppxLogicChannelConfigArray[255] . Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason22 这很奇怪,我已经尝试过好几次了。您可以直接调试我提供的 ELF 文件。 Re: S32K3 ADC Optimize DMA Streaming 嗨@Senlent 对不起。步骤4是点击“跨过”按钮。 BR, 杰森 Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason22 我可能还是没理解你的问题。我想请问一下这个项目运行是否符合预期?如果是这样,会有什么问题吗? 我看到 LogicCh 显示为 255,但程序运行正常。这样做有什么问题吗? Re: S32K3 ADC Optimize DMA Streaming 嗨@ Jason22 我可以将此问题转交给设计团队确认。 由于 RTD 驱动程序并非我设计,除非用户遇到问题,否则我不会深入探讨他们这样设计的原因。 反馈过程可能需要一些时间,但我会将调查结果转达给相关的设计团队。
查看全文
LX2162A USXGMII 链路始终无法建立连接。 大家好, 我有一个由Solidrun公司生产的LX2162A系统模块。我目前使用的是Clearfog开发套件,但很快会换成定制的载体。 Solidrun 提供基本的 RCW/DCP/DPL,我已经验证了其功能。就我而言,dpmac3 的 DPC 适用于 SFP 笼,我可以通过 SFP DAC 电缆和各种 SFP 模块获得 XFI 连接。 RCW“rcw_2000_650_2900_3_11_0_auto”设置为SerDes1=3,SerDes2=11,我使用的是QorIQ内核(lf-6.6.52-2.2.0)和mc-utils(10.39.0),但两者都应用了一些Solidrun补丁。Uboot和其他一些东西也被打上了补丁。所有补丁均来自此处: https://github.com/SolidRun/lx2160a_build/tree/develop-ls-6.6.52-2.2.0 我有一套 MaxLinear GPY245-EKV-1(和 -2)开发套件,需要通过 DAC 电缆使用 USXGMII 将 phy 连接到设备。这似乎很正常。最终,这款物理芯片将被集成到 SerDes2=7 的第 6 道和第 7 道中,但我必须使用 Clearfog 上的 SFP 插槽进行测试。 Clearfog SFP (mac3) <-> DAC CABLE <-> GPY245-EVK-2 SFP 我只是想配置 dpmac3 通过 DPC 使用这个 USXGMII 链路: mac@3 { link_type = "MAC_LINK_TYPE_PHY"; enet_if = "USXGMII"; }; (我也尝试过 MAC_LINK_TYPE_BACKPLANE) 已通过“restool dpmac info dpmac.3”确认显示“DPMAC 以太网接口:DPMAC_ETH_IF_USXGMII”。 在Linux系统中,我添加了MaxLinear驱动程序并修复了一些问题: gpy_update_interface() 修复(LKML,Daniel Golle)。这导致 USXGMII 接口返回 -EINVAL,使 phy_state_machine 崩溃。 已修复 pcs-lynx.c 中的 lynx_pcs_config_usxgmii() 函数。同时通过 mdiobus_c45_modify() 写入 MII_BMCR (BMCR_ANENABLE | BMCR_ANRESTART),因为该函数只写入了 MII_ADVERTISE,而从未在复制器块本身上启用 AN。这一问题与本论坛上的另一篇帖子(“LS1028A 10g-qxgmii phy 启动”)相吻合,该帖子也发现了相同的症状(MMD31.0/复制器)。控制寄存器卡在 0),手动设置第 12 位后,AN 开始工作。 这是 DPMAC3 Linux 设备树条目: &dpmac3 { managed = "in-band-status"; phy-mode = "usxgmii"; phy-handle = <&gpy245_p0>; phys = <&serdes_1 7>; status = "okay"; }; 其中 `gpy245_0` 是 MDIO 节点。MDIO 到物理层的流量正常。 我在 lynx_pcs 驱动程序中添加了一个打印输出,用于显示读取结果: mdio_bus 0x0000000008c0f000:00: USXGMII: wrote ADV=0xd601 BMCR=0x1a00 readback ADV=0x6b00 BMCR=0x0800 BMSR=0x0000 LPA=0x0000 问题: 鉴于对该 PCS 实例上的 MDIO_MMD_VEND2 寄存器的写入似乎不会持久,在 LX2162A 系列 SoC 上的 USXGMII 接受配置之前,是否需要已知的额外步骤(SerDes/PCS 块使能、协议特定的初始化或类似步骤)?协议 3 是否已针对 dpmac3 上的 USXGMII 进行了全面验证,还是主要针对 XFI 进行设计/测试? 其他问题: 也许我不了解 GPY245 和 USXGMII。我看到有些人称之为 QXGMII,但我不知道 LX2162A 是否能够实现这个功能。 或许我需要联系 Solidrun,但他们所有的补丁似乎都没有限制 LX2162A 的功能。 谢谢! Re: LX2162A USXGMII link never completes LX2162A 端的文档显示,它支持您所使用的路径上的 USXGMII ,但您所描述的症状看起来不像缺少 Linux pcs-lynx 写入,而更像是所选的 PCS 实例实际上仍未处于 USXGMII 应用程序模式,或者 MC 固件正在对错误的 10G PCS 选择器进行编程。 对于SerDes1 协议 3 ,LX2162A 参考手册将所有四个 SerDes1 通道列为 USXGMII / XFI,其中第一个通道为 USXGMII / XFI.3,这对应于您在 Clearfog SFP 路径上测试的 DPMAC3 用例。对于您未来的自定义载波目标, SerDes2 协议 7还将通道 6 和通道 7 记录为 USXGMII / XFI.13 和 USXGMII / XFI.14。 需要注意的是,USXGMII / XFI 条目不会自动显示为“USXGMII”。参考手册指出,在同一通道上,USXGMII 和 XFI 之间的默认值为 XFI。模式是通过协议配置寄存器 C (PCCC)选择,其 SXGMII*_XFI 位选择 0b = USXGMII 和 1b = XFI/SFI。因此,我首先要检查的不是 Linux BMCR 写入本身,而是DPMAC3 的特定 SXGMII 实例在 MC/DPC 初始化后是否清除了其 PCCC XFI 选择位。 MC 固件中出现此类故障并非 Linux PCS 驱动程序中的故障,此前也有过先例:一个 LX2162A 工单显示,MC 在 USXGMII 配置的 PCCC 中清除了错误的 10G 接口选择器,而 MC 固件工程版本 10.35.101 解决了该问题。另一张工单指出,MC 设置由 MC 固件完成,NXP 以二进制形式提供 MC。由于您使用的是 MC 10.39.0,因此您应该已经过了那个特定的旧修复程序,但您看到的故障模式仍然与“MC 没有将预期的 PCS 置于 USXGMII 模式”或“正在处理错误的 PCS 实例”一致。 接下来我会这样做: 在 Linux 进行任何更改之前,请阅读 PCCC。 在 RCW + MC + DPL/DPC 加载之后,但在 Linux PCS 驱动程序运行之前,读取 PCCC 并确认相关的 SXGMII*_XFI 位为 0。适用于 DPMAC3 / USXGMII/XFI.3预计会是第一个 SXGMII 选择器,而不是 MAC13/14 选择器。如果该位保持为 1,则该通道仍然是 XFI/SFI,并且您的 VEND2/USXGMII PCS 写入不会应用于活动的 USXGMII PCS 路径。 检查 MDIO 访问是否连接到预期的 PCS 管理端口。 SXGMII 协议控制寄存器有一个 MDEV_PORT 字段,用于匹配 MDIO 访问。手册中指出,软件在更改该字段后必须至少等待 3 个平台时钟周期,然后才能对 SGMII/PCS 目标进行 MDIO 访问。如果 MDIO 地址解码错误,写入操作可能会“无法持久”,因为您正在读取不同的或重置/默认的 PCS 窗口。 确认 USXGMII AN 寄存器只有在模式选择正确后才有意义。 USXGMII PCS CONTROL 寄存器的第 12 位具有 AUTO_NEGOTIATION_ENABLE,而 DEV_ABILITY / PARTNER_ABILITY 是 RW 寄存器。DEV_ABILITY 下供应商任意速度字段必须非零,因为零会导致自动协商失败。但如果 PCCC 仍然选择 XFI,那么这些 BMCR/能力写入并不是真正的根本问题。 除非 GPY245 板文档明确说明,否则不要将 QXGMII 视为单独的必需外部协议。 LX2162A 文档确实包含 QXGMII 协议变流器寄存器,包括 RESET/掉电控制位,例如 PD_QXGM 和 RST_QXGM。NXP 社区关于 LS1028A 的资料也提到了 10G_QXGMII Lynx SerDes 驱动程序路径。但是您选择的已记录的 LX2162A DPMAC 接口仍然是 USXGMII / XFI,NXP 文档单独指出 LX2160 类设备支持 USXGMII,“SXGMII”不是同一回事。换句话说:“QXGMII”在驱动程序/社区讨论中的引用可能描述的是内部转换器/驱动程序命名路径,不一定与您配置的USXGMII模式不同的MAC到PHY协议。 对于本次 Clearfog SFP 测试,请保持 DPC 简单。 MAC_LINK_TYPE_PHY with enet_if = "USXGMII"  是 MDIO 上管理外部 PHY 的更自然模型。除非您有意使用背板/KR 风格的流程,否则我不认为 MAC_LINK_TYPE_BACKPLANE 可以修复面向 PHY 的 USXGMII 设置。 我不会得出协议 3“主要仅限 XFI”的结论。参考手册将协议 3 记录为 DPMAC3 的 SerDes1 通道的 USXGMII / XFI。我无法从检索到的材料中证实的是,有单独的验证声明称“协议 3 + DPMAC3 + USXGMII 已通过 GPY245 验证”。更有力、有证据支持的说法是:硬件模式存在,默认为 XFI,除非 PCCC 选择 USXGMII,并且已知 MC 固件有先例对错误的 10G PCS 选择器进行编程。 针对您具体的回读: 写入 ADV=0xd601 BMCR=0x1a00 回读 ADV=0x6b00 BMCR=0x0800 BMSR=0x0000 LPA=0x0000 如果 PCS 实例未完全启用/选择用于 USXGMII,或者 MDIO 管理窗口未指向预期的 PCS 实例,则这正是我所期望的结果。在添加更多 Linux 端写入之前,我会先验证 PCCC 和 MC 日志。 LX2162A 协议 3 已记录在案,适用于 DPMAC3 上的 USXGMII / XFI,但 USXGMII 依赖于 MC/PCCC 选择 USXGMII PCS;如果 VEND2/BMCR 写入没有持久性,首先要证明 DPMAC3 的正确 PCCC 位已清除,并且 MDIO 正在寻址正确的 SXGMII PCS 实例。 Re: LX2162A USXGMII link never completes @yipingwang非常感谢您的详细解答! 你说的都很有道理,我已经开始更多地了解这个平台了。我已经开始使用 AN13329.pdf 中的建议。部分地址和功能似乎无法正常工作(可能是版本不匹配),但至少我可以获取如下所示的 MC 日志: => md 0x8340020 10 08340020: e0000006 00000021 00060000 00000000 ....!........... 08340030: 00000000 00000000 00000000 00000000 ................ 08340040: 00000000 00000000 00000000 00000000 ................ 08340050: 00000000 00000000 00000000 00000000 ................ => md 0x21e1000000 21e1000000: 4d430100 00000000 01400000 00300000 [email protected]. 21e1000010: 00000073 00000000 00000000 00000000 s............... 21e1000020: 00000000 00000000 00000000 00000000 ................ 21e1000030: 00000000 00000000 00000000 00000000 ................ => md 0x21e1400000 50 21e1400000: 202c575b 54414c50 4d524f46 5520205d [W, PLATFORM] U 21e1400010: 20545241 6e697270 61662074 64656c69 ART print failed 21e1400020: 6c61202c 6564206c 20677562 61746164 , all debug data 21e1400030: 6c697720 6562206c 69727020 6465746e will be printed 21e1400040: 206f7420 66667562 0a2e7265 6e6e7552 to buffer..Runn 21e1400050: 20676e69 6120434d 202c7070 74696177 ing MC app, wait 21e1400060: 20676e69 20726f66 6e657665 2e207374 ing for events . 21e1400070: 000a2e2e 00000000 00000000 00000000 ................ 21e1400080: 00000000 00000000 00000000 00000000 ................ 21e1400090: 00000000 00000000 00000000 00000000 ................ 21e14000a0: 00000000 00000000 00000000 00000000 ................ 21e14000b0: 00000000 00000000 00000000 00000000 ................ 21e14000c0: 00000000 00000000 00000000 00000000 ................ 21e14000d0: 00000000 00000000 00000000 00000000 ................ 21e14000e0: 00000000 00000000 00000000 00000000 ................ 21e14000f0: 00000000 00000000 00000000 00000000 ................ 21e1400100: 00000000 00000000 00000000 00000000 ................ 21e1400110: 00000000 00000000 00000000 00000000 ................ 21e1400120: 00000000 00000000 00000000 00000000 ................ 21e1400130: 00000000 00000000 00000000 00000000 ................ 我尝试通过 uboot 来操作 PCCC。以下是相关内容: crc32+ MC firmware version 10.39.0 fsl-mc: Booting Management Complex ... SUCCESS fsl-mc: Management Complex booted (version: 10.39.0, boot status: 0x1) Autoboot in 3 seconds => mmc read 0x80d00000 0x6800 0x800 => fsl_mc apply dpl 0x80d00000 fsl-mc: Deploying data path layout ... SUCCESS => md.l 0x1ea10b0 1 01ea10b0: 88889991 .... 我真心希望 0x1ea10b0 是正确的地址。根据 LX2162ARM.pdf 文件,那*可能*是正确的地址,解码后显示: A (lane 0) bit 31 1 = XFI/SFI B (lane 1) bit 27 1 = XFI/SFI C (lane 2) bit 23 1 = XFI/SFI D (lane 3) bit 19 1 = XFI/SFI 是否应该观察正确的寄存器地址(PCCC)?我还能提供其他信息吗? 谢谢! Re: LX2162A USXGMII link never completes 是的。为了 SerDes1 ,  0x1ea10b0  是正确的地址 PCCC : LX2162A CCSR 地图列表 SerDes 1 在  0x1EA_0000–0x1EA_FFFF  。 SerDes 内存映射列表 协议配置寄存器 C / PCCC 偏移量  0x10B0  。 所以: 0x1EA0000+0x10B0=0x1EA10B0 0 x 1 E A 0000 + 0 x 10 B 0 = 0 x 1 E A 10 B 0 所以你的 U-Boot 读取到: 复制 => md.l 0x1ea10b0 1 01ea10b0: 88889991   正在观察预期情况 SerDes1 PCCC 登记。 需要特别注意的是命名:我不会将这些领域描述为物理领域。 SerDes 通道 A/B/C/D 适用于您当前的配置。在 LX2162A SerDes1 协议表中,协议  3  地图 物理车道 H / 车道 0 到  USXGMII / XFI.3  然后,从 G 车道/1 车道到  .4  ,F车道/2车道至  .5  以及 E 车道/3 号车道  .6  。PCCC 字段名称,例如  SXGMIIA_XFI  ,  SXGMIIB_XFI  等是 PCS/协议控制字段,其命名约定不一定与物理通道字母相同。 您的价值  0x88889991  高位进位解码如下: 复制 PCCC = 0x88889991 位 31:28 = 0x8 -> SXGMIIA_XFI = 1,CFG = 000 位 27:24 = 0x8 -> SXGMIIB_XFI = 1,CFG = 000 位 23:20 = 0x8 -> SXGMIIC_XFI = 1,CFG = 000 位 19:16 = 0x8 -> SXGMIID_XFI = 1,CFG = 000 位 15:12 = 0x9 -> SXGMIIE_XFI = 1,CFG = 001 位 11:8 = 0x9 -> SXGMIIF_XFI = 1,CFG = 001   关键在于  _XFI  少量。RM定义  0  作为 USXGMII 模式 和  1  作为 XFI/SFI 模式 这些领域 。因此,您读到的值强烈表明,相关的 USXFI/SXGMII PCS 实例仍然被选中。 XFI/SFI 不是 USXGMII。 这与您的症状相符:Linux/restool 可能会报告  DPMAC_ETH_IF_USXGMII  但如果PCCC仍然拥有相关  _XFI  选择位  1  底层 SerDes/PCS 选择仍然有效地处于 XFI/SFI 模式。RM 还明确指出,要启用 10G-SXGMII,软件必须进行设置  PCCC[SGMIIa_XFI] = 0  。 你的MC日志提取看起来也正常。AN13329 指示阅读 MCFBAL/MCFBAH  0x8340020  构建 MC 固件基础,然后转储偏移量的日志缓冲区结构。  0x01000000  该结构体包含魔数、日志缓冲区偏移量和日志缓冲区长度 。你的  0x21e1000000  转储文件显示了预期结果  0x4d430100  魔法和指向日志偏移量的指针  0x01400000  这与你之后的转储文件相符。  0x21e1400000  。 接下来我要拍摄的内容: 每个阶段的PCCC快照 复制 md.l 0x1ea10b0 1 捕捉它: immediately after RESET / before MC 启动 if possible, MC启动后, DPC/DPL申请后, Linux启动后, 在 DPMAC 探测/配置之后。 相邻协议配置寄存器 复制 md.l 0x1ea10a0 1 # PCC8 md.l 0x1ea10a4 1 # PCC9 md.l 0x1ea10b0 1 # PCCC PCC8/PCC9 包含其他 SGMII 配置字段,而 PCCC 是 SXGMII/XFI 选择器寄存器。 。 确认尝试强制使用 USXGMII 时,哪个 PCCC 字段发生了变化。 如果可以安全地在 U-Boot 中进行实验,请尝试清除候选路径。  _XFI  截取一段并立即读出来。例如,如果 dpmac3 对应于第一个 SXGMII/USXFI 控制字段,则清除第 31 位将作为实验性检查: 复制 mw.l 0x1ea10b0 0x08889991 1 md.l 0x1ea10b0 1 如果它立即读取为  0x88889991  那么,要么写入操作被阻止/覆盖,要么该字段在当前阻塞状态下不可写。如果这种情况一直持续到 MC 或 Linux 运行,那么 MC/Linux 很可能正在恢复 XFI/SFI 模式。 完整的RCW SerDes解码 你已经拥有  SerDes1=3, SerDes2=11  这与 dpmac3 通道可用相符  USXGMII / XFI.3  在 SerDes1 协议 3 下 。不过,升级问题时,仍需提供完整的 RCW 字符串和原始 RCW 转储,因为 MC 固件通常会根据完整的协议集进行调整。 MC固件+DPC/DPL制品 因为你的MC是  10.39.0  , 包括: MC固件版本 DPC源, DPL来源, 精确的  dpmac@3  堵塞, restool dpmac info dpmac.3  , 每一步之后的PCCC值。 我目前对您数据的解读: 是的,  0x1ea10b0  是正确的 SerDes1 PCCC 地址,并且  0x88889991  看起来相关的 PCS 选择器仍然处于 XFI/SFI 模式。 这与 XFI 通过 SFP 插槽工作,而 USXGMII 不接受/保留预期的 PCS 配置的情况一致。
查看全文
旧ハードウェアと新ハードウェアのバージョン番号の違い _0-1785831056367.png 左側の旧バージョン(332)は使用できるのに、右側の新バージョン(B222)は使用できないのはなぜですか?332とB222の違いは何ですか? B222を正しく動作させるにはどうすればよいですか? Re: 新舊硬件版號差別 こんにちは、ダレンさん。 このことはアプリケーションチームと話し合いました。提供されたスクリーンショットから判断すると、GUIが新しいB222バージョンをサポートするために更新や再設計されていない可能性があり、これが古い332バージョンが正しく動作するのに対し、B222が動作しない理由を説明している可能性があります。 さらに調査のために、当社のアプリケーションエンジニアがチームと共に詳細を確認したいと考えています。彼が直接連絡し、分析を継続し、バージョン332とB222の違いやB222での正常動作を可能にするために必要な手順について話し合う予定だと聞いています。 BRs、トーマス
查看全文
RW612 WiFi InitがHAL_ImuLinkIsUp()で停止する 私はカスタムボード上でMQTTのサンプルを実行しようとしています。使用されているモジュールはublox IRIS-W106-30Bです。j-linkを使用してWiFiファームウェアブロブを個別にインストールする手順に従いました。しかし、WPL_Init() 関数内で無限ループに陥ってしまっています。 natered21_0-1785877418073.png 私も同様の問題でBLEを初期化できませんでした。 MCUXpressoを使用したSDK 25.09.00 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() SDK_2.x_RW610 mqtt のサンプルから、「main_task」以降のすべてを既存のプロジェクトにコピーしました。残る大きな違いは、ハードウェアの初期化部分です。サンプルコードのどの部分がIMUの初期化不良の原因となっているのか特定できません。 カスタムボード上でベースサンプルプロジェクトを動かすことはできますが、既存のプロジェクトにポートすることはできません。 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() RD-RW61X-BGA SDKを使っていますか?それともFRDM-RW612のSDKですか? 元の例をモジュールに移植するためにどのファイルを修正しましたか? Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() こんにちは、 簡単な「Hello World」の例をテストしていただけますか? また、モジュールを有効にするために必要な変更は既に適用済みですか?詳しい手順については、以下の記事をご参照ください。 よろしくお願いいたします。 ダニエル。 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() はい、通常のアプリケーションコードを実行したり、UARTにログを記録したりできます。 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() 私の理解が正しければ、カスタムボード上でWi-FiとBluetoothのサンプルを問題なく実行できるということですね。問題は、ネットワーク機能を自分のアプリケーションに統合または移植し始めたときに発生します。 私のおすすめは、MQTTの例をアプリケーションの基盤として使うことです。もしWi-FiとBT/BLEを同時に動作させる必要がある場合は、既存のカスタムアプリケーションに共存サポートを追加するよりも、共存例の一つから始めて、その上にアプリケーション固有の機能を追加する方が良いでしょう。 ちなみに、SDK 25.09はすでに3つのリリースから遅れています。続ける前に最新のSDK 26.06にアップグレードすることをお勧めします。
查看全文
Differences between old and new hardware version numbers _0-1785831056367.png Why can the older version (332) on the left be used, while the newer version (B222) on the right cannot? What is the difference between 332 and B222? How can I make B222 work properly? Re: 新舊硬件版號差別 Hi Darren, I discussed this with our applications team. Based on the screenshots provided, it appears that the GUI may not have been updated or reworked to support the newer B222 version, which could explain why the older 332 version operates correctly while B222 does not. To investigate this further, our applications engineer would like to review the details together with your team. I have been informed that he will contact you directly to continue the analysis and discuss the differences between versions 332 and B222, as well as the steps required to enable normal operation with B222. BRs, Tomas
查看全文
RW612 WiFi 初始化卡在 HAL_ImuLinkIsUp() 处 我正在尝试在自定义板上运行 MQTT 示例。所用模块为 ublox IRIS-W106-30B。我按照说明使用 j-link 单独安装了 wifi 固件 blob。但是,我在 WPL_Init() 函数中陷入了无限循环。 natered21_0-1785877418073.png 由于类似问题,我也无法初始化BLE。 SDK 25.09.00 使用 MCUXpresso Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() 您使用的是 RD-RW61X-BGA SDK 还是 FRDM-RW612 SDK? 为了将原始示例移植到您的模块中,您修改了哪些文件? Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() 如果我理解正确的话,您可以在您的定制板上运行 Wi-Fi 和蓝牙示例程序,没有任何问题。当您开始将网络功能集成或移植到自己的应用程序中时,问题就出现了。 我的建议是以 MQTT 示例为基础来开发你的应用程序。如果您的使用场景需要 Wi-Fi 和 BT/BLE 同时运行,那么最好从共存示例之一入手,并在其基础上添加您特定应用的功能,而不是之后尝试向现有的自定义应用程序添加共存支持。 顺便一提,SDK 25.09 已经落后三个版本了。我建议您在继续操作之前升级到最新的 SDK 26.06。 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() SDK_2.x_RW610 我从 mqtt 示例中复制了“main_task”及其之后的所有内容到我现有的项目中。这就留下了硬件初始化方面的主要区别。我无法确定示例中的哪些方面导致IMU无法初始化。 我可以在我的定制板上运行基础示例项目,但无法将其移植到现有项目中。 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() 是的,我能够运行正常的应用程序代码,也能将日志记录到UART等等。 Re: RW612 WiFi Init stuck on HAL_ImuLinkIsUp() 您好, 您能否测试一下简单的“Hello World”示例? 另外,您是否已经进行了必要的修改以启用您的模块?请参考以下文章获取指导。 问候, 丹尼尔。
查看全文
エラー報告モジュール MCU:S32K148 144ピンパッケージ RTDバージョン:SW32K1_S32M24x_RTD_4.4_3.0.0_QLP03_D2507 S32 DS バージョン: 3.6.6 対象OS: ベアメタル ホストOS: Windows 上記の方法では、ドライバーモジュールに「ERM」というモジュール(またはそれに類するもの)が見つかりません。私はMCALモジュールと非MCALモジュールの両方を調べました。 ERMはドライバモジュールとしてサポートされているのか、それともかつての「プロセッサ Expert」ベースのフレームワークのようにユーザーが生のポインタを操作すべきなのか? Re: Error reporting module こんにちは、 @durga_choudhuryさん はい、あなたの理解は正しいです。これらは別のソフトウェアパッケージとして提供されており、RTDの一部には含まれていません。 今回の離職理由につきましては、現在社内で検討中です。しかし、SAFとSPDはISO 26262機能安全基準に準拠した安全志向のソフトウェアコンポーネントとして開発されたことに注意が必要です。これにより、ASIL Dまでの機能安全サポートを必要とするアプリケーションへの統合が可能となります。 Re: Error reporting module 最新情報をお知らせいただき、誠にありがとうございます。 Re: Error reporting module こんにちは、 @durga_choudhuryさん S32K1デバイスには、セーフティ ペリフェラル ドライバ(SPD)が利用可能です。これらのドライバには、エラー注入モジュール(EIM)およびエラー報告モジュール(ERM)を通じたメモリエラー注入と検出をサポートする拡張マイクロコントローラエラーマネージャ(eMCEM)が含まれます。 SPDに関する詳細は、NXPの担当者またはお住まいの地域の認可代理店(代理店ネットワーク | NXP Semiconductors)にお問い合わせください。 BR、VaneB Re: Error reporting module こんにちは、 @VaneBさん フォローアップありがとうございます。つまり、これらのモジュールはSPDドライバのみでサポートされていて、無料で入手できるRTDには対応していないということですね。それで合っていますか? なぜ誰かがモジュールのレジスタをビットバンするだけでこれらのモジュールを使えないのでしょうか?『プロセッサ Expert』ドライバモデル(S32 DS v2.2使用)の例を試してみたところ、動作しているように思えました。
查看全文
KITFS24SKTFDMEVMとNXP GUIを使用してFS2400と通信できません 件名: KITFS24SKTFDMEVMとNXP GUIを使用してFS2400と通信できない こんにちは、 私はKITFS24SKTFDMEVM評価ボードを使ってFS2400のOTPを設定しプログラムしようとしています。 評価ボード: https://www.nxp.com/design/design-center/development-boards-and-designs/KITFS24SKTFDMEVM しかし、ボードをNXP GUIに接続しても、デバイスとの通信を確立できません。GUIには下記のエラーが表示され、通信は行われません。 以前は FS26 評価ボードで同じNXPのGUIを使って問題なく使っていたので、PCのセットアップとGUIのインストールは正常に動作していると思います。 評価ボードはデフォルトの設定で、ジャンパーやスイッチの設定は意図的に変更していません。確認のため、現在の構成は以下のとおりです。 S12 (OTP):オフ J30: ピン1-2接続 SW4 (WAKE2):オン S19 (WAKE3):オン J33:オープン J37: ピン2-3コネクテッド J36: ピン2-3コネクテッド J10: ピン2-3コネクテッド SW9: 全てのスイッチオン J45: ピン2-3コネクテッド J26: ピン5-6および9-10が接続 SW20: すべてのスイッチはオフです シーズン2: ON(回路図でこのスイッチを見つけられませんでした) SW18: 全てのスイッチオン SW1(メイン電源スイッチ): 3位(2-3位) 評価ボードの S32K144 MCUはプログラムしていません 。私の理解では、基板には必要なファームウェアが既にプログラムされた状態で出荷されるはずです。これが正しいのか、それともGUIがFS2400と通信する前にMCUをフラッシュする必要があるのか、誰か確認してもらえますか? 以下はGUIに表示されたエラーメッセージです。 どんなご支援でも大変感謝いたします。 よろしくお願いします。 FS85&FS84 FSBC+PMIC Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI こんにちは、 お問い合わせいただきありがとうございます。 UM12015 KITFS24SKTFDMEVMユーザーマニュアルの第5節「ソフトウェアとツールのインストールと設定」に従ってファームウェアを更新していただけますか?この手順で、発生しているエラーは解決するはずです。 アップデートを完了しても問題が続く場合は、ハードウェアの構成画像を教えていただけますか?これにより、設定を確認し、問題をさらに調査するのに役立ちます。 よろしくお願いします! Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI こんにちは、 @ErikaC さん。 ご返信ありがとうございます。 UM12015 KITFS24SKTFDMEVMユーザーマニュアルの第5節 「ソフトウェアとツールのインストールと設定 」を確認しました。しかし、ドキュメントに記載されているKITFS2400FRDMEVM_HW_Test_Package_W20.zipファイルが見つかりません。 この.zipをダウンロードできる場所を教えていただけますかファイル?マニュアルに記載されているとおり、ファームウェアをアップデートするために必要です。 NXPのGUIでfs23xx-fw-FS24-v0.86.hexを見つけることができました。これはアップデートに使用するファームウェアファイルですか、それともKITFS2400FRDMEVM_HW_Test_Package_W20.zipに含まれている別のファイルですか? マニュアルに記載されているリンクも確認しました: https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=S32DS-IDE-ARM-V2-Xそこから実行ファイルをダウンロードしてインストールしました(これはDesign Studioで、メインのS31244_Flashファイルではありません)が、必要な.zipが見つかりませんでしたパッケージ. KITFS2400FRDMEVM_HW_Test_Package_W20.zipのダウンロード場所を教えていただけるか、アップデートに必要な正しいファームウェアパッケージの入手先を教えていただけますか? ご協力ありがとうございます。 ガネーシュ・バグワット Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI こんにちは、 KITFS2400FRDMEVM_HW_Test_Package_W20.zipフォルダは見つかりませんでした。おそらくNXPGUIの以前のバージョンに含まれていた機能でしょう。しかし、そのパッケージにはfs23xx-fw-FS24-v0.86.hexファイルのみが含まれており、ファームウェアをプログラムするために必要な唯一のファイルです。 ErikaC_1-1786381048598.png UM12014 KITFS2400FRDMEVMユーザーマニュアルに記載されているすべての手順に従ってください。図17に示されているようにデバッガの使用が必要であり、S32 Design Studioツールもインストールする必要があります。 ファームウェアアップデート手順は、必要なデバッガ接続とユーザーマニュアルに記載されたソフトウェア環境がなければ成功裏に完了できません。 お役に立てば幸いです! Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI こんにちは、 @ErikaC さん。 fs23xx-fw-FS24-v0.86.hexが正しいファームウェアファイルである場合、この.hexファイルを直接ロード/フラッシュするために必要な特別な手順はありますか?KITFS24SKTFDMEVM にファイルを転送すればよいのでしょうか、それとも特定のツールや設定が必要なのでしょうか? 可能であれば、 KITFS2400FRDMEVM_HW_Test_Package_W20.zip パッケージやダウンロード先を教えていただけると、マニュアルに記載されたファームウェアアップデート手順をずっと簡単に進めます。 助けてくれてありがとう。 ガネーシュ・バグワット Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI こんにちは、 @ErikaC さん。 ありがとうございます。うまくいきました。NXP-GUIと通信できるようになりました。 唯一の問題は、これら2つの設定がデフォルトでは存在していなかったことだった。ご指摘のとおり、それらを追加した後はすべて正常に動作しました。 実行可能ファイルの下に追加されたコマンドは次のとおりです。 ${cross_prefix}gdb${cross_suffix} 改めてサポートありがとうございます。 よろしくお願いいたします。 ガネーシュ・バグワット
查看全文
关于“MPC5777C-1b+2b_RAM_ECC_error_injection GHS614”示例代码 你好。我目前正在基于MPC5777C MCU进行开发。 我有一个关于开发过程的问题。 我根据“MPC5777C-1b+2b_RAM_ECC_error_injection GHS614”示例代码设计了执行 ECC 检查的代码。 正常情况下,这段代码能够正确执行 ECC 检查。 但是,当使用 Trace32 等调试器连接到 MCU 并运行 ECC 检查代码时,经常会出现无法检测到位错误的错误。 “GHS614”示例代码整体上连接到 Trace32 等调试器时是否可能无法正常工作? 谢谢! Re: Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code 您好。 假设 Trace32 调试器已连接,转储窗口已打开,并且我的自定义应用程序代码正在运行,是否有可能出现这种情况:在参考 GHS614 设计的 ECC 检查函数中未检测到位错误? Re: Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code 你好, 我不确定你的设置,但要注意,Trace中任何打开的转储窗口都会持续读取内存,一旦检测到ECC故障会立即触发。 ECC错误永远不会发生在未损坏的地址上。ECC机制也受到EDC的保护。这根本不可能。 顺祝商祺! Peter Re: Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code 你好, 如果软件或调试器读取的地址损坏,则 ECC 始终会发出错误信号,而与示例软件或任何其他因素无关。 顺祝商祺! Peter Re: Regarding the "MPC5777C-1b+2b_RAM_ECC_error_injection GHS614" example code 您好。 我将更详细地解释一下情况。 我的ECC校验码执行如下: (void)FCCU_ClearNCF(); /* 1 位 RAM 数据错误注入 */ GenerateRam1bitEccError(); uiErmSR0 = ERM.SR0.R; uiErmSR1 = ERM.SR1.R; uiErmSR2 = ERM.SR2.R; /// 4. 如果发生 RAM 1 位 ECC 错误,请执行以下操作。 如果((((uiErmSR0 & ERM_SR0_1b_all) == ERM_SR0_1b_PRAMC_1) || ((uiErmSR2 & ERM_SR2_1b_all) == ERM_SR2_1b_Core1_data)) && ((uiErmSR1) == CLEAR)) { /// 4.1.如果 ERM EAR 寄存器中存储的值与发生错误的地址相同,则执行以下操作。 if((UINT32)auiTest == (ERM.ERROR[ERM_chnl_PRAMC_1].EAR.R)) { ucStatus = OK; } /// 4.2.如果 ERM EAR 寄存器中存储的值与发生错误的地址不同,请执行以下操作。 否则如果((UINT32)auiTest == (ERM.ERROR[ERM_chnl_Core1_data].EAR.R)) { ucStatus = OK; } else { ucStatus = NOT_OK }; } /// 5.如果没有发生 RAM 1 位 ECC 错误,请执行以下操作。 else { ucStatus = NOT_OK }; 该结构强制注入 1 位 RAM 数据错误,并检查 ECC 错误是否成功发生以及是否准确检测到发生地址。 如果在运行上述代码时启用 Trace32 内存转储窗口,ECC 检查的结果是否会异常执行?(即未能检测到 ECC 错误或 ECC 发生地址处的错误) 谢谢!
查看全文
S32K3 ADCのDMAストリーミング最適化 こんにちは、 ADCグループが1つのチャネルしか持たず、AdcのEnable Optimized DMA Streaming Groupsの設定項目がチェックされている場合、Adc_Ipw_SetupTcdSingleAdcChannelMajorLink関数の実行時にハードフォルトが発生します。 単一チャネルの場合、Adc Group Without Interruptsの設定項目がチェックされACCESS_MODE_STREAMINGされた場合、「Select Adc Streaming DMAチャネル」が有効になります。それ以外の場合は、設定ファイルのDMAチャネル数は255で、これは妥当な数値です。しかし、私が理解できないのは、ADC_ENABLE_GROUP_STREAMING_RESULTS_RORDER または ADC_OPTIMIZE_DMA_STREAMING_GROUPS が STD_ON の場合、STD_ON==GroupPtr ->AdcWithoutInterrupt の代わりに Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 関数が呼び出される理由です。これは不合理に思えるし、この関数を呼び出すとハードフォルトが発生するからでもある。 Jason22_0-1785831767968.png BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason22 次回はQQのメールアカウントを使用しないでください。代わりに会社のメールアドレスをご利用ください。 試してみましたが、問題は見つかりませんでした。 参考までに、テストプロジェクトとテスト結果を添付しました。 また、あなたのコードを確認したところ、いくつかエラーが見つかりました。 1.clock initが間違っている、コードが正常に動作しないはずがない。 Senlent_0-1785915417329.png 2. adc_group0_valは「キャッシュ不可領域」の属性であるべきです また: DMAストリーミンググループの最適化の使い方はユーザーマニュアルに明確に説明されています。 RTD_ADC_UM.pdf Senlent_0-1785915908665.png Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason22 これが私のテスト結果です。私が提供したプロジェクトを使用し、最適化レベルを-O0に設定している場合、私たちの観察結果は同じになるはずです。 私はここに何の問題もないと思います。境界を超えた場合は確実にハードフォルトに入るはずですが、テスト結果はそうでなく、これはコンパイル最適化レベルが原因であることを意味しています。エラー状態下では、分析を続ける必要はありません。 Re: S32K3 ADC Optimize DMA Streaming Hi@Senlent この問題を設計チームに報告してくださり、誠にありがとうございます。最終結果がある場合、どこで確認すればよいですか?もし実際にエラーが発生した場合、SW32K3_S32M27x_RTD_R23-11_7.0.0_D2511_ReleaseNotes.pdf のような文書で公開されるのでしょうか? BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason22 デザインチームのフィードバックをお送りします。 通常、重大な影響を及ぼすバグの場合は、新しいバージョンで修正版をリリースし、リリースノートに記載します。 Re: S32K3 ADC Optimize DMA Streaming Hi@Senlent LogicChが255だとわかってよかったです。あなたのプロジェクトでは正しく動作しますが、これはアクセス範囲外ですよね?「境界を超えた場合は、必ずハード断層に入るはずだ」というあなたの発言についてですが、私は完全には同意できません。C言語では、C++のようなランタイム境界チェックはありません。ポインタ配列の場合、ハードフォルトが発生するかどうかは、境界外アクセスから得られる値に依存します。 ポインタ配列を考えてみましょう: uint32* pArr[2] = {0x20400000, 0x20400004}。pArr のアドレスが 0x204300A0 であると仮定すると、pArr[2] の値はアドレス 0x204300A8 に格納されている値になります。0x204300A8が0x20400008を含む場合、*pArr[2](アドレス0x20400008の値を最終的に読み取る境界外アクセス)はハードフォルトを発生させません。ただし、0x204300A8 に 0x1FFFFFF0 が含まれている場合、*pArr[2] (最終的に 0x1FFFFFF0 から読み取る) はハードフォルトを引き起こします。どちらも境界外アクセスですが、ハードフォルトが発生するかどうかは確率のマターです。 正確には、ハードフォルトは境界外アクセス自体が直接原因ではなく、境界外のポインタ配列へのアクセスが無効なポインタを受け取り、その不正なポインタにアクセスするとハードフォルトがトリガーされるためです。 だからこそ、あなたのプロジェクトではDma_Ip_pxInit->ppxLogicChannelConfigArray[255]->LogicChId.HwChIdにアクセスするとハードフォルトは発生しませんが、私のプロジェクトではハードフォルトが発生します。 BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは@Senlent はい、あなたのプロジェクトを一切変更せずに使用しました。あなたのビデオでは、 Dma_Ip_ConvertLogicChToHwCh 関数は間接的に呼び出されます Mcl_Initは意図された動作ではありません。意図された動作は Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 間接的に呼びかける Dma_Ip_ConvertLogicChToHwCh 。私のビデオではこれを実証しています。 Mcl_Init で、すべてのブレークポイントをスキップし、その後 Mcl_Init 完了したので、ブレークポイントを再度有効にしました。その時点で、 Dma_Ip_ConvertLogicChToHwCh 再び入力され、 ロジックCh 255でした。 BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは@Senlent ご返信いただき、誠にありがとうございます。会社のメールアドレスを使って新しいアカウントを登録し、このスレッドが終了した後はそのアカウントを使う予定です。 あなたのプロジェクトを実行しましたが、ハードフォルトは発生していませんでした。しかし、私の疑問は依然として残ります。以下のスクリーンショットに示すように、function Adc_Ipw_SetupTcdSingleAdcChannelMajorLink は DMAチャネルの DMA_IP_CH_SET_MAJORLOOP_LOGIC_LINK_CH パラメータを設定します。 Dma_Ip_ConvertLogicChToHwCh が呼ばれると、 LogicCh 値は255.Dma_Ip_pxInit->ppxLogicChannelConfigArray はサイズ2の Dma_Ip_paxLogicChannelConfigArrayPB array を指しています 。アクセス Dma_Ip_pxInit->ppxLogicChannelConfigArray[255] は境界 外アクセスであるはずです。ハードフォルトは発生しませんでしたが、これは合理的ではないと思います。 Jason07_0-1785979871220.png Jason07_1-1785979890128.png Jason07_2-1785979907208.png この境界外アクセスは通話によって引き起こされます Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 、それもまた私の疑問です。関連する内容は RTD_ADC_UM.pdf で確認 し、ドライバーコードも確認しました。 最適化DMAストリーミンググループ(単一チャネル)では 、データはCDRから直接ユーザーバッファへ転送されます。マルチチャネルの場合とは異なり、まずCDRから DmaIntermediateBuffer へデータが移動され 、そこからユーザーバッファへ移動されますOptimize DMA Streaming グループ(単一チャネル) ストリーミングDMAチャネルは使用していません。設定ファイル内の AdcIpwConfigPtr->Mapping.AdcCountingDmaChanLogicId arrayの値は確かに ADC_IPW_INVALID_DMA_CHANNEL_ID (255)です。 Jason07_3-1785980010767.png なぜそうなのか理解できません Adc_Ipw_SetupTcdSingleAdcChannelMajorLink まだ電話をかけてないと。本来呼び出すべき関数は Without Interrupt グループ (single チャネル)ですが、wh ADC_ENABLE_GROUP_STREAMING_RESULTS_RORDER or ADC_OPTIMIZE_DMA_STREAMING_グループ is STD_ON、代わりに STD_ON == GroupPtr ->AdcWithoutInterrupt, the Adc_Ipw_SetupTcdSingleAdcChannelMajorLink functionが呼ばれます。 Jason07_4-1785980037684.png プロジェクトで問題を発見しました。「データセクション」のチェックを外すと、ハードフォルトが発生しなくなります。しかし、私はこれが問題の本質的なポイントだとは思いません。 Jason07_5-1785980062079.png BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは@Senlent 前回の返信の画像は鮮明ではありません。画像を添付ファイルとして再度アップロードしました。写真の順番を番号で示しました。 BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason07 @Jason22 最適化ビルドオプションを -O0 に設定してください。 これは、ステップ実行デバッグ中に私が確認した結果です。 Senlent_1-1786003373031.png これはおそらく、ビルド最適化オプション(-Os)によってデバッガーがソースコード変数を正確にマッピングできなくなるためでしょう。 Re: S32K3 ADC Optimize DMA Streaming こんにちは@Senlent 私のプロジェクトの最適化レベルは -O0で、あなたのプロジェクトを実行しました (これも -O0 で)。 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink -> ...... -> Dma_Ip_ConvertLogicChToHwCh 、 ロジックCh 値は依然として255です。 1.png あなたのスクリーンショットでは、 Dma_Ip_ConvertLogicChToHwCh 結果として呼ばれる Adc_Ipw_SetupTcdSingleAdcChannelMajorLink ? Mcl_Init また Dma_Ip_ConvertLogicChToHwChも呼びますが、その場合 LogicCh 0で、あなたのスクリーンショットと一致しているように思えます。 あなたのプロジェクトでテストを実行しました。 Adc_Ipw_SetupTcdSingleAdcChannelMajorLink 間接的に呼び出す Dma_Ip_ConvertLogicChToHwCh で、私は次のことを確認しました。 &Dma_Ip_pxInit->ppxLogicChannelConfigArray[LogicCh] は 0x429F28に一致します &Dma_Ip_pxInit->ppxLogicChannelConfigArray[255] 。 2.png その後、アドレスの値を変更しました。 0x429F28 に 0x1FFFFFF0にアクセスし、348 行目のコードを実行しました。 3.png ハードフォールトが発生し、 BFAR 価値は 0x1FFFFFF6 、予想通りです。 4.png これにより、アウトオブバウンズアクセスが実際に存在することが確認されています。ハードフォルトが発生するかどうかは、 Dma_Ip_pxInit->ppxLogicChannelConfigArray[255]の値に依存します。 Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason22 これはおかしい。何度も試してみたのに。私が提供したELFファイルは直接デバッグできます。 Re: S32K3 ADC Optimize DMA Streaming こんにちは@Senlent 私の操作が正しかったかどうか確信が持てません。あなたのELFファイルを使ってデバッグを試みましたが、うまくいきませんでした。 1.png 私の動画で示した手順を同じように行ってもらえますか?この問題の再現が可能だと思います。 手順は以下の通りです。 行にブレークポイントを設定します Mcl_Init(NULL_PTR); 。 ブレークポイントに到達するまでプログラムを実行します。 Mcl_Init(NULL_PTR); 。 すべてのブレークポイントを無効にする( 「すべてのブレークポイントをスキップ」ボタンをクリック)。 跨いで Mcl_Init(NULL_PTR);( 「すべてステップ」ボタンをクリックします) ブレークポイントを再度有効にし( 「すべてのブレークポイントをスキップ」ボタンをクリック)、そして「再開」ボタンをクリックします。 あなたはそれを見ます Dma_Ip_ConvertLogicChToHwCh 再び入力され、 ロジックCh 255です。 BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは、@Senlent ごめん。ステップ4は、「ステップオーバー」ボタンをクリックすることです。 BR、 ジェイソン Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason22 もしかしたら、あなたの質問の意味がまだよく理解できていないかもしれません。このプロジェクトは想定通りに動作しているでしょうか?そうだとすれば、何か問題がありますか? LogicChでは255と表示されていますが、プログラムは通常通り動作しています。これのどこがおかしいのでしょうか? Re: S32K3 ADC Optimize DMA Streaming こんにちは、@ Jason22 この問題は設計チームに確認してもらえます。 RTDドライバーの設計者は私ではないので、ユーザーが問題に直面しない限り、なぜこう設計したのかは詳しくは触れません。 このフィードバックプロセスは長くなるかもしれませんが、その成果を関連するデザインチームに伝えます。
查看全文
使用 KITFS24SKTFDMEVM 和 NXP GUI 无法与 FS2400 通信 主题:使用 KITFS24SKTFDMEVM 和 NXP GUI 无法与 FS2400 通信 您好, 我正在尝试使用KITFS24SKTFDMEVM评估板在FS2400上配置和编程 OTP。 评估板: https://www.nxp.com/design/design-center/development-boards-and-designs/KITFS24SKTFDMEVM 但是,当我将电路板连接到NXP GUI时,我无法与该设备建立通信。图形用户界面报告如下错误,并且无法进行通信。 我之前在FS26评估板上使用过相同的 NXP GUI,没有任何问题,所以我相信我的 PC 设置和 GUI 安装都是正确的。 评估板处于默认配置状态,我没有故意更改任何跳线或开关设置。为验证这一点,当前配置如下: S12(OTP):关闭 J30:引脚 1-2 连接 SW4(WAKE2):开启 S19(WAKE3):开启 J33:开放 J37:引脚 2-3 连接 J36:引脚 2-3 连接 J10:引脚 2-3 连接 SW9:所有开关打开 J45:引脚 2-3 已连接 J26:引脚 5-6 和 9-10 连接 SW20:所有开关关闭 S2:开启(我在电路图中找不到这个开关) SW18:所有开关打开 SW1(主电源开关):位置 3(2-3) 我没有对评估板上的 S32K144 MCU 进行编程。据我了解,电路板出厂时已经预装了所需的固件。请问有人能确认一下这个说法是否正确吗?或者说,在 GUI 能够与 FS2400 通信之前,是否需要先对 MCU 进行刷写? 以下是图形用户界面显示的错误信息: 若能得到任何帮助,我将不胜感激。 谢谢! FS85&FS84 FSBC+PMIC Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI 你好, 感谢您与我们联系。 请按照 UM12015 KITFS24SKTFDMEVM 用户手册第 5 节“安装和配置软件和工具”中的说明更新固件。此方法应该可以解决您遇到的错误。 如果更新完成后问题仍然存在,请您提供一张硬件配置的图片?这将有助于我们检查配置并进一步调查问题。 谢谢您! Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI 嗨@ErikaC 如果fs23xx-fw-FS24-v0.86.hex是正确的固件文件,那么直接加载/刷写此 .hex 文件是否需要任何特定步骤?文件是保存到 KITFS24SKTFDMEVM 目录,还是需要使用特定的工具/设置? 如果可以的话,非常感谢您能提供KITFS2400FRDMEVM_HW_Test_Package_W20.zip软件包或其下载位置,因为这将使按照手册中描述的固件更新程序进行操作变得更加容易。 感谢您的帮助。 加内什·巴格瓦特 Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI 你好, 我找不到 KITFS2400FRDMEVM_HW_Test_Package_W20.zip 文件夹。它很可能包含在早期版本的 NXPGUI 中。但是,该软件包仅包含 fs23xx-fw-FS24-v0.86.hex 文件,这是对固件进行编程所需的唯一文件。 ErikaC_1-1786381048598.png 请按照UM12014 KITFS2400FRDMEVM 用户手册中描述的所有步骤进行操作。如图 17 所示,需要使用调试器,并且还必须安装 S32 设计工作室工具。 如果没有用户手册中描述的必要调试器连接和软件环境,固件更新过程将无法成功完成。 希望这能帮到你! Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI 嗨@ErikaC , 感谢您的反馈, 我查阅了 UM12015 KITFS24SKTFDMEVM 用户手册的第 5 节“安装和配置软件和工具” 。但是,我找不到文档中提到的KITFS2400FRDMEVM_HW_Test_Package_W20.zip文件。 请问您能否告知我在哪里可以下载这个 .zip 文件?文件?我需要它按照手册中的说明更新固件。 我在 NXP GUI 中找到了fs23xx-fw-FS24-v0.86.hex 。这是应该用于更新的固件文件,还是包含在 KITFS2400FRDMEVM_HW_Test_Package_W20.zip 中的另一个文件? 我还查看了手册中提供的链接: 我从https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=S32DS-IDE-ARM-V2-X下载并安装了可执行文件(这是设计工作室,但不是主 S31244_Flash 文件),但我找不到所需的 .zip 文件。代码包,软件包. 请问能否提供KITFS2400FRDMEVM_HW_Test_Package_W20.zip的下载位置,或者告诉我哪里可以找到执行更新所需的正确固件包? 感谢您的帮助。 加内什·巴格瓦特 Re: Unable to Communicate with FS2400 Using KITFS24SKTFDMEVM and NXP GUI 嗨@ErikaC , 谢谢。成功了,我现在可以与 NXP-GUI 通信了。 唯一的问题是,这两个设置默认情况下并不存在。正如你所说,添加它们之后,一切都正常了。 在“可执行文件”下添加的命令是: ${cross_prefix}gdb${cross_suffix} 再次感谢您的支持。 问候, 加内什·巴格瓦特
查看全文
LX2162A USXGMIIリンクが完了しない みなさん、こんにちは。 私はSolidrun社製のLX2162A SoMを所有しています。Clearfogの開発キットを使用していますが、近いうちにカスタムキャリアに移行する予定です。 Solidrunは基本的なRCW/DCP/DPLを提供しており、その機能は確認済みです。私の場合、DPC3のDPCはSFPケージで動作し、SFP DACケーブルと様々なSFPモジュールでXFIリンクが接続されています。 RCW "rcw_2000_650_2900_3_11_0_auto" は SerDes1=3、SerDes2=11 に設定され、私は QorIQ カーネル (lf-6.6.52-2.2.0) と mc-utils (10.39.0) を使用していますが、両方に Solidrun のパッチが適用されています。U-Bootやその他のものもパッチが適用されています。すべてのパッチはここから取得されます: https://github.com/SolidRun/lx2160a_build/tree/develop-ls-6.6.52-2.2.0 私はMaxLinear GPY245-EKV-1(および-2)開発キットを持っており、PHYをデバイスに接続するためにDACケーブル経由のUSXGMIIを必要としています。どうやらこれはごく普通のことらしい。最終的にはこのPHYチップはSerDes2=7のレーン6とレーン7に統合される予定ですが、テストのためにはClearfogのSFPケージを使用する必要があります。 Clearfog SFP (mac3) <-> DAC CABLE <-> GPY245-EVK-2 SFP 私は、dpmac3がDPC経由でこのUSXGMIIリンクを使用するように設定しようとしているだけです。 mac@3 { link_type = "MAC_LINK_TYPE_PHY"; enet_if = "USXGMII"; }; (MAC_LINK_TYPE_BACKPLANEも試してみました) 「restool dpmac info dpmac.3」で確認済み「DPMAC イーサネットインターフェース:DPMAC_ETH_IF_USXGMII」と表示されます。 LinuxではMaxLinearドライバーを追加し、いくつかの点を修正しました: gpy_update_interface() の修正 (LKML、Daniel Golle)。これはUSXGMIIインターフェースで-EINVALを戻す際にクラッシュphy_state_machine。 pcs-lynx.c の lynx_pcs_config_usxgmii() 関数にパッチを適用しました。mdiobus_c45_modify() を介して MII_BMCR (BMCR_ANENABLE | BMCR_ANRESTART) も書き込む必要があります。この関数はこれまで MII_ADVERTISE しか書き込んでおらず、レプリケータブロック自体で AN を有効にしたことがなかったためです。このギャップは、このフォーラムの別の投稿(「LS1028A 10g-qxgmii phy 起動」)と一致しており、同じ症状(MMD31.0/Replicator)が報告されています。コントロールレジスタが0に固定され、ビット12を手動で設定した後、ANが作動しました。 こちらがDPMAC3 Linuxデバイスツリーのエントリーです: &dpmac3 { managed = "in-band-status"; phy-mode = "usxgmii"; phy-handle = <&gpy245_p0>; phys = <&serdes_1 7>; status = "okay"; }; ここで、`gpy245_0`はMDIOノードです。PHYへのMDIOトラフィックは正常に動作しています。 lynx_pcsドライバーにリードバックを表示するプリントアウトを追加しました: mdio_bus 0x0000000008c0f000:00: USXGMII: wrote ADV=0xd601 BMCR=0x1a00 readback ADV=0x6b00 BMCR=0x0800 BMSR=0x0000 LPA=0x0000 質問: このPCSインスタンスのMDIO_MMD_VEND2レジスタへの書き込みが持続しないような場合、LX2162AファミリSoCのUSXGMIIが設定を受け入れる前に、SerDes/PCSブロックの有効化、プロトコル固有の初期化など、追加のステップが必要になるのでしょうか?プロトコル3はdpmac3上のUSXGMII向けに完全に検証済みですか、それとも主にXFI向けに設計・テストされていますか? その他の質問: GPY245とUSXGMIIについて、私はよく理解していないのかもしれません。これをQXGMIIと呼ぶ人もいますが、LX2162Aが本当に動作するのかはわかりません。 Solidrunに問い合わせる必要があるかもしれないが、彼らのパッチはどれもLX2162Aの性能を制限するものではないようだ。 ありがとう! Re: LX2162A USXGMII link never completes LX2162A側は、あなたが使っているパス上でUSXGMIIをサポートするドキュメントがありますが、あなたが示している症状はLinux pcs-lynxの書き込みが欠けているというより、選択したPCSインスタンスがまだUSXGMIIアプリケーションモードに入っていないか、MCファームウェアが間違った10G PCSセレクタをプログラムしているように見えます。 SerDes1プロトコル3の場合、LX2162Aリファレンスマニュアルでは4つのSerDes1レーンすべてがUSXGMII / XFIとして記載されており、最初のレーンにはUSXGMII / XFI.3と記載されています。これはClearfog SFPパス上でテストしているDPMAC3のユースケースに対応しています。将来のカスタムキャリアのターゲットとして、SerDes2プロトコル7はレーン6とレーン7をUSXGMII / XFI.13およびUSXGMII / XFI.14として記録しています。 重要な注意点は、USXGMII / XFI のエントリが自動的に「USXGMII」になるわけではないということです。リファレンス・マニュアルには、USXGMIIとXFIのレーン内のデフォルトはXFIと書かれています。モードは、プロトコル構成レジスタCであるPCCCによって選択され、そのSXGMII*_XFIビットによって0b = USXGMII、1b = XFI/SFIが選択されます。まず最初に確認すべきは、LinuxのBMCR書き込み自体ではなく、DPMAC3の特定のSXGMIIインスタンスがMC/DPC初期化後にPCCC XFIセレクトビットがクリアされているかどうかです。 この正確な故障クラスは、LinuxのPCS**ドライバ**ではなくMCファームウェアに起きている前例もあります。あるLX2162Aチケットでは、USXGMII構成でMCがPCCCの10G**インターフェースセレクタ**を間違ったクリアしている様子があり、MCのファームウェアエンジニアリングビルドバージョン10.35.101で問題が解決されました。別のチケットでは、MCの設定はMCファームウェアによって行われ、NXPはMCをバイナリとして提供していると記載されています。MC 10.39.0 を使用しているため、その特定の古い修正は適用されていないはずですが、発生している障害モードは依然として「MC が意図した PCS を USXGMII モードにしなかった」または「間違った PCS インスタンスが処理されている」というエラーと一致しています。 次に私がすること: Linuxが何かを変える前にPCCCを読んでください。 RCW + MC + DPL/DPCのロード後、LinuxのPCSドライバーが動作する前に、PCCCを読み取り、該当するSXGMII*_XFIビットが0であることを確認します。DPMAC3 / USXGMII/XFI.3 用、最初のSXGMIIセレクタを期待してください。MAC13/14のセレクタではありません。そのビットが1のままの場合、レーンは依然としてXFI/SFIであり、VEND2/USXGMII PCS書き込みはアクティブなUSXGMII PCSパスに適用されません。 MDIOアクセスが意図したPCS管理ポートに届いているか確認してください。 SXGMIIプロトコル制御レジスタにはMDIOアクセスをマッチングするためのMDEV_PORTフィールドがあり、マニュアルにはMDIOがSGMII/PCSターゲットにアクセスするまで、ソフトウェアは変更後少なくとも3プラットフォームクロックを待つ必要があると記載されています。もしMDIOアドレスデコードが間違っていると、書き込みが「永続しない」ように見えることがあります。これは異なる、またはリセット/デフォルトのPCSウィンドウを読み取っているからです。 USXGMII ANレジスタが意味を持つのは、モード選択が正しく行われた後のみであることを確認してください。 USXGMII PCS CONTROLレジスタのビット12にはAUTO_NEGOTIATION_ENABLEがあり、DEV_ABILITY / PARTNER_ABILITYはRWレジスタです。DEV_ABILITY下位ベンダーの任意の速度フィールドはゼロでなければならず、ゼロは自動交渉失敗を引き起こす可能性があります。しかし、PCCCが依然としてXFIを選択する場合、これらのBMCR/能力書き込みは本当の根本的な問題ではない。 GPY245ボードのドキュメントに明確に記載されていない限り、QXGMIIを別の必須外部プロトコルとして扱わないでください。 LX2162Aドキュメントには、PD_QXGMやRST_QXGMなどのリセット/電源停止制御ビットを含むQXGMIIプロトコルコンバータレジスタが含まれています。NXPコミュニティの資料LS1028Aでは10G_QXGMII Lynx SerDesドライバーパスも言及されています。しかし、選んでいるDPMACインターフェースLX2162Aドキュメントは依然としてUSXGMII / XFIであり、NXPのドキュメントにはLX2160クラスのデバイスがUSXGMIIをサポートし、「SXGMII」は同じ意味ではないと別途記載されています。言い換えれば、「QXGMII」という言及は、ドライバ/コミュニティの議論において、あなたが設定したUSXGMIIモードとは必ずしも異なるMAC-to-PHY契約ではなく、内部のコンバータ/ドライバの命名パスを指している可能性があります。 このClearfog SFPテストでは、DPCはシンプルなものにしてください。 MAC_LINK_TYPE_PHY enet_if = 「USXGMII」のモデルは、MDIO上で管理される外部PHYのより自然なモデルです。バックプレーン/KRスタイルのフローを意図的に使用していない限り、MAC_LINK_TYPE_BACKPLANE が PHY 側の USXGMII 設定を修正するとは期待できません。 プロトコル3が「主にXFI専用」であるとは結論付けません。リファレンス・マニュアルでは、プロトコル3をDPMAC3のSerDes1レーン用にUSXGMII / XFIとして記載しています。取得した資料から確認できないのは、「プロトコル3 + DPMAC3 + USXGMIIはGPY245で検証された」という別の検証文です。より強力な証拠に基づく主張は、ハードウェアモードは存在し、PCCCがUSXGMIIを選択しない限りデフォルトでXFIに移行すること、そしてMCファームウェアで誤った10G PCSセレクタをプログラムする前例が存在することが知られています。 具体的な読み上げ内容については、以下をご覧ください。 ADV=0xd601 BMCR=0x1a00 を書き込んだ リードバック ADV=0x6b00 BMCR=0x0800 BMSR=0x0000 LPA=0x0000 これは、PCSインスタンスがUSXGMIIで完全に有効化・選択されていないか、MDIOマネジメントウィンドウが意図したPCSインスタンスに対応していない場合に予想される結果です。Linux側の書き込みを追加する前に、まずPCCCとMCログを確認したほうがいいでしょう。 LX2162Aプロトコル3はDPMAC3上のUSXGMII / XFIについて文書化されていますが、USXGMIIはMC/PCCCがUSXGMII PCSを選択することに依存しています。VEND2/BMCR書き込みが永続化されない場合は、まずDPMAC3の正しいPCCCビットがクリアされていること、およびMDIOが正しいSXGMII PCSインスタンスをアドレス指定していることを確認してください。 Re: LX2162A USXGMII link never completes @yipingwang詳細なご回答、本当にありがとうございます! あなたの言うことはすべて納得でき、プラットフォームについてもっと学び始めています。AN13329.pdfに記載されているアドバイスを実践し始めました。いくつかのアドレスや機能がうまくいかず(おそらくバージョンの不一致です)、少なくとも以下に示すようにMCログは入手できます: => md 0x8340020 10 08340020: e0000006 00000021 00060000 00000000 ....!........... 08340030: 00000000 00000000 00000000 00000000 ................ 08340040: 00000000 00000000 00000000 00000000 ................ 08340050: 00000000 00000000 00000000 00000000 ................ => md 0x21e1000000 21e1000000: 4d430100 00000000 01400000 00300000 [email protected]. 21e1000010: 00000073 00000000 00000000 00000000 s............... 21e1000020: 00000000 00000000 00000000 00000000 ................ 21e1000030: 00000000 00000000 00000000 00000000 ................ => md 0x21e1400000 50 21e1400000: 202c575b 54414c50 4d524f46 5520205d [W, PLATFORM] U 21e1400010: 20545241 6e697270 61662074 64656c69 ART print failed 21e1400020: 6c61202c 6564206c 20677562 61746164 , all debug data 21e1400030: 6c697720 6562206c 69727020 6465746e will be printed 21e1400040: 206f7420 66667562 0a2e7265 6e6e7552 to buffer..Runn 21e1400050: 20676e69 6120434d 202c7070 74696177 ing MC app, wait 21e1400060: 20676e69 20726f66 6e657665 2e207374 ing for events . 21e1400070: 000a2e2e 00000000 00000000 00000000 ................ 21e1400080: 00000000 00000000 00000000 00000000 ................ 21e1400090: 00000000 00000000 00000000 00000000 ................ 21e14000a0: 00000000 00000000 00000000 00000000 ................ 21e14000b0: 00000000 00000000 00000000 00000000 ................ 21e14000c0: 00000000 00000000 00000000 00000000 ................ 21e14000d0: 00000000 00000000 00000000 00000000 ................ 21e14000e0: 00000000 00000000 00000000 00000000 ................ 21e14000f0: 00000000 00000000 00000000 00000000 ................ 21e1400100: 00000000 00000000 00000000 00000000 ................ 21e1400110: 00000000 00000000 00000000 00000000 ................ 21e1400120: 00000000 00000000 00000000 00000000 ................ 21e1400130: 00000000 00000000 00000000 00000000 ................ 私はubootを介してPCCCを操作しようと試みました。関連する事項は以下のとおりです。 crc32+ MC firmware version 10.39.0 fsl-mc: Booting Management Complex ... SUCCESS fsl-mc: Management Complex booted (version: 10.39.0, boot status: 0x1) Autoboot in 3 seconds => mmc read 0x80d00000 0x6800 0x800 => fsl_mc apply dpl 0x80d00000 fsl-mc: Deploying data path layout ... SUCCESS => md.l 0x1ea10b0 1 01ea10b0: 88889991 .... 0x1ea10b0が正しいアドレスであることを心から願っています。LX2162ARM.pdfによると、それが正しい住所である可能性はあり、ビットを解読すると次のようになります: A (lane 0) bit 31 1 = XFI/SFI B (lane 1) bit 27 1 = XFI/SFI C (lane 2) bit 23 1 = XFI/SFI D (lane 3) bit 19 1 = XFI/SFI 正しいレジスタアドレス(PCCC)を観察すべきでしょうか?他に提供できる情報はありますか? ありがとう! Re: LX2162A USXGMII link never completes はい。のために SerDes1 、  0x1ea10b0  正しい住所は PCCC : LX162A CCSRマップリスト SerDes 1 で  0x1EA_0000–0x1EA_FFFF  。 SerDesのメモリマップには、 プロトコル構成レジスタC / PCCC オフセットで  0x10B0  。 したがって: 0x1EA0000+0x10B0=0x1EA10B0 0 x 1 E A 0000 + 0 x 10 B 0 = 0 x 1 E A 10 B 0 あなたのUブートにはこう書かれていました: コピー => md.l 0x1ea10b0 1 01ea10b0: 88889991   予想どおりに観測している SerDes1 PCCC 登録する。 重要な注意点は命名法です。私はそれらの分野を物理的とは表現しません。 SerDesレーンA/B/C/D 現在の設定の場合。LX2162A SerDes1プロトコルテーブルでは、プロトコル  3  地図 物理レーンH / レーン0 に  USXGMII / XFI.3  、その後レーンG/レーン1から  .4  、レーンF/レーン2から  .5  、そしてレーンE/レーン3から  .6  。PCCCフィールド名など  SXGMIIA_XFI  、  SXGMIIB_XFI  などは PCS/プロトコル制御フィールドであり、必ずしも物理レーン文字と同じ命名規則ではありません。 価値  0x88889991  上位ニブルは次のようにデコードされます。 コピー PCCC = 0x88889991 ビット31:28 = 0x8 -> SXGMIIA_XFI = 1、CFG = 000 ビット 27:24 = 0x8 -> SXGMIIB_XFI = 1、CFG = 000 ビット 23:20 = 0x8 -> SXGMIIC_XFI = 1、CFG = 000 ビット 19:16 = 0x8 -> SXGMIID_XFI = 1、CFG = 000 ビット15:12 = 0x9 -> SXGMIIE_XFI = 1、CFG = 001 ビット11:8 = 0x9 -> SXGMIIF_XFI = 1、CFG = 001   重要な部分は  _XFI  少し。RMは定義する  0  として USXGMIIモード そして  1  として XFI/SFIモード これらの分野については 。つまり、あなたが読んでいる値は、関連するUSXFI/SXGMIIのPCSインスタンスが依然として XFI/SFI として選択されていることを強く示唆しています。USXGMIIとして選ばれているわけではありません。 これはあなたの症状と一致します。Linux/restoolは報告するかもしれませんが  DPMAC_ETH_IF_USXGMII  PCCCが関連する  _XFI  selectビットを  1  保持しているなら、基盤となるSerDes/PCSの選択は実質的にXFI/SFIモードのままです。RMはまた、10G-SXGMIIを有効にするにはソフトウェアが設定しなければならないと明記しています  PCCC[SGMIIa_XFI] = 0  。 あなたのMCログ抽出結果も問題なさそうです。AN13329では、MCFBAL/MCFBAHを以下のように読むように指示されています。  0x8340020  MCファームウェアベースを構築し、オフセットでログバッファ構造をダンプします。  0x01000000  ; この構造体には、マジックナンバー、ログバッファオフセット、およびログバッファ長が含まれます。 。あなたの  0x21e1000000  ダンプには予想どおりの結果が表示されます  0x4d430100  魔法とログオフセットへのポイント  0x01400000  これは、後であなたがダンプした内容と一致します。  0x21e1400000  。 次に私が撮影したいもの: PCCCの各段階におけるスナップショット コピー md.l 0x1ea10b0 1 それを捉える: リセット直後/可能であればMC起動前に、 MCブート後、 DPC/DPL適用後、 Linuxが起動した後、 DPMACのプローブ/設定が完了した後。 隣接するプロトコル設定レジスタ コピー md.l 0x1ea10a0 1 # PCC8 md.l 0x1ea10a4 1 # PCC9 md.l 0x1ea10b0 1 # PCCC PCC8/PCC9は他のSGMII構成フィールドを含み、PCCCはSXGMII/XFIセレクタレジスタ です。 USXGMIIを強制しようとしたときにどのPCCCフィールドが変わるか確認してください 実験用にU-Bootを安全に挿入できるなら、候補ビットをクリアしてすぐに読み返してみてください  _XFI  。例えば、dpmac3が最初のSXGMII/USXFI制御フィールドに対応する場合、ビット31をクリアすることが実験的な確認となる。 コピー mw.l 0x1ea10b0 0x08889991 1 md.l 0x1ea10b0 1 すぐに読み返せば  0x88889991  その場合、書き込みがブロック/上書きされているか、現在のブロック状態ではそのフィールドに書き込みができません。もしMCやLinuxが動くまで固定されるなら、MC/LinuxはXFI/SFIモードを復元している可能性が高いです。 RCW SerDesの完全デコード あなたは既に  SerDes1=3, SerDes2=11  ; dpmac3 レーンが利用可能であることと一致します  USXGMII / XFI.3  SerDes1プロトコル3の下で 。ただし、MCファームウェアはプロトコルセット全体に基づいてキーを生成することが多いため、エスカレーションを行う際には、完全なRCW文字列と生のRCWダンプを含めてください。 MCファームウェア + DPC/DPLアーティファクト あなたのMCは  10.39.0  、 含む: MCファームウェアバージョン、 DPCソース、 DPLソース、 ちょうど  dpmac@3  ブロック、 restool dpmac info dpmac.3  、 各ステップ後のPCCC値。 私の現在の読めたデータ: はい、  0x1ea10b0  正しいSerDes1 PCCCアドレスであり  0x88889991  関連するPCSセレクタはまだXFI/SFIモードのようです。 これは、XFIがSFPケージを介して動作し、USXGMIIが期待されるPCS構成を受け入れ/保持しないという状況と一致しています。
查看全文
[LPC55S69] Zephyr MCUboot 通过 UART 进行设备固件更新时,在 LPC55S69 上使用 MCUmgr 时无法正常工作 您好,我正在尝试让 Zephyr 的 MCUboot 在 LPC55XpressoS69 上使用 0 号核心运行。我正在 Zephyr 中运行简单的 Blinky 示例应用程序。 应用程序运行正常,没有任何错误。 但是,我一直尝试使用 mcumgr 通过 UART 发送设备固件更新 (DFU),但由于某种原因,我甚至无法在 mcumgr 和我的设备之间建立连接。我一直收到“NMP超时”的错误提示。 为了方便理解,我的目录结构如下所示: | __boards |__ lpcxpresso55s69_lpc55s69_cpu0.overlay __ src                |__ main.c __sysbuild               |__mcuboot.conf                __mcuboot.overlay __prj.conf __sysbuild.conf 我的prj.conf文件内容如下:   # Enable MCUMGR subsystem and OS/Image management commands CONFIG_MCUMGR=y CONFIG_MCUMGR_GRP_OS=y CONFIG_MCUMGR_GRP_IMG=y # DIRECT SMP over UART CONFIG_MCUMGR_TRANSPORT_UART=y CONFIG_MCUMGR_TRANSPORT_SHELL=n # Dedicate flexcomm0 to SMP — nothing else on the UART CONFIG_CONSOLE=n CONFIG_UART_CONSOLE=n CONFIG_LOG=n CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y # Required for SMP UART processing thread CONFIG_NET_BUF=y CONFIG_ZCBOR=y CONFIG_BASE64=y # Required subsystems for DFU CONFIG_FLASH=y CONFIG_IMG_MANAGER=y CONFIG_MCUBOOT_IMG_MANAGER=y # Dependencies for System/Reboot management via DFU CONFIG_REBOOT=y 我的sysbuild.conf文件内容如下:   SB_CONFIG_BOOTLOADER_MCUBOOT=y SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY=y 我的mcuboot.conf文件内容如下:   CONFIG_LOG=y CONFIG_MCUBOOT_LOG_LEVEL_INF=y CONFIG_MCUBOOT_SERIAL=y CONFIG_BOOT_SERIAL_UART=y CONFIG_UART_CONSOLE=n   我的 MCUboot.overlay 文件看起来像这样 /* Step 3.4 - Configure button and LED for Serial Recovery */ // zephyr,console = &flexcomm0; // zephyr,uart-mcumgr = &flexcomm0; / { chosen { zephyr,code-partition = &boot_partition; zephyr,uart-mcumgr = &flexcomm0; zephyr,shell-uart = &flexcomm0; }; }; &flexcomm0 { status = "okay"; }; / { aliases { mcuboot-button0 = &user_button_3; mcuboot-led0 = &blue_led; }; }; &gpio0 { status = "okay"; }; &gpio1 { status = "okay"; }; &blue_led { status = "okay"; }; /* Enlarge boot partition to 64KB to fit MCUboot with serial recovery */ &boot_partition { reg = <0x00000000 DT_SIZE_K(64)>; }; &slot0_partition { reg = <0x00010000 DT_SIZE_K(160)>; }; &slot1_partition { reg = <0x00038000 DT_SIZE_K(160)>; }; &storage_partition { reg = <0x00060000 DT_SIZE_K(50)>; }; 最后,我的 lpcxpresso55s69_lpc55s69_cpu0.overlay 文件看起来像这样 / { chosen { zephyr,code-partition = &slot0_partition; zephyr,mgmt-smp = &flexcomm0; zephyr,uart-mcumgr = &flexcomm0; }; }; &flexcomm0 { status = "okay"; }; /* Enlarge boot partition to 64KB to fit MCUboot with serial recovery */ &boot_partition { reg = <0x00000000 DT_SIZE_K(64)>; }; &slot0_partition { reg = <0x00010000 DT_SIZE_K(160)>; }; &slot1_partition { reg = <0x00038000 DT_SIZE_K(160)>; }; &storage_partition { reg = <0x00060000 DT_SIZE_K(50)>; }; 当我运行以下 MCUmgr 命令时,会收到 NMP 超时错误,如下所示: > mcumgr --conntype serial --connstring "dev=COM11,baud=115200" echo "test" Error: NMP timeout 所以 mcumgr 肯定知道端口可用(否则它会拒绝访问),但它一直超时。 我非常确定这是配置选项错误。我多次尝试更改配置选项,但似乎都无法解决问题。我几乎可以肯定,我漏掉了一些对这个功能正常运行至关重要的配置选项。 我已经尽可能地查阅了所有相关的应用笔记和用户手册。这些方法似乎都无法帮助我解决我的具体问题:在运行 Zephyr 应用程序的 LPC55Sxx 芯片上使用 Zephyr MCUboot 进行 DFU。 任何帮助都将不胜感激,不过最好是有人能在自己的板子上测试一下,例如:LPCXpresso55S69 并确认它们可以使用任何简单的程序执行 UART DFU。 LPC55S6x LPC55S69-EVK LPC55xx Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S 嗨@Harry_Zhang , 你的方法确实有效。事实上,我能够将命令简化到仅仅只保留一个部分。 west build -p always -b lpcxpresso55s69/lpc55s69/cpu0 --sysbuild samples/subsys/mgmt/mcumgr/smp_svr -- -DEXTRA_CONF_FILE="serial.conf" 这个方法也奏效了。非常感谢您重现我的问题,感激不尽。 Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S 你好@ZQ2 我能够在 LPCXpresso55S69 板上重现并验证该设置。 1.关键在于,在此配置中,MCUmgr 必须与 MCUboot 一起使用。该应用程序链接到 slot0(而不是闪存基地址),因此单独构建和烧录 smp_svr 应用程序将无法正常工作。MCUboot 是启动应用程序并将控制权移交给应用程序所必需的。 2. 我在文件 /c/SDK/zephyrproject/zephyr/samples/subsys/mgmt/mcumgr/smp_svr/boards 中添加了覆盖文件 lpcxpresso55s69_lpc55s69_cpu0.overlay。 &boot_partition { reg = <0x00000000 DT_SIZE_K(64)>; }; &slot0_partition { reg = <0x00010000 DT_SIZE_K(160)>; }; &slot1_partition { reg = <0x00038000 DT_SIZE_K(160)>; }; &storage_partition { reg = <0x00060000 DT_SIZE_K(50)>; }; 3. 使用以下命令构建项目: west build -p always -b lpcxpresso55s69/lpc55s69/cpu0 --sysbuild samples/subsys/mgmt/mcumgr/smp_svr -- -DEXTRA_CONF_FILE="serial.conf" -DEXTRA_DTC_OVERLAY_FILE="C:/SDK/zephyrproject/zephyr/samples/subsys/mgmt/mcumgr/smp_svr/boards/lpcxpresso55s69_lpc55s69_cpu0.overlay" -Dmcuboot_EXTRA_DTC_OVERLAY_FILE="C:/SDK/zephyrproject/zephyr/samples/subsys/mgmt/mcumgr/smp_svr/boards/lpcxpresso55s69_lpc55s69_cpu0.overlay" 4. 建成之后。您可以使用命令 grep -A20 -B5 "boot_partition" build/mcuboot/zephyr/zephyr.dts Harry_Zhang_2-1786007232854.png 5. 和西闪光 6. Harry_Zhang_0-1786007007588.png 7. Harry_Zhang_1-1786007044209.png 这证实了 UART 传输、SMP 服务器、MCUmgr 和 MCUboot 集成均正常工作。 BR 哈里 Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S 嗨@Harry_Zhang , 巧合的是,就在我昨天发布这个问题之后,我正好在使用 Zephyr 的smp_svr示例。 我遇到的问题也完全一样。 我按照 Zephyr 文档中的示例进行了操作,链接如下。 我创建了一个示例项目,然后成功构建了代码,并按照文档说明,使用以下命令启用了Raw UART(串行) smp_svr 选项的配置: west build -p always -b lpcxpresso55s69/lpc55s69/cpu0 --sysbuild -- -DEXTRA_CONF_FILE="raw-serial.conf;fs.conf" 然后我成功地刷入了代码。 尽管如此: C:\Users\Dev>mcumgr --conntype serial --connstring "dev=COM11,baud=115200" echo "test" Error: NMP timeout 我甚至尝试将调试探针从 Link2 改为 JLink,之后调试探针就连接到了 COM16。为了以防万一,我还使用 JLink Commander 禁用了所有大容量存储设备功能。 然后我尝试刷机并运行: > west flash -r jlink 但再次出现这种情况: C:\Users\Dev> mcumgr --conntype serial --connstring "dev=COM16,baud=115200" echo "test" 错误:NMP 超时 我究竟漏掉了什么?我猜这跟配置有关?如果是这样,我很好奇为什么 Zephyr 官方提供的smp_svr示例与 LPC55S69 不兼容,需要进行修改。 Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S 你好@ZQ2 由于 mcumgr echo 已经返回 NMP 超时,我认为您可以在调试 MCUboot DFU 流程之前验证 MCUmgr UART 通信。 您可以确认以下内容: flexcomm0 是连接到 LPCXpresso55S69 板上 COM11 的 UART。 应用程序运行正常(未停留在MCUboot串行恢复模式)。 没有控制台、shell 或日志输出与 MCUmgr 共享同一个 UART。 为了快速验证,我建议从 Zephyr 的smp_svr示例开始。 首先验证以下命令是否有效: mcumgr --conntype serial --connstring "dev=COM11,baud=115200" echo "test" BR 哈里
查看全文
[LPC55S69]Zephyr MCUboot for Device Firmware Update over UART が MCUmgr で動作しないLPC55S69 こんにちは、Core 0を使ってLPC55XpressoS69でZephyrのMCUbootを動かそうとしています。私はZephyrでシンプルなBlinkyサンプルアプリケーションを使っています。 エラーもなくアプリケーションは問題なく動いています。 しかし、mcumgrを使ってUART経由でデバイスファームウェアアップデート(DFU)を送信しようとしているのですが、なぜかmcumgrとデバイス間の接続すら確立できません。「NMPタイムアウト」が繰り返し発生します。 参考までに、私のディレクトリ構造は以下のようになっています。 | __ボード |__ lpcxpresso55s69_lpc55s69_cpu0.overlay __ src                |__ main.c __sysbuild               |__mcuboot.conf                __mcuboot.overlay __prj.conf __sysbuild.conf 私のprj.confファイルは以下のようになっています。   # Enable MCUMGR subsystem and OS/Image management commands CONFIG_MCUMGR=y CONFIG_MCUMGR_GRP_OS=y CONFIG_MCUMGR_GRP_IMG=y # DIRECT SMP over UART CONFIG_MCUMGR_TRANSPORT_UART=y CONFIG_MCUMGR_TRANSPORT_SHELL=n # Dedicate flexcomm0 to SMP — nothing else on the UART CONFIG_CONSOLE=n CONFIG_UART_CONSOLE=n CONFIG_LOG=n CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y # Required for SMP UART processing thread CONFIG_NET_BUF=y CONFIG_ZCBOR=y CONFIG_BASE64=y # Required subsystems for DFU CONFIG_FLASH=y CONFIG_IMG_MANAGER=y CONFIG_MCUBOOT_IMG_MANAGER=y # Dependencies for System/Reboot management via DFU CONFIG_REBOOT=y 私のsysbuild.confは以下のとおりです。   SB_CONFIG_BOOTLOADER_MCUBOOT=y SB_CONFIG_MCUBOOT_MODE_OVERWRITE_ONLY=y 私のmcuboot.confは次のようになっています。   CONFIG_LOG=y CONFIG_MCUBOOT_LOG_LEVEL_INF=y CONFIG_MCUBOOT_SERIAL=y CONFIG_BOOT_SERIAL_UART=y CONFIG_UART_CONSOLE=n   私のmcuboot.overlayは次のようになっています。 /* Step 3.4 - Configure button and LED for Serial Recovery */ // zephyr,console = &flexcomm0; // zephyr,uart-mcumgr = &flexcomm0; / { chosen { zephyr,code-partition = &boot_partition; zephyr,uart-mcumgr = &flexcomm0; zephyr,shell-uart = &flexcomm0; }; }; &flexcomm0 { status = "okay"; }; / { aliases { mcuboot-button0 = &user_button_3; mcuboot-led0 = &blue_led; }; }; &gpio0 { status = "okay"; }; &gpio1 { status = "okay"; }; &blue_led { status = "okay"; }; /* Enlarge boot partition to 64KB to fit MCUboot with serial recovery */ &boot_partition { reg = <0x00000000 DT_SIZE_K(64)>; }; &slot0_partition { reg = <0x00010000 DT_SIZE_K(160)>; }; &slot1_partition { reg = <0x00038000 DT_SIZE_K(160)>; }; &storage_partition { reg = <0x00060000 DT_SIZE_K(50)>; }; そして最後に、私のlpCXpresso55s69_lpc55s69_cpu0.overlayは次のようになります。 / { chosen { zephyr,code-partition = &slot0_partition; zephyr,mgmt-smp = &flexcomm0; zephyr,uart-mcumgr = &flexcomm0; }; }; &flexcomm0 { status = "okay"; }; /* Enlarge boot partition to 64KB to fit MCUboot with serial recovery */ &boot_partition { reg = <0x00000000 DT_SIZE_K(64)>; }; &slot0_partition { reg = <0x00010000 DT_SIZE_K(160)>; }; &slot1_partition { reg = <0x00038000 DT_SIZE_K(160)>; }; &storage_partition { reg = <0x00060000 DT_SIZE_K(50)>; }; 以下の MCUmgr コマンドを実行すると、以下に示すように NMP タイムアウトが発生します。 > mcumgr --conntype serial --connstring "dev=COM11,baud=115200" echo "test" Error: NMP timeout つまり、mcumgrはポートが利用可能であることを確実に認識しています(そうでなければアクセスを拒否します)が、タイムアウトが続いています。 これは設定オプションのエラーだと思います。設定オプションを何度も変更してみましたが、どれもうまくいきません。おそらく、この機能を動作させるために不可欠な設定オプションがどこかに抜けているのだと思います。 できるだけ多くのアプリケーションノートやユーザーマニュアルを調べました。私のケースにはどれも役に立たないようです。例えば、Zephyrアプリケーションを動かすLPC55Sxxチップ上のDFU MCUbootを使う場合です。 どんな助けでもありがたいですが、誰かが自分のボードで試すのが一番良いかもしれません。LPCXpresso55S69を送り、どんな簡単なプログラムでもUART DFUを実行できるか確認してください。 LPC55S6x LPC55S69-EVK LPC55xx Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S こんにちは、 @ZQ2さん LPCXpresso55S69ボード上で、この設定を再現し、検証することができました。 1.重要な点は、この構成ではMCUmgrをMCUbootと併用する必要があるということです。アプリケーションはslot0にリンクされている(フラッシュベースアドレスではありません)ため、smp_svrアプリケーションを単独でビルディングしてフラッシュするだけでは正しく動作しません。起動と制御をアプリケーションに引き渡すにはMCUbootが必要です。 2. /c/SDK/zephyrproject/zephyr/samples/subsys/mgmt/mcumgr/smp_svr/boardsのオーバーレイファイルlpcxpresso55s69_lpc55s69_cpu0.overlayを追加します。 &boot_partition { reg = <0x00000000 DT_SIZE_K(64)>; }; &slot0_partition { reg = <0x00010000 DT_SIZE_K(160)>; }; &slot1_partition { reg = <0x00038000 DT_SIZE_K(160)>; }; &storage_partition { reg = <0x00060000 DT_SIZE_K(50)>; }; 3. 以下のコマンドを使用してプロジェクトをビルドしました。 west build -p always -b lpcxpresso55s69/lpc55s69/cpu0 --sysbuild samples/subsys/mgmt/mcumgr/smp_svr -- -DEXTRA_CONF_FILE="serial.conf" -DEXTRA_DTC_OVERLAY_FILE="C:/SDK/zephyrproject/zephyr/samples/subsys/mgmt/mcumgr/smp_svr/boards/lpcxpresso55s69_lpc55s69_cpu0.overlay" -Dmcuboot_EXTRA_DTC_OVERLAY_FILE="C:/SDK/zephyrproject/zephyr/samples/subsys/mgmt/mcumgr/smp_svr/boards/lpcxpresso55s69_lpc55s69_cpu0.overlay" 4. それを建てた後。コマンドを使うことができます grep -A20 -B5 "boot_partition" build/mcuboot/zephyr/zephyr.dts Harry_Zhang_2-1786007232854.png 5. そして西の閃光 6. Harry_Zhang_0-1786007007588.png 7. Harry_Zhang_1-1786007044209.png これは、UARTトランスポート、SMPサーバー、MCUmgr、およびMCUbootの統合がすべて正しく動作していることを確認するものです。 BR ハリー Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S こんにちは、 @Harry_Zhang さん。 あなたの解決策は確かに効果があります。実際、私はコマンドを単に west build -p always -b lpcxpresso55s69/lpc55s69/cpu0 --sysbuild samples/subsys/mgmt/mcumgr/smp_svr -- -DEXTRA_CONF_FILE="serial.conf" これも効果があった。私の問題を再現していただき、本当にありがとうございます。大変感謝しています。 Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S こんにちは、 @ZQ2さん mcumgr echoはすでにNMPタイムアウトを返しているので、MCUbootのDFUフローをデバッグする前にMCUmgr UART通信を検証できると思います。 以下のことを確認できます: flexcomm0はLPCXpresso55S69ボード上のCOM11に接続されたUARTです。 アプリケーションは通常通り動作しており(MCUbootのシリアルリカバリーモードにとどまっていません)。 コンソール、シェル、ログ出力のいずれも、MCUmgrが使用するUARTを共有していません。 簡単な検証として、Zephyrの smp_svr サンプルから始めることをお勧めします まず、以下のコマンドが正しく動作することを確認してください。 mcumgr --conntype serial --connstring "dev=COM11,baud=115200" echo "test" BR ハリー Re: [LPC55S69] Zephyr MCUboot for Device Firmware Update Over UART Not Working with MCUmgr on LPC55S こんにちは、 @Harry_Zhang さん。 偶然にも、昨日この質問を投稿した直後にZephyrのsmp_svr サンプルを使っていました。 私も全く同じ問題に直面しています。 以下の リンクにあるZephyrのサンプルドキュメントに従って確認しました。 サンプル用のプロジェクトを作成し、ドキュメントに記載されている以下のコマンドを使用して、 Raw UART (serial) smp_svr オプションの設定を有効にして、コードを正常にビルドしました。 west build -p always -b lpcxpresso55s69/lpc55s69/cpu0 --sysbuild -- -DEXTRA_CONF_FILE="raw-serial.conf;fs.conf" そして、コードの書き込みに成功しました。 それにもかかわらず: C:\Users\Dev>mcumgr --conntype serial --connstring "dev=COM11,baud=115200" echo "test" Error: NMP timeout デバッガープローブをLink2からJLinkに変更してみたところ、デバッグプローブがCOM16に接続されるようになりました。念のため、JLinkコマンドーを使ってマスストレージデバイスの機能も無効にしました。 次に、フラッシュして実行してみました。 > west flash -r jlink しかし、またしても: C:\Users\Dev> mcumgr --conntype serial --connstring "dev=COM16,baud=115200" echo "test" エラー:NMPタイムアウト 一体何を見落としているのでしょうか?設定に関係があるのでしょうか?もしそうなら、なぜZephyrの公式サンプルがLPC55S69 smp_svrと互換性がなく、改造が必要なのか疑問です。
查看全文
请问有人可以帮我找到S32K3的功能安全手册吗? 大家好,我正在寻找NXP S32K3 MCU系列的**功能安全**手册。请问有人能帮我找到它或者提供访问方式吗? Re: Could someone please help me find the Safety Manual for the S32K3? HI 你已经和恩智浦签署保密协议了吗?如果您不确定公司是否与恩智浦半导体签署了保密协议,请告诉我公司的全名或地址。 如果您已经持有有效的保密协议,请参考此文档注册安全文件帐户。 获得安全文件访问权限后,您可以点击 S32K3 产品页面 文档部分的“安全”按钮 ,下载 功能安全手册 。 Safety Manual S32K3.png 此致敬礼, Robin
查看全文
どなたかS32K3のセーフティマニュアルを探すのを手伝ってもらえますか? 皆さんこんにちは、NXP S32K3 MCUファミリのセーフティマニュアルを探しています。どなたか見つける手助けやアクセス方法の情報を教えていただけませんか? Re: Could someone please help me find the Safety Manual for the S32K3? ハイ NXP社とは既に秘密保持契約(NDA)を締結済みですか?もし会社がNXPとNDAを結んでいるか確信が持てない場合は、会社のフルネームか住所を教えてください。 既に有効な秘密保持契約(NDA)をお持ちの場合は、この文書を参照してセキュアファイルアカウントを登録してください。 Secure Fileへのアクセスができたら、 S32K3製品ページの ドキュメントセクションで 「Secure 」をクリックして セーフティマニュアル をダウンロードできます。 Safety Manual S32K3.png よろしくお願いいたします ロビン
查看全文
Kinetis 和 LPC 的调试接口有什么建议? 我目前主要从事 Kinetis 系列芯片的开发工作,未来可能还会开发一些 LPC 芯片。我抽屉里装满了 P&E Micro 的调试接口,其中最常用的是 Cyclone ACP。 我有时会发现自己从 600 美元的 Cyclone 换成了 20 美元的 LPC-Link2,因为 Cyclone 与 MCUXpresso 存在很多奇怪的问题。说实话,LPC-Link2 基本能满足我的需求,只是速度有点慢。 我应该考虑使用Segger接口吗?请问有人可以推荐一款可靠、速度适中、在 MCUXpresso(最好也能在 CodeWarrior 11)中支持良好的接口吗?这款接口不会经常导致程序崩溃,也不会无法停止正在运行的目标。如果能支持追踪功能就更好了。 谢谢您! Re: Debug interface recommendations for Kinetis and LPC? 嗨@richard37 感谢您的帖子! 您不妨考虑一下 SEGGER J-Link。它与 MCUXpresso 一起使用时支持 Kinetis 和 LPC 设备,并且 CodeWarrior 11 也原生支持它。 如果您需要一种可以在开发环境和设备系列中使用的调试探针,那么它是一个很好的选择。
查看全文
KinetisとLPC用のデバッグインターフェースのおすすめはありますか? 私は主にKinetisシリーズで開発をしており、近い将来LPCのパーツもいくつか手がけるかもしれません。P&E Microのデバッグインターフェースが引き出しいっぱいにあり、よく使っているCyclone ACPも含まれています。 時々、600ドルのCycloneから20ドルのLPC-Link2に切り替えることがあります。なぜなら、CycloneはMCUXpressoに多くの奇妙な問題があるからです。正直なところ、LPC-Link2は私の必要な機能のほとんどを満たしてくれるのですが、少し動作が遅いのが難点です。 Seggerインターフェースを検討しるべきでしょうか?MCUXpresso(そしてできればCodeWarrior 11でも)で十分にサポートされ、クラッシュや走行中のターゲットを止められない信頼性が高く、そこそこ高速なインターフェースを誰かおすすめできませんか?トレースサポートがあれば助かります。 よろしくお願いします! Re: Debug interface recommendations for Kinetis and LPC? こんにちは、@richard37さん 投稿ありがとうございます! SEGGER J-Linkを検討してみるのも良いかもしれません。MCUXpressoと組み合わせて使用した場合、KinetisとLPCの両方に対応しており、CodeWarrior 11でもネイティブサポートされています。 これにより、開発環境やデバイスファミリーの両方で使えるデバッグプローブが必要な場合に良い代替手段となります。
查看全文