Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
MPC5748G 在 SJA1105SMBEVM 上:代码闪存读取的是返回地址而不是数据;RAM/外设正常 您好, 我有一块 SJA1105SMBEVM 评估板(MPC574xB/C/G + SJA1105P/Q/R/S 网关评估套件,通过 Digi-Key 购买,货号为 568-SJA1105SMBEVM-ND)。板载 MPC5748G 的代码闪存似乎无法正常工作。我希望对以下诊断进行核实,并在申请退货授权 (RMA) 之前了解是否有已记录的恢复程序。 症状 该主板自开箱以来从未运行过其出厂固件。“Alive” LED D3(AH1721 第 5.4 节)从未闪烁过,事实上,板上的任何 LED 都从未闪烁过。 使用 S32DS for Power Architecture v2.1 和 PEmicro USB Multilink Universal 对 sja1105smbevm_tc10example 示例项目进行编程时,程序无限期地卡在以下位置: 编程顺序为:擦除、空白检查、编程和验证 {default}     CMD>VC 验证目标文件 CRC-16 校验值是否与设备范围匹配……        块 00FA0000-00FA0003 ... 它始终停留在这一点上(观察超过 14 分钟)。请注意,00FA0000-00FA0003 只有 4 个字节(RCHW),而 CMD>VC 是在擦除之前运行的预检查,因此在会话的第一次闪存读取时就会失败。 已排除 - J6 跳线:板出厂时未安装跳线,因此稳压器在上电后约 21 秒关闭(AH1721 第 6.4 节)。用跳线连接引脚 2-3 固定。现在电路板可以无限期地保持通电状态。D3 依然纹丝不动。 - PEmicro 探针固件:配置为 ARM 而不是 Qorivva MPC5xxx / ST SPC5xxx。已使用 PEFirmwareConfig.exe 进行修正,现在固件版本为 11.52,架构正确。这确实解决了另一个“空白检查期间出错”对话框的问题,该问题不再出现,但并没有解决闪存读取失败的问题。 - 启动配置中已禁用半主机模式。 - 调试移位频率从 5000 降至 1000 KHz,复位延迟增加到 500 ms,JTAG 排线重新安装在 A 端口 / J10 上。 - 审查:PEmicro 报告没有审查,并正常进入在线调试模式。 使用 S32DS 旁路进行诊断 直接运行 pegdbserver_power_console.exe 并使用 powerpc-eabivle-gdb 探测内存。 连接正常: 检测到 P&E 接口 - Flash 版本 11.52 设备 IDCODE 为 $00000082 启动重置脚本 (s32e200_mpc574xg.mac)... 将 RAM 从 $40000000 初始化为 $400BFFFF。 RESET 脚本已完成。 检测到 MPC574xG 设备。 设备型号为mpc5748g。 模式为在线调试。 内存探测结果: === RAM 写入/读取 @ 0x40001000(写入 0xDEADBEEF) === 0x40001000: 0xdeadbeef <- 确定 === SIUL2 MIDR1 @ 0xFFFC0004 === 0xfffc0004: 0x57483020 0x42004700 <- PARTNUM 0x5748,正常 === 代码闪现 ===     0xfa0000:    0x00fa0000  0x00fa0004  0x00fa0008  0x00fa000c     0xfa0010:    0x00fa0010  0x00fa0014     0xf90000:    0x00f90000  0x00f90004  0x00f90008  0x00f9000c     0x1000000:   0x01000000  0x01000004 每个闪词都会被读取为它自己的地址。那不是数据,也不是擦除后的闪存读取到的 0xFFFFFFFF。RAM 写入/读取、外设读取和寄存器读取均正常工作。 测试的地址来自示例项目自身的链接器脚本(Project_Settings/Linker_Files/linker_flash.ld): flash_rchw:org = 0x00FA0000,len = 0x4 FLASH_BASE_ADDR = 0x01000000 SRAM_BASE_ADDR = 0x40000000 这似乎可以解释这两种症状。At RESET时,BAM 从硬件中的 0x00FA0000 获取 RCHW,没有调试器参与,读取到的是垃圾数据,找不到有效的启动头,因此永远不会启动应用程序代码。空白支票/CMD>VC 都是闪存读取操作,因此编程失败。 问题 针对处于这种状态的 MPC5748G,是否有已记录的恢复程序,例如无需事先读取闪存即可进行的大容量擦除或闪存控制器重新初始化?S32DS 总是先执行验证读取,而验证读取操作会导致程序卡住,因此我一直无法尝试进行裸擦除。如果使用独立组网 (SA) 工具(例如 PROGPPCNEXUS?)是正确的方法,请告知。 否则,这块电路板是否应该被视为有缺陷? 谢谢。 Re: MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK 你好, 既然你能读取闪存,我估计这个设备没问题。 尝试加载一个简单的示例并进行调试。例如以下之一: https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/MPC5-software-example-list/ta-p/1102445#MPC5748G 如果在上述任何位置均未找到启动头,则 BAF 确定 设备的生命周期状态。如果生命周期在 CUST_DELIV(客户) 交付)或 MCU 生产,它尝试串行启动。否则,启动失败。 BAF 发出破坏性重置 顺祝商祺! Peter Re: MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK 无法读取闪存。 已下载 Example_MPC5748G_FlexCAN_RXFIFO_SDK303.zip,但该项目在 S32DS 中编译失败。 我用 Claude 搭建了一个简单的“闪烁”项目,该项目在内存中运行。程序加载到目标板上后运行正常。然后创建了一个调试配置文件,用于从闪存运行。启动过程停留在 98%。问题与“sja1105smbevm_tc10example”完全相同。调试启动时,尝试从闪存读取数据时卡住。控制台选项卡中的最后一条消息: 正在加载编程算法…… 完毕。 编程顺序为:擦除、空白检查、编程和验证 {default} CMD>VC 正在验证目标文件 CRC-16 校验值是否与设备范围匹配…… 区块 00FA0000-00FA0003 ... 克劳德总结道: 现在,在不打开芯片的情况下,你已经获得了相当全面的诊断结果: - ✅ 探针、JTAG、复位、SRAM、时钟、引脚复用器、GPIO、UART、FreeRTOS 调度、独立 RAM 执行——全部确认完全正常(包括脱离调试器运行) - ❌ 无论图像大小或内容如何,Flash 编程每次都会在完全相同的地址 (0x00FA0000) 处卡住。 - ❌ 并非安全/审查锁定(已通过 PEmicro 控制台直接排除——没有安全设备警告) 我的结论: 硬件有缺陷。返回。
記事全体を表示
iMX95EVKへのProfinetの移植 こんにちは、 Linuxコア上のiMX95 EVKにNXP-Port GMBH提供のProfinetスタックを移植しようとしています i.MX-RT1180およびiMX94でテストされているリンクを見つけました。 Profinetスタックリンク 私の質問は以下のとおりです。 1. imx95がこれをサポートしているか、またこのスタックを評価用に移植可能か確認してください。 2. このスタックをLinuxに移植するための参考文献もぜひ共有してください。 他に何か必要な情報があれば、遠慮なくお申し付けください。 よろしくお願いします。 ガウラヴ Re: Profinet porting on iMX95EVK 彼からのメールがあなたに届く頃には、お元気でいらっしゃることを願っています。 現時点でi.mx95はPROFINET産業用イーサネットプロトコルソフトウェアをサポートしていません。 上記に記載された機器のみ: Oswalag_0-1786397230469.pngOswalag_0-1786397230469.png Re: Profinet porting on iMX95EVK こんにちは、 @Oswalag さん。 ご返信ありがとうございます。 imx94とimx95はかなり似ていることを確認しましたし、もしスタックがIMX94で動作しているなら、少し努力すればIMX95でもポータブルになるはずです。 いくつか質問があります。 1. ProfinetスタックがIMX94でM7コアに移植されているのか、Linuxコアに移植されているのかを確認してください。 2. IMX94でのポーティングに役立つドキュメントはありますか? ありがとうございます ガウラヴ Re: Profinet porting on iMX95EVK こんにちは、 この件に関する最新情報はありますか? Re: Profinet porting on iMX95EVK こんにちは、 以下のファクトシートをご確認ください。コアの役割に関する情報が記載されています。 https://www.nxp.com/docs/en/fact-sheet/PROFINETFS.pdf 利用可能なすべてのドキュメントは揃っています https://www.nxp.com/design/design-center/software/development-software/software-for-industrial-networking/profinet-industrial-ethernet-protocol-software:PROFINET-INDUSTRIAL-COMMUNICATIONS-SOFTWARE 詳細については、NXP Proサポートとサービスまでお問い合わせください
記事全体を表示
FlexIO0 SPI-controller TX shifter (SHIFTCTL, PINCFG=11b) never drives its output pin, despite SHIFTS Board: FRDM-MCXN236 (MCX N236, dual Cortex-M33) Toolchain: MCUXpresso IDE 25.6.136, bare-metal register-level C (no SDK peripheral drivers) RM reference: MCX N23x Reference Manual Rev. 4, 2025-03-05, Chapter 53 (FlexIO), Table 453 (SPI controller, CPHA=0 configuration) What I am building: FlexIO0 configured as an SPI controller per RM Table 453: 2 shifters (shifter0 = TX, shifter1 = RX) + 1 timer (timer0 = SCK, dual 8-bit counter baud mode), reading a BME280 sensor over SPI. Pins: P1_0/P1_1/P1_2 muxed to ALT6 (FLEXIO0_D8/D9/D10), confirmed correct via PORT1->PCR readback. Observation: The RX shifter and the SCK timer output both work perfectly — SCK toggles cleanly and on-schedule (confirmed via two independent registers, see below), and SHIFTSTAT/TIMSTAT report normal, on-time, error-free completion of every transfer. But the TX shifter's own output pin (SDO, D8) never shows any electrical movement whatsoever, regardless of what's written to it, under every variation I've been able to think of. The chip-ID register read back from the sensor is always 0x00, never the expected 0x60 (which a separate, working FlexComm/LPSPI3 driver on the same board, same sensor, same boot, reads correctly). Register configuration (matches RM Table 453 exactly, PINSEL substituted for real pins) SHIFTCFG0 = 0x0000_0000 (RM: 0000_0000h -- start/stop bit disabled) SHIFTCTL0 = 0x0083_0002 (RM: 0083_0002h, PINSEL=8 for our real D8/SDO) decodes to: TIMSEL=0, TIMPOL=1(neg edge), PINCFG=3(11b, driven output), PINSEL=8, PINPOL=0, SMOD=2(Transmit) -- every field verified against RM's literal example, only PINSEL substituted SHIFTCFG1 = 0x0000_0000 SHIFTCTL1 = 0x0000_0101 (RM: 0000_0101h, PINSEL=10 for our real D10/SDI) TIMCMP0 = derived per RM's own formula (8-bit frames, baud divider for 1MHz SCK) TIMCFG0 = 0x0100_2222 (RM literal value, no pin substitution needed) TIMCTL0 = 0x01C3_0201 (RM: 01C3_0201h, PINSEL=9 for our real D9/SCK) What I've ruled out, each via direct hardware evidence (debugger register/memory inspection, no oscilloscope available): Pin mux not reaching ALT6 -- PCR readback confirms correct ALT6 config on all four pins used. Sensor/wiring fault -- a separate, working FlexComm/LPSPI3 SPI driver reads the chip ID (0x60) correctly from the same physical sensor, same boot. SCK never toggling on the physical pin -- confirmed toggling via TWO independent registers sampled at the same instants: FLEXIO0->PIN (bit 9) and GPIO1->PDIR (bit 1, a completely separate peripheral block with no FlexIO-internal logic in its path). Both agree, in real time, sample for sample. TX byte-lane placement in SHIFTBUFBIS (the bit-swapped alias register) -- tried the low byte, the high byte (re-derived from RM 53.3.1's shift-register microarchitecture description, not just the summary table), and a byte-lane-agnostic full 32-bit alternating write (0xAAAAAAAA) -- all produce an identical, permanently flat SDO. TX buffer underrun (SHIFTERR) -- reads 0x0 (clean) every time, captured immediately after a successful RX-ready wait. Pin/pad-specific fault -- retargeted shifter0's PINSEL to a completely different physical pin (D9 instead of D8); still flat. The timer, using the identical PINCFG=11b "driven output" mechanism, drives either pin correctly. "Implicit load on enable" (RM 53.3.1: the shifter status flag sets "when data has been loaded from SHIFTBUF into the shifter or when the shifter is initially configured for Transmit mode" -- i.e. a possible stale first-cycle load) -- ruled out via a throwaway first transfer followed by a traced, unambiguously-second transfer: identical flat result. SHIFTBUFBIS alias write-path asymmetry -- wrote the same byte-lane-agnostic pattern through the plain, non-aliased SHIFTBUF[0] register instead of SHIFTBUFBIS[0]: identical flat result. FLEXIO0->PINOUTD/PINOUTE/PINOUTDIS (the global per-pin software output-override registers, RM 53.3.3.3) -- live readback shows all zero, meaning "controlled by timer/shifter configuration" (the normal state) on both the working SCK pin and the non-working SDO pin identically. Not the cause. FLEXIO0->PIN readback itself being unreliable -- see #3 above; independently confirmed via GPIO1->PDIR. Shifter0-instance-specific defect -- reproduced the identical flat result using shifter2 instead, configured with the bit-for-bit identical SHIFTCTL value. Same failure. Not instance-specific. RM 53.7.1.27's documented two-step PINCFG write sequence (write 10b first, then a separate write to 11b, to avoid a brief low glitch on first configuration) -- applied directly: identical flat result. I also checked the one published mask-set errata document for this part (MCXN23x_0P21K Rev. 2.0) -- no FlexIO-related entries at all -- and NXP's own FlexIO-SPI application note (AN12780), which adds no guidance beyond what RM Table 453 already documents. Question: Given the shifter's internal bookkeeping (SHIFTSTAT, SHIFTERR, TIMSTAT) reports completely normal, on-schedule, error-free Transmit-mode operation on every test — including the TX-ready flag correctly clearing and re-setting across multiple transfers within the same CS-bracketed transaction, which per RM 53.3.1 should only happen on a genuine timer-triggered reload — and the shift clock itself (same PINCFG=11b "driven output" mechanism, just via TIMCTL instead of SHIFTCTL) is independently proven to reach its physical pin correctly: Is there a known silicon behavior, an undocumented prerequisite, or an RM gap that would prevent a shifter's SHIFTCTL.PINCFG=11b Transmit-mode output specifically (as opposed to a timer's identical PINCFG=11b output) from reaching its assigned pin, on the MCXN23x mask set, even though every register-level configuration matches RM Table 453's own worked example exactly? Happy to share the full register-level project source and a complete, append-only investigation log (every hypothesis tried, every retraction, with exact hardware evidence for each) if useful.     MCXN Re: FlexIO0 SPI-controller TX shifter (SHIFTCTL, PINCFG=11b) never drives its output pin, despite SH Hi @hafeezmhd  Based on the information provided, I do not see any known MCXN23x silicon limitation, erratum, or documented FlexIO requirement that would prevent a shifter configured in Transmit mode with SHIFTCTL.PINCFG = 11b from driving its assigned pin while a timer output on the same FlexIO instance operates normally. Since the timer output is confirmed to reach the physical pin correctly and the FlexIO status flags indicate normal shifter operation, the behavior you are observing is not something we would normally expect from the documented FlexIO SPI configuration. At this point, it would be helpful to review the complete source code and initialization sequence, as well as a full register dump captured after initialization and immediately before a transfer. This may help identify any subtle configuration dependency that is not obvious from the register excerpts alone. If possible, please share the project source, and we can take a closer look. BR Harry
記事全体を表示
尽管设置了 SHIFTS,FlexIO0 SPI 控制器的 TX 移位器 (SHIFTCTL, PINCFG=11b) 始终无法驱动其输出引脚。 主板: FRDM-MCXN236(MCX N236,双核 Cortex-M33) 工具链: MCUXpresso IDE 25.6.136裸机寄存器级 C(无 SDK 外设驱动程序) RM 参考: MCX N23x 参考手册 Rev. 4,2025-03-05,第 53 章(FlexIO),表 453(SPI 控制器,CPHA=0 配置) 我正在打造的是: FlexIO0 配置为 SPI 控制器,符合 RM 表 453:2 个移位器(移位器 0 = TX,移位器 1 = RX)+ 1 个定时器(定时器 0 = SCK,双 8 位计数器波特率模式),通过 SPI 读取 BME280 传感器。引脚:P1_0/P1_1/P1_2 复用到 ALT6 (FLEXIO0_D8/D9/D10),通过 PORT1->PCR 回读确认正确。 观察: RX 移位器和 SCK 定时器输出均工作正常——SCK 切换干净利落且按计划进行(通过两个独立的寄存器确认,见下文),SHIFTSTAT/TIMSTAT 报告每次传输均正常、准时、无错误完成。但是,无论向TX 移位器自身的输出引脚 (SDO, D8) 写入什么内容,在我所能想到的所有变化下,它都始终没有任何电信号变化。从传感器读取的芯片 ID 寄存器始终为 0x00,而不是预期的 0x60(在同一块板、同一传感器、同一启动程序上,一个单独的、正常工作的 FlexComm/LPSPI3 驱动程序可以正确读取 0x60)。 寄存器配置(与 RM 表 453 完全匹配,PINSEL 替换为实际引脚) SHIFTCFG0 = 0x0000_0000 (RM: 0000_0000h -- 起始/停止位禁用) SHIFTCTL0 = 0x0083_0002 (RM: 0083_0002h, PINSEL=8 for our real D8/SDO) 解码结果为:TIMSEL=0,TIMPOL=1(负边沿),PINCFG=3(11位,驱动输出), PINSEL=8,PINPOL=0,SMOD=2(传输)——每个字段都已根据RM进行验证 字面意思,只有 PINSEL 被替换 SHIFTCFG1 = 0x0000_0000 SHIFTCTL1 = 0x0000_0101 (RM: 0000_0101h, PINSEL=10 for our real D10/SDI) TIMCMP0 = 根据 RM 自己的公式计算得出(8 位帧,1MHz SCK 波特率分频器) TIMCFG0 = 0x0100_2222(RM 字面值,无需引脚替换) TIMCTL0 = 0x01C3_0201 (RM: 01C3_0201h, PINSEL=9 for our real D9/SCK) 我已通过直接硬件证据(调试器寄存器/内存检查,没有示波器可用)排除了以下可能性: 引脚复用器未到达 ALT6 -- PCR 回读确认所有四个使用的引脚上的 ALT6 配置正确。 传感器/线路故障——一个独立的、正常工作的 FlexComm/LPSPI3 SPI 驱动程序可以从同一个物理传感器、同一个启动过程中正确读取芯片 ID (0x60)。 SCK 从未在物理引脚上切换——通过在同一时刻采样的两个独立寄存器确认切换:FLEXIO0->PIN(位 9)和 GPIO1->PDIR(位 1,一个完全独立的外部模块,其路径中没有 FlexIO 内部逻辑)。双方实时逐个样本地达成一致。 SHIFTBUFBIS(位交换别名寄存器)中的 TX 字节通道放置——尝试了低字节和高字节(重新推导自 RM 53.3.1 的)移位寄存器微架构描述(而不仅仅是摘要表),以及与字节通道无关的完整 32 位交替写入(0xAAAAAAAAA)——所有这些都产生相同的、永久平坦的 SDO。 TX 缓冲区欠载 (SHIFTERR) -- 每次读取 0x0(干净),在成功等待 RX 就绪后立即捕获。 引脚/焊盘特定故障——将 shifter0 的 PINSEL 重新定向到完全不同的物理引脚(D9 而不是 D8);仍然平坦。定时器使用相同的 PINCFG=11b“驱动输出”机制,可以正确驱动任一引脚。 “启用时的隐式加载”(RM 53.3.1:移位器状态标志在“数据已从 SHIFTBUF 加载到移位器或移位器最初配置为发送模式时”设置——即可能存在过时的首周期加载)——通过丢弃的首传输,然后进行跟踪的、明确的次传输来排除:结果完全相同。 SHIFTBUFBIS 别名写入路径不对称——通过普通的、非别名的 SHIFTBUF[0] 寄存器而不是 SHIFTBUFBIS[0] 写入相同的与字节通道无关的模式:结果完全相同。 FLEXIO0->PINOUTD/PINOUTE/PINOUTDIS(全局每引脚软件输出覆盖寄存器,RM 53.3.3.3)-- 实时回读显示所有零,这意味着“由定时器/移位器配置控制”(正常状态),工作 SCK 引脚和非工作 SDO 引脚的值完全相同。并非原因。 FLEXIO0->PIN 读取本身不可靠——参见上面的第 3 点;通过 GPIO1->PDIR 独立确认。 Shifter0 实例特有的缺陷——改用shifter2 ,配置了完全相同的 SHIFTCTL 值,结果出现了相同的扁平化结果。同样的问题。并非特定于某个实例。 RM 53.7.1.27 的记录了两步 PINCFG 写入序列(先写入 10b,然后单独写入 11b,以避免第一次配置时出现短暂的低电平故障)——直接应用:结果相同且平坦。 我还查看了该器件(MCXN23x_0P21K Rev. 2.0)的唯一已发布的掩模集勘误文档——完全没有与 FlexIO 相关的条目——以及 NXP 自己的 FlexIO-SPI 应用笔记(AN12780),该笔记除了 RM 表 453 中已记录的内容外,没有提供任何指导。 问题: 鉴于移位器的内部记录(SHIFTSTAT、SHIFTERR、TIMSTAT)在每次测试中都报告完全正常、按计划、无错误的发送模式工作——包括在同一 CS 括号内的事务中,TX 就绪标志在多次传输中正确清除和重置,根据 RM 53.3.1,这应该只在真正的定时器触发的重新加载时发生——并且移位时钟本身(相同的 PINCFG=11b“驱动输出”机制,只是通过 TIMCTL 而不是 SHIFTCTL)已独立证明能够正确到达其物理引脚: 是否存在已知的硅行为、未记录的先决条件或 RM 间隙,导致移位器的 SHIFTCTL.PINCFG=11b 发送模式输出(与定时器的相同 PINCFG=11b 输出相对)无法到达其在 MCXN23x 掩码集上的指定引脚,即使每个寄存器级配置都与 RM 表 453 中的示例完全匹配? 如果需要,我很乐意分享完整的寄存器级项目源代码和完整的、仅追加的调查日志(尝试过的每一个假设,每一次撤回,以及每一个假设的确切硬件证据)。     MCX N Re: FlexIO0 SPI-controller TX shifter (SHIFTCTL, PINCFG=11b) never drives its output pin, despite SH 嗨@hafeezmhd 根据提供的信息,我没有发现任何已知的 MCXN23x 芯片限制、勘误或已记录的 FlexIO 要求,可以阻止配置为发送模式 SHIFTCTL.PINCFG = 11b 的移位器驱动其分配的引脚,同时同一 FlexIO 实例上的定时器输出正常工作。 由于已确认定时器输出正确到达物理引脚,并且 FlexIO 状态标志指示移位器正常运行,因此您观察到的行为并非我们通常从已记录的 FlexIO SPI 配置中预期的行为。 此时,查看完整的源代码和初始化序列,以及初始化后、传输前立即捕获的完整寄存器转储将很有帮助。这可能有助于识别仅从寄存器摘录中无法明显看出的任何细微配置依赖关系。 如果可以,请分享项目源代码,以便我们仔细查看。 BR 哈里
記事全体を表示
Profinet移植到iMX95EVK 您好, 我正在尝试将 NXP-Port GMBH 提供的 Profinet 协议栈移植到我的 iMX95 EVK 上,该芯片运行在 Linux 内核上。 我找到了以下链接,其中在i.MX-RT1180和 iMX94 上都进行了测试。 Profinet堆栈链接 我的问题是: 1. 请确认 imx95 支持此功能,并且该协议栈可以移植用于评估目的。 2. 请分享一些我可以参考的文档,以便将此技术栈移植到 Linux 上。 如果您还需要我提供任何其他信息,请告诉我。 谢谢! 高拉夫 Re: Profinet porting on iMX95EVK 希望你一切安好。 目前,i.mx95 不支持 PROFINET 工业以太网协议软件。 仅限上述设备: Oswalag_0-1786397230469.pngOswalag_0-1786397230469.png Re: Profinet porting on iMX95EVK 嗨@Oswalag , 谢谢回复。 我已经检查过 imx94 和 imx95 非常相似,如果该协议栈在 imx94 上运行正常,那么经过一些努力,它应该可以移植到 imx95 上。 我有几个问题: 1. 请确认 MMX94 上的 M7 内核或 Linux 内核是否移植了 Profinet 协议栈。 2. 是否有任何文档可以帮助将程序移植到 IMX94 上? 谢谢! 高拉夫 Re: Profinet porting on iMX95EVK 你好, 关于这个问题有任何进展吗? Re: Profinet porting on iMX95EVK 你好, 请查看以下情况说明书,其中包含有关核心成员职责的信息。 https://www.nxp.com/docs/en/fact-sheet/PROFINETFS.pdf 所有可用文档均可在以下网址找到:https://www.nxp.com/design/design-center/software/development-software/software-for-industrial-networking/profinet-industrial-ethernet-protocol-software :PROFINET-INDUSTRIAL-COMMUNICATIONS-SOFTWARE 如需更多信息,您可以联系NXP Pro 支持服务。
記事全体を表示
[IMX8MQ]GPUがフリーズし、リカバリーはできません 当社では、IMX8MQをベースにしたカスタムボードを使用しており、ウェブベースのユーザーインターフェースが動作します。 私たちのテストシナリオでは、問題は約2〜3時間で再現可能です。問題が発生すると、GPU関連のエラーログが大量に生成され、その後、UI全体がフリーズします。その他のカーネルレベルの機能は引き続き使用可能です。 GPU復旧対策は実施しましたが、通常のGPU動作を回復することはできません。デバイスを完全に再起動する以外に解決策はありません。 OS:Android 11.0.0_2.0.0(Linux 5.10.9カーネル) 以下のいずれかの方法をご協力いただけませんか: 1. この問題を修正してください 2. GPUの復元 Re: [IMX8MQ]GPU hang and cannot be recovery 最も実用的な解決策は、Android 11.0.0_2.0.0 / Linux 5.10.9を離れ、少なくともAndroid 11.0.0_2.2.0、もしAndroid 11にとどまるなら11.0.0_2.6.0を試すことです。NXPのAndroidリリースページによると、11.0.0_2.0.0はLinux 5.10.9を使用していますが、後のAndroid 11リリースは新しいBSPを使用しています:11.0.0_2.2.0はLinux 5.10.35を使用しています。11.0.0_2.4.0はLinux 5.10.52を使用し、11.0.0_2.6.0は8M Quad EVKイメージ i.MX Linux 5.10.72を使用しています。また、NXPコミュニティトレースで、RDのGPUパッチがAndroid 11の同様の問題をAndroid 11.0.0_2.2.0で修正し、その後Android 11/12に実装された「GPUに関連する重大なパッチ」と記載されていました。 リカバリーについては、VivanteやgalcoreのGPUがハードハングした後にソフトウェアのみのGPUリセットに頼らない方がいいです。私が見つけた証拠によると、galcoreは「GPUハング、自動復旧」を試みて「復旧完了」と報告できますが、同じトレースはその後、AXIバスエラーGPUの状態ダンプに続いています。別のレポートでは、reset_gpu パスは「登録されたリセット制御がなかった」ため何も実行されなかったと指摘されています。実際には、galcoreの自動復旧が失敗した場合、確実な現場での回避策は、SurfaceFlinger/WebViewやUIプロセスを再起動するだけでなく、制御されたシステム再起動を行うことです。 推奨される行動計画: 可能であれば、NXP i.MX8MQ EVKまたはNXPのデモイメージ上で再現してください。 もし問題がカスタムボードだけに起こるなら、基板とポートの違いを優先してください:DDRのタイミングやトレーニング、GPUのパワーレール挙動、熱、デバイスツリーのメモリカットアウトなどです。NXPの指針では、類似のi.MX8MQカスタムボードGPU問題に対して、参照ボード上でNXPデモ画像を再現することが推奨されています。もし故障がカスタムボードのみの場合、DDRテストを再実行し、更新されたLPDDR4係数で再構築します。 BSP / GPUドライバーのスタックを更新してください。 あなたのリリースはAndroid 11.0.0_2.0.0で、Linux 5.10.9です。その後、i.MX8MQ向けには11.0.0_2.2.0、2.4.0、2.6.0などのNXP Android 11版も存在します。GPU関連のAndroid 11修正は特に11.0.0_2.2.0に関連しているため、複雑なランタイムリカバリーに投資する前に、まず11.0.0_2.2.0以降でワークロードをテストしてください。 DDRのサイズとGPUアドレス可能なメモリの配置を確認してください。 i.MX8MファミリのGPUのいくつかのハングやエラーはメモリ構成に関連しています。NXPのあるスレッドによると、GAリリースのVivante GPUドライバーは4GBのメモリアドレス範囲をサポートしておらず、システムを3GBに制限しmem=3072MiBでシステムがACIバスエラーの失敗を回避したとされています。別の注意点では、GPUは0x10000000から0x80000000領域の物理メモリのみを扱えるため、CMAメモリを低容量メモリに割り当ててその範囲を超えるアドレスを避けることを提案しています。簡単な実験として、メモリを減らした状態で起動してみてください。例えば、mem=3072MiB のように設定して、2~3 時間かかる障害が解消されるかどうかを確認してください。 CMA/連続GPUメモリのレビュー。 NXPのサポートでは、同様のi.MX8M GPUクラッシュシナリオに対して、CMAを総DDRの約25%に上げることを推奨しています。Androidのガイダンスにはgalcore.contiguousSize=xxxの使用も記載されています。カーネルコマンドライン上でGPUメモリサイズを設定するために。UIがWebView/WebGL/ビデオ/キャンバスを多用している場合、数時間にわたるCMAの枯渇または断片化が原因として考えられます。 GPUドライバーのブートパラメータ緩和策を試してみてください。 デバッグのために、テストしてください。 galcore.powerManagement=0 を GPU パワーマネージメント を無効にするために galcore.baseAddress=0x40000000 galcore.physSize=0 を使えばGPUのフラットマッピングを無効にできます。 galcore.contiguousSize=xxx to tune contiguous GPU memory これらはまずアイソレーションテストとして扱うべきであり、最終的な生産変更ではなく、明確に故障を排除するものであれば例外です。 GPUの電源レールと動作モードを確認してください。 i.MX8MQのデータシートには、VDD_GPUの標準動作電圧が0.81~1.05と記載されている。V、典型的な0.9V、最大GPU周波数800MHz;オーバードライブモードは0.9〜1.05ですV、典型的な1.0V、最大GPU周波数は1GHz。VDD_GPU の絶対最大値は 1.1 V で、オーバードライブの場合に記録されます。単にレールを1.1Vに上げて「修正」するのではなく、代わりに、UI/GPU負荷時の実際のレール、リップル、ドループ、PMICシーケンス、GPUの周波数やOPPが設定電圧と一致しているかを確認してください。 本番環境からの復旧の代替手段として、再起動を使用してください。 より少ない破壊的な回復手順を試みることは可能です。例えば、UIアプリやWebViewを停止し、SurfaceFlingerを停止し、モジュールとして構築された場合はgalcoreのアンロード/再ロードなどです。ただし、ドキュメント化されたモジュール操作は通常のinsmodやrmmodの処理であり、ウェッジしたハードウェア状態からの確実な回復は保証されません。カーネルが生きているのにGPUログがフラッシュし、galcoreの復旧が失敗した場合は、ウォッチドッグやヘルスモニターから制御された再起動をトリガーしてください。 最小限トリアージマトリックス: テスト 想定される解釈 NXP 11.0.0_2.2.0+ イメージで同じテストを実行します。 もし修正されていれば、根本原因は後のGPUやBSPパッチで既に解決されている可能性が高いです。 mem=3072MiBで起動 もし直ったなら、4GBの物理アドレス/GPUメモリ配置の問題が疑われます。 CMAを低メモリ領域に拡張/再配置する もし修正されていれば、GPUの連続メモリ割り当てやアドレッシングが疑われます。 galcore.powerManagement=0 を追加します。 もし修正されていれば、GPUの電源管理移行やクロック、レールの相互作用が疑われます。 障害発生期間中にVDD_GPUを測定する ドロップ/リップルが相関している場合は、PMIC/レール/OPPの設定を修正してください。 EVKで再現する EVKが安定している場合は、カスタムボードのDDR、電源、熱、およびデバイスツリーに焦点を当ててください。
記事全体を表示
SJA1105SMBEVM のMPC5748G:コードフラッシュはデータではなく返元アドレスを読み取る;RAM/ペリフェラルは問題ありません こんにちは、 私はSJA1105SMBEVM評価ボード(MPC574xB/C/G + SJA1105P/Q/R/Sゲートウェイ評価キット、Digi-Key経由で568-SJA1105SMBEVM-NDとして購入)を持っています。オンボードのMPC5748Gのコードフラッシュが機能していないようです。下記の診断内容について妥当性を確認させていただきたいのと、RMA(返品承認)手続きを進める前に、文書化された回復手順が存在するかどうかを知りたいです。 兆候 この基板は開封以来、工場出荷時のファームウェアを一度も実行していません。「Alive」LED D3(AH1721セクション5.4)は一度も点滅したことがなく、実際、基板上のどのLEDも一度も点滅したことがない。 S32DS for Power Architecture v2.1とPEmicro USB Multilink Universalを使ったsja1105smbevm_tc10example例プロジェクトのプログラミングは、次の段階で無期限に止まります。 プログラミングの手順は、消去、空白チェック、プログラム、検証です(デフォルト)。     CMD>VC オブジェクトファイルのCRC-16をデバイス範囲と照合しています... ブロック 00FA0000-00FA0003 ... (14分以上観察した結果)この地点から先に進むことは決してない。00FA0000-00FA0003はわずか4バイト(RCHW)であり、CMD>VCは消去前に実行されるプリチェックなので、セッションの最初のフラッシュリードで失敗します。 既に除外済み - J6ジャンパー:ジャンパーが装着されていない基板が出荷されていたため、電源投入後約21秒でレギュレーターがシャットダウンしました(AH1721セクション6.4)。ピン2-3にジャンパー線を接続することで修正しました。基板はこれで無期限に電源供給され続ける。D3は相変わらず瞬きをしない。 - PEmicroプローブファームウェア:Qorivva MPC5xxx / ST SPC5xxxではなくARM向けに設定されました。PEFirmwareConfig.exeを使用して修正し、正しいアーキテクチャのファームウェア11.52になりました。これにより、別の「空白チェック中にエラーが発生しました」というダイアログは表示されなくなりましたが、フラッシュ読み取りエラーは解決されませんでした。 - 起動設定でセミホスティングが無効になっています。 - デバッグシフト周波数を5000kHzから1000kHzに下げ、リセット遅延を500msに上げ、JTAGリボンケーブルをポートA/J10に再接続しました。 - 検閲: PEmicro は検閲がないと報告し、正常にインサーキットデバッグモードに入ります。 S32DSバイパス時の診断 pegdbserver_power_console.exeを直接実行し、powerpc-eabivle-gdbを使用してメモリをプローブします。 接続は正常です。 P&Eインターフェース検出 - フラッシュバージョン11.52 デバイスIDコードは$00000082です リセットスクリプト(s32e200_mpc574xg.mac)を開始します...     $40000000から$400BFFFFまでのRAMを初期化しています。 リセットスクリプトが完了しました。 MPC574xG デバイスが検出されました。 デバイスはmpc5748gです。 モードはインサーキットデバッグです。 メモリプローブの結果: === RAM書き込み/読み出し @ 0x40001000 (0xDEADBEEFに書き込み) ===     0x40001000:  0xdeadbeef                                    <- OK     === SIUL2 MIDR1 @ 0xFFFC0004 ===     0xfffc0004:  0x57483020  0x42004700                        <- PARTNUM 0x5748、OK === コードフラッシュ ===     0xfa0000:    0x00fa0000  0x00fa0004  0x00fa0008  0x00fa000c     0xfa0010:    0x00fa0010  0x00fa0014     0xf90000:    0x00f90000  0x00f90004  0x00f90008  0x00f9000c     0x1000000:   0x01000000  0x01000004 フラッシュワードはそれぞれ、自身のアドレスとして読み上げられる。それはデータではなく、消去されたフラッシュメモリが読み取るであろう0xFFFFFFFFでもありません。RAMの書き込み/読み取り、ペリフェラルの読み取り、レジスタの読み取りはすべて正常に動作します。 テスト対象のアドレスは、サンプルプロジェクト自身のリンカースクリプト(Project_Settings/Linker_Files/linker_flash.ld)からのものです。     flash_rchw      : org = 0x00FA0000、len = 0x4 FLASH_BASE_ADDR = 0x01000000 SRAM_BASE_ADDR = 0x40000000 これは両方の症状を説明しているように思われる。リセット時、BAMはハードウェアのRchWを0x00FA0000から取得し、デバッガを使わずにゴミデータを読み込み、有効なブートヘッダーを見つけず、アプリケーションコードを起動しません。そしてブランクチェック/CMD>VCはどちらもフラッシュ読み取りなので、プログラミングは失敗します。 質問 この状態のMPC5748Gに対して、例えばマス消去やフラッシュコントローラの再初期化など、事前のフラッシュ読み取りを必要としない文書化された復旧手順はありますか?S32DSは常に最初に検証読み取りを行いますが、これがハングする操作なので、裸消去を試みることはできませんでした。スタンドアロンツール(PROGPPCNEXUSなど)が適切なアプローチであれば、ご教示ください。 そうでなければ、この基板は不良品として扱われるべきでしょうか? ありがとうございます。 Re: MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK こんにちは、 フラッシュメモリを読み取れるということは、そのデバイスは正常だと思います。 簡単なサンプルを読み込んでデバッグしてみてください。例えば、以下のいずれかの例: https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/MPC5-software-example-list/ta-p/1102445#MPC5748G 上記のいずれの場所にもブートヘッダーが見つからない場合、BAFは デバイスのライフサイクルステータス。ライフサイクルがCUST_DELIV(顧客)にある場合 Delivery)またはMCUプロダクションで、シリアルブートを試みます。そうでなければ、ブートは失敗しました。 そしてBAFは破壊的なリセットを発行する よろしくお願いいたします。 ピーター Re: MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK Flashを読み取れません。 Example_MPC5748G_FlexCAN_RXFIFO_SDK303.zipをダウンロードしましたが、S32DSでコンパイルに失敗します。 Claudeを使って、RAM上で動作するシンプルな「点滅」プロジェクトをセットアップしました。それはターゲットボードにロードされ、問題なく動作しました。次に、フラッシュメモリから実行するためのデバッグ構成を作成しました。起動が98%で停止します。「sja1105smbevm_tc10example」と全く同じ問題です。デバッグ起動時にフラッシュメモリからの読み取り中にハングアップする。コンソールタブの最新メッセージ: プログラミングアルゴリズムを読み込んでいます... 終わり。 プログラミングの手順は、消去、空白チェック、プログラム、検証です。{default} CMD>VC オブジェクトファイルのCRC-16をデバイス範囲と照合しています... ブロック 00FA0000-00FA0003 ... クロードはこう結論づけた。 これでチップを開けずに得られる限りの詳細な診断が得られます: - ✅ プローブ、JTAG、リセット、SRAM、クロック、ピン多重化、GPIO、UART、FreeRTOSスケジューリング、スタンドアロンRAM実行など、すべて正常に動作することが確認されています(デバッガから独立して実行することも含む)。 - ❌ フラッシュプログラミングは、イメージのサイズや内容に関係なく、毎回まったく同じアドレス(0x00FA0000)でハングアップします。 - ❌ セキュリティや検閲ロックではない(PEmicroコンソールで直接除外 — セキュアデバイス警告なし) 私の結論: ハードウェアに不具合があります。戻ります。
記事全体を表示
[IMX8MQ]GPU挂起且无法恢复 我们有一块基于IMX8MQ的定制开发板,它运行着一个基于Web的用户界面。 在我们的测试场景中,大约两到三个小时即可重现该问题。当问题发生时,会生成大量与 GPU 相关的错误日志,之后整个用户界面会冻结。其他内核级功能仍然可用。 我们已经实施了 GPU 恢复措施,但这些措施未能恢复 GPU 的正常运行。完全重启设备是唯一的解决办法。 操作系统:Android 11.0.0_2.0.0(Linux 5.10.9 内核) 请问您能否帮助我们提供以下两种方法之一: 1. 修复此问题 2. 恢复GPU Re: [IMX8MQ]GPU hang and cannot be recovery 最实际的修复方法是放弃 Android 11.0.0_2.0.0 / Linux 5.10.9,并至少测试 Android 11.0.0_2.2.0,如果必须留在 Android 11 上,最好测试 11.0.0_2.6.0。NXP 的 Android 发布页面显示,11.0.0_2.0.0 使用的是 Linux 5.10.9,而后续的 Android 11 版本则使用了更新的 BSP:11.0.0_2.2.0 使用的是 Linux 5.10.35。11.0.0_2.4.0 使用 Linux 5.10.52,11.0.0_2.6.0 使用 Linux 5.10.72,适用于 i.MX 8M Quad EVK 镜像。我还发现 NXP 社区的跟踪记录显示,RD GPU 补丁修复了 Android 11.0.0_2.2.0 中类似的 Android 11 问题,并且这是一个“与 GPU 相关的主要补丁”,后来被应用到 Android 11/12 中。 对于恢复:一旦 Vivante/galcore GPU 完全死机,我不会依赖仅通过软件重置 GPU 来进行恢复。我发现的证据表明,galcore 可以尝试“GPU 挂起,自动恢复”并报告“恢复完成”,但相同的跟踪随后继续进入 AXI 总线错误 GPU 状态转储。另一份报告指出,reset_gpu 路径没有任何作用,因为“没有注册的重置控制”。实际上,如果 galcore 自动恢复失败,可靠的现场解决方法是受控系统重启,而不仅仅是重启 SurfaceFlinger/WebView 或 UI 进程。 建议的行动方案: 如果可能,请在 NXP i.MX8MQ EVK 或 NXP 演示镜像上重现该问题。 如果问题仅出现在定制主板上,请优先考虑板端口差异:DDR 时序/训练、GPU 电源轨行为、散热和设备树内存划分。NXP 针对类似的 i.MX8MQ 定制板 GPU 问题提供的指导是,使用 NXP 演示映像在参考板上重现问题;如果故障仅发生在定制板上,则重新运行 DDR 测试并使用更新的 LPDDR4 系数进行重建。 更新 BSP/GPU 驱动程序堆栈。 您的版本是 Android 11.0.0_2.0.0,Linux 版本为 5.10.9。NXP Android 11 的后续版本适用于 i.MX8MQ,包括 11.0.0_2.2.0、2.4.0 和 2.6.0。由于与 GPU 相关的 Android 11 修复程序专门与 11.0.0_2.2.0 版本相关联,因此在投入大量资源进行复杂的运行时恢复之前,请先在 11.0.0_2.2.0 或更高版本上测试您的工作负载。 检查DDR内存容量和GPU可寻址内存的位置。 多个 i.MX8M 系列 GPU 死机/错误与内存配置有关。NXP 的一个帖子说,正式版本中的 Vivante GPU 驱动程序不支持 4 GB 内存地址范围,将系统限制为 3 GB(mem=3072MiB)可以避免 AXI 总线错误故障。另一份说明指出,GPU 只能处理 0x10000000 到 0x80000000 区域内的物理内存,并建议将 CMA 内存分配到低内存中,以避免超出该范围的地址。作为一项快速实验,启动时减少内存,例如 mem=3072MiB,然后观察 2-3 小时的故障是否会消失。 查看 CMA / 连续 GPU 内存。 NXP 支持建议,对于类似的 i.MX8M GPU 崩溃情况,将 CMA 增加到总 DDR 的 25% 左右。Android 指南还提到使用 galcore.contiguousSize=xxx在内核命令行上设置GPU内存大小。如果您的 UI 大量使用 WebView/WebGL/视频/画布,则几个小时内 CMA 耗尽或碎片化可能是造成这种情况的原因。 尝试调整GPU驱动程序启动参数。 用于调试,请测试: galcore.powerManagement=0 可禁用 GPU 电源管理单元 galcore.baseAddress=0x40000000 galcore.physSize=0 可禁用 GPU 平面映射 使用 galcore.contiguousSize=xxx 来调整连续 GPU 内存 除非这些测试能明显消除故障,否则应首先将其视为隔离测试,而不是最终的生产变更。 检查GPU电源轨和运行模式。 i.MX8MQ 数据手册列出的 VDD_GPU 标称工作电压范围为 0.81–1.05V,典型值为 0.9 V,GPU 最高频率为 800 MHz;超频模式下为 0.9–1.05 VV,典型值为 1.0 V,GPU 最大频率为 1 GHz。VDD_GPU 的绝对最大值为 1.1 V,注意过驱动。不要简单地将电压轨提高到 1.1 V 作为“解决方法”;相反,要确认实际的电压轨、纹波、UI/GPU 负载期间的电压下降、PMIC 时序,以及您的 GPU 频率/OPP 是否与配置的电压匹配。 使用重启作为生产环境恢复的备用方案。 您仍然可以尝试破坏性较小的恢复序列——停止 UI 应用程序/WebView,停止 SurfaceFlinger,如果 galcore 构建为模块,则卸载/重新加载 galcore——但记录的模块操作只是正常的 insmod / rmmod 处理,不能保证从硬件卡死状态中恢复。如果内核存活但 GPU 日志泛滥且 galcore 恢复失败,则从看门狗/健康监测触发受控重启。 最小分诊矩阵: 测试 预期解释 在 NXP 11.0.0_2.2.0+ 镜像上运行相同的测试 如果问题已解决,则根本原因可能已被后续的 GPU/BSP 补丁程序所解决。 启动时使用 3072MiB 内存 如果问题已解决,则怀疑是 4GB 内存/高物理地址/GPU 内存放置问题。 增加/迁移 CMA 到低内存 如果问题已解决,则怀疑是 GPU 连续内存分配/寻址问题。 添加 galcore.powerManagement=0 如果问题解决,则怀疑是 GPU 电源管理单元转换/时钟/电源轨交互问题。 在故障窗口期间测量 VDD_GPU 如果下垂/纹波相关,请修复 PMIC/轨道/OPP 配置。 在 EVK 上复现 如果 EVK 稳定,则重点关注定制板 DDR、电源、散热和设备树。
記事全体を表示
MVR5510 OTP programming We are currently testing the OTP programming of MVR5510AMDA0ES. I have entered the test mode, and MAIN_TM_STATUS=0X42, FS_STATE_REG=0XA001. Currently, the emulation is OK, and the OTP values read out are correct. However, once I power down the chip and then read the OTP values again, I find that the OTP is completely empty. How can I write to the OTP and complete the programming when the emulation is OK? Currently, VSUP1/2=12V, VDDOTP=8.5V, POWERON1=5V, POWERON2=3.3V Note that I am using the I2C protocol to program the OTP, not the original factory tool. Could you please help me see what additional commands need to be executed to actually write to the OTP. Re: MVR5510 OTP programming good I'll ask our American colleagues to contact NXP, as they are responsible for the NDA with NXP. If necessary, I'll update you. Re: MVR5510 OTP programming I noticed that you seem to be a programmer company. If so, then third parties who want to become our programming partners need to be certified. You can contact NXP's local representative for business negotiations, so I cannot give you the programming program directly. Re: MVR5510 OTP programming I've already told you that OTP doesn't support programming on your own board because it contains many confidential rules that are not publicly available. If you want to create your own OTP system, you must first use the board we specified. Under normal circumstances, you won't be able to correctly read the values of the OTP registers. Do you understand? Re: MVR5510 OTP programming Thank you for your reply, although it is of no value to me. I need to solve a technical problem, but you gave me a sales proposal. I will discuss it with my boss. Re: MVR5510 OTP programming We do not support customers using their own boards for OTP testing. For large-volume orders, you can choose a third party to perform OTP testing. For small-volume orders or if you want to perform OTP testing yourself, I suggest you purchase the following boards: SBC and PMIC Product OTP Programming Board | NXP Semiconductors guoweisun_0-1787018585422.pngguoweisun_0-1787018585422.png guoweisun_1-1787018601483.pngguoweisun_1-1787018601483.png These two combinations offer good value for money.
記事全体を表示
FlexIO0 SPIコントローラーのTXシフター(SHIFTCTL, PINCFG=11b)は、SHIFTSにもかかわらず出力ピンを駆動しません 取締役会: FRDM-MCXN236(MCX N236、デュアルCortex-M33) ツールチェーン: MCUXpresso IDE 25.6.136,ベアメタルレジスタレベルC(SDK周辺機器ドライバーなし) RMの参考文献: MCX N23x リファレンスマニュアル Rev. 4、2025-03-05、第53章(FlexIO)、表453(SPIコントローラ、CPHA=0構成) 私が作っているもの: FlexIO0はRM表453に従いSPIコントローラとして構成:シフター2台(shifter0 = TX、shifter1 = RX)+タイマー1台(timer0 = SCK、デュアル8ビットカウンタボーモード)、SPI経由でBME280センサーを読み込みます。ピン: P1_0/P1_1/P1_2 は ALT6 (FLEXIO0_D8/D9/D10) に多重化され、PORT1->PCR の読み取りによって正しいことが確認されています。 観察: RXシフターとSCKタイマー出力はどちらも完全に動作します。SCKは正常にスケジュール通りに切り替わり(2つの独立したレジスタで確認済み、下記参照)、SHIFTSTAT/TIMSTATはすべての転送が正常に、時間通りに、エラーなく完了したことを報告します。しかし、 TXシフターの出力ピン(SDO、D8)は、私が思いつく限りのあらゆるバリエーションで、そこに何が書き込まれていても、電気的な動きを全く示しません。センサーからのチップIDレジスタの読み込みは常に 0x00 であり、期待される 0x60 ではありません(同じボード、同じセンサー、同じブート上の動作する FlexComm/LPSPI3 ドライバーが正しく読み取れます)。 レジスタ構成(RMテーブル453と完全に一致、PINSELは実際のピンに置き換えられています) SHIFTCFG0 = 0x0000_0000 (RM: 0000_0000h -- スタート/ストップビット無効) SHIFTCTL0 = 0x0083_0002 (RM: 0083_0002h、PINSEL=8 (実際のD8/SDOの場合)) デコード結果: TIMSEL=0、TIMPOL=1(負エッジ)、PINCFG=3(11b、駆動出力) PINSEL=8、PINPOL=0、SMOD=2(送信) -- すべてのフィールドがRMのものと照合されます 文字通りの例では、PINSELのみが置換されています。 SHIFTCFG1 = 0x0000_0000 SHIFTCTL1 = 0x0000_0101 (RM: 0000_0101h、PINSEL=10 (実際のD10/SDIの場合)) TIMCMP0 = RM独自の式に基づいて算出(8ビットフレーム、1MHz SCK用のボー分周器) TIMCFG0 = 0x0100_2222 (RMリテラル値、ピン置換不要) TIMCTL0 = 0x01C3_0201 (RM: 01C3_0201h、PINSEL=9 (実際のD9/SCKの場合)) 私が除外した可能性は、それぞれハードウェアの直接的な証拠(デバッガによるレジスタ/メモリの検査、オシロスコープは使用不可)に基づいている。 ピンマルチプレクサがALT6に到達していません -- PCRの読み取り結果から、使用されている4つのピンすべてでALT6の設定が正しいことが確認されました。 センサ/配線の故障――別の動作するFlexComm/LPSPI3 SPIドライバが同じ物理センサ、同じ起動時にチップID(0x60)を正しく読み取ります。 SCKは物理ピンで一度もトグルしなかった――同時にサンプリングされた2つの独立したレジスタ、FLEXIO0->PIN(ビット9)とGPIO1->PDIR(ビット1、完全に別の周辺ブロックで、FlexIO内部ロジックを経由しない)によってトグルが確認された。両者はリアルタイムで、サンプルごとに一致する。 SHIFTBUFBIS (ビットスワップされたエイリアスレジスタ) 内の TX バイトレーンの配置 -- 下位バイト、上位バイト (RM 53.3.1 から再導出) を試しました。シフトレジスタのマイクロアーキテクチャ記述(サマリーテーブルだけでなく)、バイトレーンに依存しない完全な32ビット交互書き込み(0xAAAAAAAA)など、すべて同一の永続的にフラットなSDOを生成します。 TXバッファアンダーラン(SHIFTERR)-- RX準備完了待機が成功した直後にキャプチャされ、毎回0x0(クリーン)を読み取ります。 ピン/パッド固有の障害 -- shifter0 の PINSEL をまったく異なる物理ピン (D8 ではなく D9) に再ターゲットしましたが、依然として平坦です。タイマーは、同一のPINCFG=11b「駆動出力」機構を使用して、どちらのピンも正しく駆動します。 「有効化時の暗黙的なロード」(RM 53.3.1:シフターの状態フラグは、「データがSHIFTBUFからシフターにロードされたとき、またはシフターが送信モード用に最初に構成されたとき」に設定されます。つまり、最初のサイクルでロードされた古いデータが存在する可能性があります)は、最初の転送を破棄し、続いてトレースされた明確な2番目の転送を行うことで除外されました。結果は同一で、フラットな状態でした。 SHIFTBUFBIS エイリアス書き込みパスの非対称性 -- SHIFTBUFBIS[0] の代わりに、エイリアスされていないプレーンな SHIFTBUF[0] レジスタを介して同じバイトレーン非依存パターンを書き込みました: 同じフラットな結果。 FLEXIO0->PINOUTD/PINOUTE/PINOUTDIS(グローバルなピンごとのソフトウェア出力オーバーライドレジスタ、RM 53.3.3)-- ライブ読み取りでは、動作中のSCKピンと動作していないSDOピンの両方で、すべてゼロが表示されます。これは、「タイマー/シフター構成によって制御されている」(通常の状態)ことを意味します。原因ではない。 FLEXIO0->PINの読み取り自体が信頼できない - 上記の#3を参照。GPIO1->PDIRを介して独立して確認済み。 Shifter0インスタンス固有の不具合 -- 代わりに、ビット単位で同一のSHIFTCTL値で構成されたshifter2を使用して、全く同じフラットな結果を再現しました。同じ失敗。特定のインスタンスに限った話ではありません。 RM 53.7.1.27の文書化された 2 段階の PINCFG 書き込みシーケンス (最初に 10b を書き込み、次に 11b に別途書き込み、最初の構成時の短い低グリッチを回避する) -- 直接適用: 同じフラットな結果。 また、この部分に関する唯一の公開されたマスクセットエラッタ文書(MCXN23x_0P21K Rev. 2.0)も確認しましたが、FlexIO関連の項目は一切ありません。また、NXP自身のFlexIO-SPIアプリケーションノート(AN12780)も確認しました。後者はRM表453がすでに記載しているもの以上の指針を加えていません。 質問: シフターの内部帳簿(SHIFTSTAT、SHIFTERR、TIMSTAT)は、すべてのテストで完全に正常で、スケジュールどおりで、エラーのない送信モード動作を報告しており、同じCSブラケットトランザクション内の複数の転送にわたってTX準備完了フラグが正しくクリアおよび再設定されています。これはRM 53.3.1によれば、真のタイマートリガーによるリロードでのみ発生するはずです。また、シフトクロック自体(同じPINCFG=11b「駆動出力」メカニズムですが、SHIFTCTLではなくTIMCTL経由)が物理ピンに正しく到達することが独立して証明されています。 レジスタレベルの設定がすべてRMテーブル453の具体的な例と完全に一致するにもかかわらず、シフタのSHIFTCTL.PINCFG=11b送信モード出力(タイマーの同じPINCFG=11b出力とは対照的に)がMCXN23xマスクセット上の割り当てられたピンに到達できないような、既知のシリコン動作、文書化されていない前提条件、またはRMのギャップは存在するのでしょうか? 必要であれば、レジスタレベルのプロジェクトソースコード全体と、完全な追記専用の調査ログ(試行したすべての仮説、すべての撤回、およびそれぞれの正確なハードウェア証拠)を喜んで共有します。     MCX N Re: FlexIO0 SPI-controller TX shifter (SHIFTCTL, PINCFG=11b) never drives its output pin, despite SH こんにちは、 @hafeezmhdさん 提供された情報に基づくと、 SHIFTCTL.PINCFG = 11b で送信モードに構成されたシフターが割り当てられたピンを駆動している間、同じFlexIOインスタンス上のタイマー出力が正常に動作することを妨げるような、既知のMCXN23xシリコンの制限、エラー、または文書化されたFlexIO要件は見当たりません。 タイマー出力が物理ピンに正しく到達していることが確認されており、FlexIOステータスフラグもシフターの正常な動作を示しているため、お客様が観察されている動作は、FlexIO SPI構成に関するドキュメントに記載されている通常の動作とは異なります。 この時点で、完全なソースコードと初期化シーケンス、および初期化後と転送直前に取得した完全なレジスタダンプを確認することが役立つでしょう。これは、レジスタ抜粋だけでは明らかにならない、微妙な構成上の依存関係を特定するのに役立つ可能性があります。 可能であればプロジェクトの情報源を教えていただければ、詳しくご覧いただけます。 BR ハリー
記事全体を表示
LPC55S69:尽管 CPBOOT/CPUCTRL/CPUCFG 序列已完全验证,但核心 1 始终无法启动。 LPC55S69:尽管启动序列已完全验证,但核心 1 始终无法开始执行(MCMGR 和手动写入寄存器均失败,结果相同)。 环境 电路板:LPC55S69-EVK (LPCXpresso55S69)、LPC55S69JBD100 IDE :MCUXpresso IDE v25.6 [版本 136] [2025-06-27] 操作系统:Linux(openSUSE) 工具链:GNU ARM Embedded(捆绑式),GCC 14.2.1 调试探针:板载 LPC-Link2,LinkServer 后端 使用的SDK元器件:driver.flexcomm司机邮箱,中间件.多核.mcmgr_lpc55s69,freertos_kernel + cm33_non_trustzone_port(仅限主节点) 摘要 核心 0(主节点,cm33_core0)运行正常。尽管在两个独立的洁净室项目版本中(一个是手写的寄存器序列,一个是使用 NXP 自己的 MCMGR 中间件),启动序列的每个元素在寄存器和内存级别上都经过独立验证,但核心 1(从机,cm33_core1,角色 M33SLAVE)似乎从未执行过它自己的 main() 函数的第一条指令。两次尝试都以同样的死胡同告终。 经独立核实属实 尝试 1 — 手写启动序列 SYSCON>CPBOOT 设置为嵌入式从映像的真实、链接器确认的地址(通过 objdump -h 部分 VMA 验证,并与 nm 符号地址交叉检查——不是解析为 0x0 的符号,而是实际的非零嵌入位置) SYSCON->CPUCTRL 在释放写入后立即读取为 0x08(CPU1CLKEN 位 3 置位,CPU1RSTEN 位 5 置位),以带内方式捕获(由执行写入的同一函数写入共享内存,而不是稍后通过可能过时的调试器会话读取)。 SYSCON>CPUCFG 位 2(CPU1ENABLE)已确认设置(0x04) 已确认启动地址处的向量表经独立验证有效:初始堆栈指针计算正确(位于 Core 1 重定位的 SRAM 区域的顶部),复位向量地址与 nm 中的实际 ResetISR 符号匹配(通过反汇编目标地址并找到真正的、合理的 Cortex-M 启动代码来确认:cpsid i → SystemInit() → data_init/bss_init 循环 → cpsie i → __main → _initio → 应用程序 main()) 已确认共享内存结构在两个核心独立编译的 .map 文件中解析到相同的物理地址。文件 已确认 Core 1 的私有 SRAM/堆栈区域与 Core 0 的私有 SRAM/堆栈区域不重叠(已迁移到单独的物理 SRAM 存储体)。 已确认嵌入式从镜像的 .data 文件。部分(非零初始化的全局变量)不会进入核心 0 的活动内存(需要使用 INSERT BEFORE .data 的自定义链接器脚本片段)。由于默认链接器脚本没有针对 objcopy 重命名的多核段的放置规则,否则它会作为“孤立段”落入核心 0 的 SRAM 中。 尽管如此,Core 1 的 main() 函数第一行写入的诊断值(已确认内存共享且寻址正确)始终与其初始值保持原样。 第二次尝试——使用 NXP 的 mcmgr_lpc55s69 中间件的新项目 为了排除我们自己的寄存器序列出现错误的可能性,我们使用 MCMGR_Init() / MCMGR_StartCore() / MCMGR_TriggerEvent() 从头开始重建,而不是手动写入寄存器。 直接阅读 mcmgr_internal_core_api_lpc55s69.c:确认 mcmgr_start_core_internal() 执行相同的 CPUCFG → CPBOOT → CPUCTRL 序列,使用正确的 SDK 宏(SYSCON_CPUCTRL_CPU1RSTEN_MASK 等)。 发现 MCMGR_Init()(从 main() 调用)不会调用 MCMGR_EarlyInit() / mcmgr_early_init_internal()。后者是一个单独的公共函数,其源代码注释表明它“旨在尽可能靠近 RESET 入口调用(在 SystemInitHook 的启动序列中)” ——但生成的项目中没有任何东西会自动将其连接起来。SystemInitHook() 在通用设备启动文件中为 __attribute__((弱)),默认为空存根。 在两个核心上添加了我们自己的 SystemInitHook() 重写,调用 mcmgr_early_init_internal(MCMGR_GetCurrentCore())。已通过 .map 确认此覆盖文件在两个项目中都真正链接到真正的函数(而不是短截线)。 重新应用并重新确认了第一次尝试中的所有修复(迭代重建中的嵌入地址稳定性、.data)。(通过相同的链接器片段技术进行段重定向,核心 1 SRAM 重定位,CPUCFG/CPBOOT/CPUCTRL 寄存器值均与第一次尝试的结果相同) 默认情况下,MCMGR_BUSY_POLL_COUNT 未定义,因此 mcmgr.c 中的 MCMGR_StartCore(..., kMCMGR_Start_Synchronous) 会阻塞,且没有任何超时设置。内部等待循环(当(s_mcmgrCoresContext[coreNum].state)!= kMCMGR_RunningCoreState)),已通过直接阅读 mcmgr.h 中宏的条件编译来确认。 结果:结果相同。核心 0 永远阻塞在 MCMGR_StartCore() 中。诊断共享内存值(已确认两个核心的 .map 文件中地址相同)文件位于真正共享的 SRAM 库中,.noinit因此不受 C 运行时初始化的影响)实际上写成 Core 1 的 main() 的第一个可执行行,永远不会离开其初始值 0。 问题 给定 CPUCFG、CPBOOT 和 CPUCTRL 都完全按照参考实现 (mcmgr_internal_core_api_lpc55s69.c) 读取。意图是,并且独立确认启动地址处的嵌入式映像是一个有效的、正确链接的 Cortex-M 二进制文件——是否还需要额外的步骤才能真正开始 Core 1 在此部分上的指令获取,而这三个寄存器写入操作本身无法捕获该步骤? 具体来说: LPC55S69(任何版本)是否存在已知的影响基于 CPBOOT/CPUCTRL 的辅助核心启动的硅缺陷? 除了应用程序级寄存器序列之外,启动 Core 1 是否真的需要调试探测级别的操作(例如,专门针对该部件上枚举的第二个 SWD 设备的 SWD 连接/恢复)?NXP 自己的多核 SDK 示例(例如,当通过 IDE 的正常单项目“调试”流程进行调试时,freertos_message_buffers_secondary_core) 似乎可以成功启动 Core 1,而无需单独的启动组配置——这意味着 MCUXpresso 的调试启动本身可能执行了应用程序代码本身无法触发的额外步骤。 这三个写入操作之间是否存在参考文件 mcmgr_internal_core_api_lpc55s69.c 中未反映的最小延迟、顺序约束或额外寄存器(例如,电源/时钟域中的寄存器)要求?执行? 乐意提供完整的项目文件,.map 文件。文件,或根据要求提供最小复现项目。 LPC55xx Re: LPC55S69: Core 1 never starts despite fully verified CPBOOT/CPUCTRL/CPUCFG sequence 问题已解决——根本原因是我的诊断出现误报,而非 Core 1 启动失败。 把解决方法贴出来,以防以后有人遇到类似症状并找到这个帖子。 真正的根本原因 在本项目的每个版本中,核心 1 都始终能够正常启动和运行。问题从来不在于 CPUCFG/CPBOOT/CPUCTRL、向量表、内存放置或启动序列中的任何其他内容——而是我自己的诊断工具中的一个错误,导致看起来Core 1 从未执行任何操作。 我使用了一个小型共享内存结构体(通过 __attribute__((section(".noinit.$SRAM4")))) 放置)由核心 1 写入,由核心 0 读取,用于观察启动过程。只有当项目生成的链接器脚本实际定义了一个名为 SRAM4 的区域时,这种技术才能真正应用于共享内存。我从零开始创建的向导项目确实定义了该区域,因此该技术在结构上是有效的——但当我后来基于 NXP 自己的 hello_world 示例项目(该项目使用不同名称的区域,Ram1/rpmsg_sh_mem,而不是 SRAM4)构建版本时,相同的属性却悄无声息地传递到了每个内核各自的私有.noinit 文件中。内存占用而不是抛出错误。核心 0 和核心 1 各自读取/写入“共享”结构体的不同副本,编译器或链接器均未发出任何错误警告。 最终结果:我的诊断报告显示,在两个独立的启动实现(手写的 CPUCFG/CPBOOT/CPUCTRL 寄存器和 NXP 自己的 MCMGR 中间件)和多个项目配置中,每次测试的结果均为 0(没有进展),因为这两个核心从一开始就从未真正查看过同一个内存地址——无论核心 1 是否真的在运行。 它是如何被发现的 通过原封不动地复制 NXP 的 hello_world 示例,并且仅在现有的、未经修改的、经过验证可正常运行的 main.c 文件中添加诊断写入,即可完成此操作。(而不是更换它),我可以通过板载 LED 直观地确认 Core 1 确实在执行完整的序列——然而共享内存计数器仍然显示为 0。这种矛盾(执行的物理证明与诊断结果相反)暴露了是诊断本身出了问题,而不是 Core 1 出了问题。将节名称修正为与该项目的实际区域匹配(.noinit.$rpmsg_sh_mem 而不是 .noinit.$SRAM4)后,立即产生了正确的递增值。 给其他在 LPC55xx 上调试多核启动的人一个教训 如果您使用 .noinit.$ 节属性来管理核心间共享内存,请根据该特定项目自身生成的 _Debug_memory.ld 来验证区域名称,而不是假设一个在其他项目中有效的名称(例如 SRAM4)。此处的不匹配会导致完全静默失败——没有版本警告,没有链接错误,没有运行时故障——并且产生的症状看起来与真正的启动失败完全一样(寄存器/向量表级别的调试都将检查正常,因为实际问题完全在诊断层)。 感谢所有阅读过之前帖子的人——CPUCFG/CPBOOT/CPUCTRL/向量表验证工作没有白费;确认所有这些是正确的最终迫使我们将调查转向诊断机制本身,因为这是剩下的未验证部分。 Re: LPC55S69: Core 1 never starts despite fully verified CPBOOT/CPUCTRL/CPUCFG sequence 更新:问题已定位到项目/链接器配置,而非应用程序代码。 自发帖以来,我进行了一项决定性的测试,大大缩小了范围。 测试:NXP 自家未经修改的多核示例能否在此硬件上运行? 为 LPCXpresso55S69 全新导入 multicore_examples/hello_world(主程序 + 辅助程序),完全未修改,并按原样进行了调试。 结果:有效。板载 RGB LED 以干净、规律的 500ms 开/500ms 关的频率闪烁——通过与我自己刷入同一块板的项目直接比较得到证实(我的项目使 LED 熄灭,未修改的示例使 LED 闪烁,当我重新刷入我自己的项目时,LED 再次熄灭)。结论是:在这款主板、探针和 IDE 安装下,双核执行是可行的。 测试:示例中的应用程序代码在我的项目配置中是否能正常运行? 为了确定问题是出在我的应用程序代码还是项目的版本/链接配置中,我复制了正常运行的示例的 secondary-core main.c 文件。app.h 和 hardware_init.c原封不动地(逐字节、未修改地)移植到我自己的从属项目中,完全替换了我自己的应用程序代码。 结果:LED灯不闪烁。在原始示例项目中可以正常运行的相同、未修改的 NXP 代码,在我自己的项目配置中版本时无法启动 Core 1。 这证明了什么? 问题不在于应用程序级别的代码(已经确认过两次——分别在手写的寄存器实现和基于 MCMGR 的实现中独立确认过,现在又用示例自己的源文件进行了第三次确认)。尽管我已尽最大努力逐点匹配,但我的项目的多核链接器设置/内存区域配置与工作示例存在差异,这确实是个具体问题: MCMGR_StartCore() 之后,CPUCFG、CPBOOT 和 CPUCTRL 都按预期读取。 嵌入图像的向量表经过独立验证有效(正确的堆栈指针,正确的复位处理程序地址与真正的 ResetISR 符号匹配)。 主存储区域设置为 RAM 区域(而非 PROGRAM_FLASH),这与工作示例中将 Core 1 的映像嵌入 RAM 而非闪存的方法一致。 核心 1 的私有内存与核心 0 的私有内存不重叠。 我发现一个结构上的差异,但尚未解决:工作示例的辅助核心项目在其 .cproject 文件中完全没有 PROGRAM_FLASH 内存区域的覆盖。(仅两个自定义 RAM 派生区域)。我从零开始创建的从属项目有三个区域,其中包括重新定位的 PROGRAM_FLASH。尝试完全删除该区域(以与工作示例完全匹配)会导致 MCUXpresso 的 MCU 设置页面崩溃(NullPointerException: this.mcuPage 为空),这表明 IDE 的工具无法很好地支持未定义 flash 区域的项目——这本身可能与手动匹配工作示例的确切配置很困难的原因有关。 问题 是否有特定的、有文档记录的多核项目配置(除了向导的“M33SLAVE”角色 + 多核链接器设置之外),才能使一个从头开始的项目达到与 SDK 自身的 hello_world 示例相同的工作状态?或者MCUXpresso IDE v25.6.136是否存在已知的限制/错误?针对多核 LPC55S69 项目,项目向导能否解决示例项目文件中存在的问题,而向导却无法复现这些问题? 很高兴分享这两个项目的完整 .cproject 文件。如果需要,可生成用于直接比较的文件。
記事全体を表示
Profinet porting on iMX95EVK Hi, I am trying to port NXP-Port GMBH provided profinet stack on my iMX95 EVK on linux core I have found access to below link where it is tested on i.MX-RT1180 and also on iMX94. Profinet stack link  My queries are: 1. Please confirm imx95 supports this and this stack can be ported for evaluation purpose. 2. Please also share any documents that I can refer to port this stack on linux. Please let me know if you need any other information from my end. Thanks Gaurav  Re: Profinet porting on iMX95EVK I hope his email finds you well,  At this moment, i.mx95 doesn't support the PROFINET Industrial Ethernet Protocol Software. Only the mentioned devices:  Oswalag_0-1786397230469.pngOswalag_0-1786397230469.png Re: Profinet porting on iMX95EVK Hi @Oswalag , Thanks for the reply. I have checked that imx94 and imx95 are quite similar and if the stack is working on imx94 then with some efforts it should be portable on imx95. I have few queries: 1. Please confirm whether profinet stack is ported on M7 core or linux core  on IMX94. 2. Are there any documents available that can help with porting on IMX94? Thanks, Gaurav Re: Profinet porting on iMX95EVK Hi, Any update on this query. Re: Profinet porting on iMX95EVK Hello,  Please check the following fact-sheet, there is information about the core's roles  https://www.nxp.com/docs/en/fact-sheet/PROFINETFS.pdf All the available documentation is in https://www.nxp.com/design/design-center/software/development-software/software-for-industrial-networking/profinet-industrial-ethernet-protocol-software:PROFINET-INDUSTRIAL-COMMUNICATIONS-SOFTWARE For more information you can contact NXP Pro Support services 
記事全体を表示
CodeWarriorのビルドエラー 時々ビルドエラーが出ます: mingw32-make: *** ターゲットにするルールはありません Dropbox//Projects/\Project_x/\Project_Headers/\../\Sources/\イベント情報.c',`Sources/Events_c.obj` で必要です。  停止。 ファイル Events_c.obj は確かに存在しますが、通常の対処法では解決しません。クリーンビルドを試しました。Events_c.obj を削除しました。Flashフォルダ全体を削除し、シャットダウンと再起動も試しましたが、何も効果がありませんでした。結局、新しいプロジェクトを作成し、ソースファイルの内容をコピー&ペーストしました。この問題は数週間に一度発生し、数回はコンピューターが「スリープ状態」になった後に自然に解消されました。 Re: CodeWarrior Build error ありがとうございます。同期の問題は納得できますが、試せるまで数日かかりそうです。 Re: CodeWarrior Build error これは.objファイルの問題というよりは、ファイル自体、あるいは生成された Makefile 内の古いまたは不正な依存関係パスのようなものです。Dropbox//Projects/\Project_x... というパスに奇妙なスラッシュが含まれていることが大きな手がかりです。プロジェクトがDropboxと同期されたフォルダから直接ビルドされているかどうかを確認し、ローカルの同期されていないディレクトリに移動してみてください。また、問題が発生した際に生成された依存関係/Makefileのエントリを、正常にビルドできた場合と比較してください。Dropboxフォルダの同期後、またはPCのスリープ解除後にエラーが解消される場合は、ソースファイルではなく、Dropbox/ファイルシステムのタイミングに問題がある可能性が高いでしょう。 Re: CodeWarrior Build error こんにちは、 CodeWarriorのどのバージョンを使用していますか? あなたが試したクリーンビルドは、コマンド>クリーン(すべて)を使用したものですか? 新しいプロジェクトに移るとうまくいくのに、数週間後にまた同じことが起こる? おそらく、あなたのMakefileがディレクトリに合わせていないのでしょう。 メイクファイルをクリーンアップして再作成するには、以下の手順をお試しください。 プロジェクトビューで > クリーン > ビルドするプロジェクトを選択   luis_maravilla_1-1787091476012.pngluis_maravilla_1-1787091476012.png また、推奨事項として、Dropboxフォルダは使用せず、ローカルパスに変更してビルドディレクトリに追加または変更してください。 詳細はこの投稿をご覧ください。 ターゲットにするルールはありません |MCUのエクリプス 敬具、ルイス
記事全体を表示
E-Flash 写入期间 LIN 通信故障 在向内部 EEPROM 写入 100 字节数据时检测到 LIN 通信故障。请提出一种合适的LIN通信恢复方法。 Re: LIN communication failure during E-Flash write 嗨@SivaB 请问您使用的是哪一款S32K设备? 一种可能的解释是,模拟 EEPROM 操作需要相对较长的时间,由此产生的延迟可能会阻止软件在所需的时序约束内处理 LIN 中断。另一种可能是读写冲突。在闪存擦除/编程操作期间,位于当前正在编程或擦除的闪存块中的代码或数据无法被获取/读取。如果应用程序需要此类代码或数据,则可能导致应用程序崩溃,进而导致观察到的 LIN 通信故障。 您能否也详细说明一下,当问题发生时具体会是什么样子?应用程序是完全崩溃,还是继续运行但 LIN 通信停止工作? 此致, Lukas Re: LIN communication failure during E-Flash write S32K144:应用程序运行正常。但是,LIN 通信失败,并且故障发生后,LIN 通信无法恢复。 EEPROM 编程/存储时间约为 175 毫秒。
記事全体を表示
MVR5510 OTPプログラミング 現在、MVR5510AMDA0ESのOTPプログラミングのテストを実施しています。テストモードに入りました。MAIN_TM_STATUS=0X42、FS_STATE_REG=0XA001です。現在、エミュレーションは正常に動作しており、読み取られたOTP値も正しいです。しかし、チップの電源を切ってからOTPの値を再度読み取ると、OTPが完全に空になっていることがわかりました。エミュレーションが正常なときにOTPに書き込んでプログラムを完了するにはどうすればいいですか?現在、VSUP1/2=12V、VDDOTP=8.5V、POWERON1=5V、POWERON2=3.3V なお、OTPのプログラミングには、純正の工場出荷時ツールではなく、I2Cプロトコルを使用しています。OTPに実際に書き込むために実行すべき追加コマンドを教えていただけますか? Re: MVR5510 OTP programming よろしいです。アメリカの同僚にはNXPに連絡するようお願いします。彼らはNXPとのNDAを担当しています。必要であれば、最新情報をお伝えします。 Re: MVR5510 OTP programming 御社はプログラミング会社様のようですね。もしそうであれば、弊社のプログラミングパートナーを希望される第三者企業は、認証を受ける必要があります。ビジネス交渉についてはNXPの現地代理店にご連絡ください。そのため、プログラミングプログラムを直接お渡しすることはできません。 Re: MVR5510 OTP programming 既にお伝えした通り、OTPは多くの機密ルールが含まれており、一般には公開されていないため、独自のボードでのプログラミングはサポートしていません。独自のOTPシステムを作成したい場合は、まず弊社指定のボードを使用する必要があります。通常の状態では、OTPレジスタの値を正しく読み取ることはできません。ご理解いただけましたでしょうか? Re: MVR5510 OTP programming ご返信ありがとうございます。しかし、私にとっては何の役にも立ちません。技術的な問題を解決する必要があるのに、あなたは私に営業提案書を渡しました。上司と相談してみます。 Re: MVR5510 OTP programming 弊社では、お客様ご自身で作成されたボードを使用したOTPテストはサポートしておりません。大量注文の場合は、OTPテストを第三者に委託することも可能です。少量注文の場合、またはお客様ご自身でOTPテストを実施される場合は、以下のボードをご購入いただくことをお勧めします。 SBCおよびPMIC製品向けOTPプログラミングボード|NXPセミコンダクターズ guoweisun_0-1787018585422.pngguoweisun_0-1787018585422.png guoweisun_1-1787018601483.pngguoweisun_1-1787018601483.png この2つの組み合わせは、コストパフォーマンスに優れています。
記事全体を表示
NXP 代码签名工具 (CST) 符合 FIPS 140-3 3 级标准 NXP团队您好, 我们目前使用 NXP 代码签名工具 (CST) 来实现安全启动,并生成/管理用于映像签名的密钥和证书。 作为产品网络安全要求的一部分,我们需要了解基于 CST 的代码签名过程是否符合 FIPS 140-3 3 级标准。 请您澄清以下问题: 1.NXP 代码签名工具 (CST) 本身是否符合 FIPS 140-3 标准或经过验证,特别是符合 FIPS 140-3 3 级要求? 如果符合要求,能否请您提供相关的认证、验证详情或NXP官方文件以证明其合规性? 谢谢 Re: FIPS 140-3 Level 3 Compliance of NXP Code Signing Tool (CST) CST 被记录为 NXP 代码签名工具,而不是 FIPS 140-3 3 级验证的加密模块。
記事全体を表示
MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK Hi, I have an SJA1105SMBEVM evaluation board (MPC574xB/C/G + SJA1105P/Q/R/S Gateway Evaluation Kit, purchased via Digi-Key as 568-SJA1105SMBEVM-ND). The onboard MPC5748G appears to have non-functional code flash. I would like a sanity check on the diagnosis below, and to know whether there is a documented recovery procedure before I pursue an RMA. SYMPTOM The board has never executed its factory firmware since unboxing. The "Alive" LED D3 (AH1721 section 5.4) has never blinked, and in fact no LED on the board has ever blinked. Programming the sja1105smbevm_tc10example example project with S32DS for Power Architecture v2.1 and a PEmicro USB Multilink Universal hangs indefinitely at:     Programming sequency is : erase, blank check, program, and verify {default}     CMD>VC     Verifying object file CRC-16 to device ranges ...        block 00FA0000-00FA0003 ... It never advances past this point (observed for more than 14 minutes). Note that 00FA0000-00FA0003 is only 4 bytes (the RCHW), and CMD>VC is a pre-check that runs before erase, so this is failing on the very first flash read of the session. ALREADY RULED OUT - J6 jumper: board shipped with no jumper installed, so the regulators shut down about 21 s after power-up (AH1721 section 6.4). Fixed with a jumper on pins 2-3. The board now stays powered indefinitely. D3 still never blinks. - PEmicro probe firmware: was configured for ARM rather than Qorivva MPC5xxx / ST SPC5xxx. Corrected with PEFirmwareConfig.exe, now firmware 11.52 with the correct architecture. This did resolve a separate "Error during blank check" dialog, which no longer occurs, but it did not resolve the flash read failure. - Semihosting disabled in the launch configuration. - Debug Shift Freq lowered from 5000 to 1000 KHz, reset delay raised to 500 ms, JTAG ribbon reseated on Port A / J10. - Censorship: PEmicro reports no censorship and enters In-Circuit Debug mode normally. DIAGNOSTICS WITH S32DS BYPASSED Driving pegdbserver_power_console.exe directly and probing memory with powerpc-eabivle-gdb. Connection is clean:     P&E Interface detected - Flash Version 11.52     Device IDCODE is $00000082     Starting reset script (s32e200_mpc574xg.mac) ...     Initializing RAM from $40000000 to $400BFFFF.     Reset script completed.     MPC574xG Device detected.     Device is mpc5748g.     Mode is In-Circuit Debug. Memory probe results:     === RAM write/readback @ 0x40001000 (wrote 0xDEADBEEF) ===     0x40001000:  0xdeadbeef                                    <- OK     === SIUL2 MIDR1 @ 0xFFFC0004 ===     0xfffc0004:  0x57483020  0x42004700                        <- PARTNUM 0x5748, OK     === code flash ===     0xfa0000:    0x00fa0000  0x00fa0004  0x00fa0008  0x00fa000c     0xfa0010:    0x00fa0010  0x00fa0014     0xf90000:    0x00f90000  0x00f90004  0x00f90008  0x00f9000c     0x1000000:   0x01000000  0x01000004 Every flash word reads back as its own address. That is not data, and not 0xFFFFFFFF as erased flash would read. RAM writes/reads, peripheral reads, and register reads all work correctly. The addresses tested are the ones from the example project's own linker script (Project_Settings/Linker_Files/linker_flash.ld):     flash_rchw      : org = 0x00FA0000, len = 0x4     FLASH_BASE_ADDR = 0x01000000     SRAM_BASE_ADDR  = 0x40000000 This appears to explain both symptoms. At reset the BAM fetches the RCHW from 0x00FA0000 in hardware, with no debugger involved, reads garbage, finds no valid boot header, and never starts application code. And blank check / CMD>VC are both flash reads, so programming fails. QUESTION Is there a documented recovery procedure for an MPC5748G in this state, for example a mass erase or flash controller re-initialization that does not require a preceding flash read? S32DS always performs the verify read first, which is the operation that hangs, so I have not been able to attempt a bare erase. If a standalone tool is the correct approach (PROGPPCNEXUS?), please advise. Otherwise, should this board be treated as defective? Thanks. Re: MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK Hello, Since you are able to read flash, I expect that device is good. Try to load simple example and debug it. For example one of these: https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/MPC5-software-example-list/ta-p/1102445#MPC5748G If no boot header is found in any of the locations mentioned above, the BAF determines the Life Cycle status of the device. If the Life Cycle is in CUST_DELIV (Customer Delivery) or MCU Production, it attempts a serial boot. Otherwise, the boot has failed and BAF issues a destructive reset Best regards, Peter Re: MPC5748G on SJA1105SMBEVM: code flash reads return address instead of data; RAM/peripherals OK Unable to read flash. Downloaded Example_MPC5748G_FlexCAN_RXFIFO_SDK303.zip, but the project fails to compile in S32DS. Used Claude to setup a simple "blinky" project that runs from RAM.  That loaded to the target board and ran just fine.  Then created a debug config to run from flash.  Launch stops at 98%.  Same exact issue as "sja1105smbevm_tc10example".  Debug launch hangs while trying to read from flash.  Last messages in console tab: Loading programming algorithm ... Done. Programming sequency is : erase, blank check, program, and verify {default} CMD>VC Verifying object file CRC-16 to device ranges ... block 00FA0000-00FA0003 ... Claude concludes: You now have about as thorough a diagnosis as you can get without opening the chip: - ✅ Probe, JTAG, reset, SRAM, clocks, pin mux, GPIO, UART, FreeRTOS scheduling, standalone RAM execution — all confirmed fully healthy (including running untethered from the debugger) - ❌ Flash programming hangs at the exact same address (0x00FA0000), every time, regardless of image size or content - ❌ Not a security/censorship lock (ruled out directly via PEmicro console — no secured-device warning) My conclusion: Hardware is defective. RETURNING.
記事全体を表示
カスタムボード上でECSPI1が期待されるSPIクロックを生成しない チームの皆さん、こんにちは。 私たちは、i.MX8MP EVK構成に基づいたi.MX8MPカスタムボードを使用しています。 i.MX8MP EVKでは、ECSPI2を通じてSPIデバイスを接続しています。既存のEVKデバイスツリー構成では、SPI通信は正常に動作しており、オシロスコープ上で期待されるSCLK波形を観測できます。 私たちのカスタムボードでは、SPIインターフェースがECSPI2ではなくECSPI1に接続されています。 そこで、デバイスツリーの設定をECSPI1を使用するように変更しました。しかし、ECSPI1では、SCLKピンで期待される/正しいSPIクロックパルスを観測することができません。 様々なデバイスツリー構成を試してみましたが、問題は解決しません。 1. 既存のECSPI2構成に類似したECSPI1 コントローラーをECSPI2からECSPI1に変更し、対応するECSPI1のpinctrlグループを作成しました。これにはSCLK、MOSI、MISO、CSが含まれます。 2. 別々のCS pinctrlグループ また、別のpinctrl_ecspi1_csを定義してECSPI1のpinctrlグループと組み合わせて使うことも試みました。 3. 明示的なECSPI1ピン多重化構成 ECSPI1のピンを明示的に定義することも試みました。 しかし、ECSPI1では、期待されるSPIクロックパルスを観測することができませんでした。 i.MX8MPでECSPI1を設定する際に、&ecspi1を有効にしてECSPI1のSCLK/MOSI/MISO/CSピンを設定する以外に、デバイスツリーやpinctrlの変更が必要かどうかを知りたいです。 特に、ECSPI1を正しく動作させるために、ECSPI1固有のpinctrl、clock、IOMUX、またはその他のデバイスツリー構成を追加する必要があるでしょうか? 同じSPI構成がECSPI2でも動作するため、インターフェースをECSPI2からECSPI1に移す際に追加設定が必要かどうかを理解したいです。ご指導ありがとうございます。 Re: ECSPI1 does not generate expected SPI clock on custom board こんにちは 、 添付ファイルにdtsファイルがありますのでご確認ください。 Re: ECSPI1 does not generate expected SPI clock on custom board こんにちは、 @SWETHA1さん ECSPI1に関するdtsファイルを共有してください。 B.R Re: ECSPI1 does not generate expected SPI clock on custom board こんにちは@pengyong_zhangさん 以下に観察結果を示します。 1. 提案された変更を適用した場合のロジックアナライザーの結果 SWETHA1_1-1786532293061.pngSWETHA1_1-1786532293061.pngSWETHA1_1-1786532293061.png 2. 以前に添付した dts の上に以下のパッチを使用した際のもう 1 つの観察結果 SWETHA1_0-1786532274946.pngSWETHA1_0-1786532274946.pngSWETHA1_0-1786532274946.png 上記のグラフはこの変化とともに観察されました pinctrl_ecspi1: ecspi1grp { FSL,ピン = < MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 0x80 MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 0x80 MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 0x80 >; }; 提案された変更により、時計は予想通りではない可能性があります。 Re: ECSPI1 does not generate expected SPI clock on custom board こんにちは、 @SWETHA1さん dtsファイルを確認したところ、以下のエラーが見つかりました。 1. ECSPIピンが再利用されたため、ピン使用の競合が発生しています。この部品を取り外すか、再利用のために別のピンを使用してください。     pinctrl_ecspi1: ecspi1grp {         fsl,pins = <             MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK       0x48             MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI       0x48             MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO       0x48         >;     };     pinctrl_uart3: uart3grp {         fsl,pins = <             MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX      0x140             MX8MP_IOMUXC_ECSPI1_MOSI__UART3_DCE_TX      0x140             MX8MP_IOMUXC_ECSPI1_SS0__UART3_DCE_RTS      0x140             MX8MP_IOMUXC_ECSPI1_MISO__UART3_DCE_CTS     0x140         >;     }; 2. ECSPI1のチップセレクト(CS)構成に矛盾があります。以下のコードに変更してください。     pinctrl_ecspi1_cs: ecspi1cs {         fsl,pins = <             MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09     0x40000         >;     }; B.R Re: ECSPI1 does not generate expected SPI clock on custom board 前回の回答にもう少し詳細を追加します。 観察結果1:提案されたDTS変更を適用した後に得られた結果。しかしながら、SPIクロック波形は依然として期待どおりではなく、SPI信号全体の挙動も期待される結果と一致しない。 観察2:MISOをフローティング状態にすると、CSに2つの望ましくないスパイクが現れますが、これは望ましい動作ではありません。CSは最初は低く抑えられます。CSをDTSを介してハイレベルに駆動するように設定した場合でも、最初は期待どおりハイレベルに駆動されますが、トランザクションが完了すると、CSは再びローレベルに戻ってしまうようです。 この件についてのご見解を共有し、今後の進め方を教えていただけませんか Re: ECSPI1 does not generate expected SPI clock on custom board こんにちは、 @SWETHA1さん 1. 最新のdtsファイルを共有してください。 2. SPIデバイスはどのようにテストしましたか?「spidev_test」ツールを使ってSPIテストを実行できます。`ls /dev/` コマンドの出力結果を共有してください。 B.R Re: ECSPI1 does not generate expected SPI clock on custom board こんにちは 共有観測値1および2に対応するdtsファイルを添付しましたのでご確認ください。 ls /dev の出力には/dev/spidev1.0と表示されます。 spideviceのテストについては、添付のcファイルを使い、spiがecspi2に接続されているEVKボードで動作することが確認されており、既存のpinctrlグループも使いました。 現在、検証結果はevkに基づいてカスタムボード上で取得され、spiがecspi1に接続されています。
記事全体を表示
FRDM-A-S32K358 引脚图详情 大家好, 我昨天刚购买了 FRDM-A-S32K358 开发套件。正在查找引脚定义详情。 我正在寻找类似文件 S32K144_pinout.png。感谢您的快速回复。 谢谢并致以诚挚的问候 斯里拉姆 Re: FRDM-A-S32K358 Pinout Details 你好VaneB 谢谢你提供的链接,这很有帮助。 Re: FRDM-A-S32K358 Pinout Details 你好@SriramEmbd FRDM-A-S32K358 没有对应的图像。但是,电路板原理图包含一个专门的页面,显示了 Arduino 接头的引脚分配。 原理图可在FRDM-A-S32K358 Design Files.zip软件包中找到。 BR,VaneB
記事全体を表示
FRDM-A-S32K358 Pinout Details Hello Community,  I just purchased the FRDM-A-S32K358 Development kit yesterday. looking for the Pin out details. I am looking for similar file S32K144_pinout.png. Appreciate your quick response Thanks and Regards Sriram Re: FRDM-A-S32K358 Pinout Details Hello VaneB Thank you for the link, this helps a lot. Re: FRDM-A-S32K358 Pinout Details Hi @SriramEmbd  There is no equivalent image available for the FRDM-A-S32K358. However, the board schematic includes a dedicated page that shows the pin assignments for the Arduino headers. The schematic is available in the FRDM-A-S32K358 Design Files.zip package. BR, VaneB
記事全体を表示