Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
LS1046A カスタムボード - FlexBuildで作成されたイメージは、DTの導管方法のためのpsci: probeingにハングします。 こんにちは、 私はLS1046Aをベースにしたカスタムボードを開発しているのですが、FlexBuildで生成したDebianイメージで起動時に問題が発生しています。 まず最初のステップとして、デフォルトのLS1046AFRWY BSPを一切変更せずにビルドし、自作の基板上でテストしました。カーネル起動中に、以下の出力後にシステムが必ずハングアップします。 PSCI:DTからの導管方法のプロービング。 カーネルパニックや例外は発生せず、システムはこの時点で停止する。 以下のNXPフォーラムのThreadで非常に似た問題を説明しているのを見つけました: https://community.nxp.com/t5/Layerscape/LS1043A-RDB-Linux-Hangs-At-PSCI/td-p/750075 一時的な回避策として、以下のコマンドを使ってU-Bootから手動でLinuxを起動できます。しかし、カーネルは、ブート引数「mem=」を使用して使用可能なメモリを1982MBに制限した場合にのみ正常に起動します。この値を増やすと、カーネルが再びハングアップします(起動中の異なるタイミングで発生することもあります)。 mmc dev 0 パートUUID mmc 0:3 パートUUIDr mmc 0:1 0x81000000 イメージをロードします ロード MMC 0:1 0x90000000 FSL-LS1046A-frwy-SDK.dtb setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=${partuuidr} rw rootwait mem=1982M" booti 0x81000000 - 0x90000000 テスト環境: SoC: LS1046A DDR: IS43/46QR16512A (4GB DDR4) ブートメディア:SDカード BSP: FlexBuild (LSDK 25.12) FlexBuild特有の問題を除外するために、Yocto(YP 6.0 / lf-6.18.20)を使って完全に新しいBSPを作成し、同じハードウェアでテストしました。 結果は全く同じだ。カーネルは再び出力後にハングアップします。 PSCI:DTからの導管方法のプロービング。 bdinfoの出力のうち、関連する部分を以下に示します。 DRAMバンク0 開始: 0x80000000 サイズ:0x7be00000 DRAMバンク1 開始: 0x880000000 サイズ:0x80000000 LMBメモリ領域: メモリ[0] :0x80000000 - 0xfbdfffff メモリ[1] :0x880000000 - 0x8ffffffff 予約済み[0] : 0xfac154c0 - 0xfbdfffff 予約済み[1] : 0x8ffff5000 - 0x8ffffffff 同様の問題に遭遇した方はいらっしゃいますか?あるいは、次に何を調査すべきかについて何かご提案があれば教えてください。 どんなアドバイスでも大変ありがたいです。 QorIQ LS1デバイス Re: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from こんにちは、 根本原因 — BL31メモリの衝突 LS1046Aの起動フローは以下のとおりです。 Boot ROM → BL2 (DDR Init) → BL31 (stays resident in DRAM) → U-Boot → Linux     BL31はDRAMに常駐し、すべてのSMC呼び出し(PSCI: psci_get_version 、CPUのオン/オフなど)を処理します。一般的な配置場所は、 RAMの最上位から約10MiB引いた領域付近で、サイズは最大2MiBです。   Linuxが4GBのDDRマップで起動すると、BL31のリージョンと物理的に重なるページが割り当てられます。最初の PSCI SMC 呼び出し ( psci_get_version ) が、すでに破損したメモリにジャンプし、システムはハングアップします。パニックも例外もなく、ただ沈黙するだけです。 bdinfo の出力は正確なパターンを確認しています。DDR バンク 1 は 0x8FFFFFFFF で終了し、BL31 は約 RAM_END - 10 MiB = 0x8FF600000 にあります。 DDR銀行 スタート 終了 備考 バンク0 0x80000000 0xFBDFFFFF ~1982 MiB —作業 mem= 制限 バンク1 0x880000000 0x8FFFFFFFF 2 GB 高銀行 — BL31 はここに住んでいます mem=1982M の回避策はLinuxをバンク0内に留め、BL31が存在するバンク1には一切触れません。これがまさに機能する理由です。 修正 — デバイスツリーでBL31メモリを予約する 正しい恒久的な解決策は、DTSに reserved-memory ノードを追加 し、BL31のリージョンをLinuxのメモリ割り当てでタブリングにすることです。 ステップ1:BL31がどこに積載されているかを確認する ATFビルド構成を確認してください( plat/nxp/soc-ls1046a/.../platform_def.h ) BL31_BASE と BL31_SIZE について。FRWY BSPを搭載したLSDK/lf-6.xの場合、一般的な配置は以下のとおりです。 BL31_BASE = 0x8FF80000 (top of high DDR bank minus ~512 KB to 2 MB) BL31_SIZE = max 2 MiB     実行時にU-Bootの出力やATFビルドログで BL31: v2.x... Entry point address = ... を確認することができます。 ステップ2:予約メモリノードをDTSに追加します ボードのDTSファイル( fsl-ls1046a-frwy-sdk.dts に基づく)に、以下を追加してください: / { reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* Reserve BL31 runtime region — adjust addresses to match your ATF build */ bl31_reserved: bl31@8ff600000 { reg = <0x8 0xff600000 0x0 0x00200000>; /* 2 MiB at RAM_END - 10 MiB */ no-map; }; }; }; dts   0x8ff600000 とサイズ 0x200000 を調整して、ATFビルドからの実際のBL31ロードアドレスに一致させてください。 ステップ3:フルメモリで再構築およびテストする 予約を追加した後、DTB を再構築し、 mem= 回避策 なしで 起動します。カーネルはその領域をスキップし、BL31はそのまま残り、PSCIは正しく機能します。   よろしくお願いします。
查看全文
LX2160A 上的 PCI 设备 ITS 设备 ID 你好, 我使用的是Honeycomb LX2板,它采用的是LX2160A芯片。我检查了uboot和linux代码,发现uboot中每个PCI BDF(桥接器和设备)都被分配了一个流ID,该ID被放入dtb中的msi-map文件中。 我假设 Linux 使用此流 ID 作为每个 PCI BDF 的 ITS 设备 ID,但是当我检查 Linux 代码drivers/irqchip/ irq-gic-v3-its-pci-msi.c时,ITS 特定的设备 ID 似乎只是 RID。 在我目前使用的系统中,BDF 的 ITS 设备 ID 是上游 PCI-PCI 桥的流 ID。此外,2 端口网卡上每个端口的 ITS 设备 ID 都相同。Linux 系统上也存在同样的问题吗? 请问有人能帮我确认一下Linux系统中PCI设备的ITS设备ID是如何计算的吗?以及网卡的两个端口是否应该共享同一个ITS设备ID?如果不是,那我的系统可能缺少什么呢? Re: ITS Device ID for PCI devices on LX2160A 我觉得这次讨论很有帮助。在 LX2160A 上使用 ITS 设备 ID 可能很棘手,尤其是在处理 PCI 中断路由和配置细节时。在研究类似技术主题时,我还发现了Citrus Court Resources ,它提供了组织良好的公共记录信息。感谢分享,能够看到其他使用相同硬件的人提供的实用见解总是很有帮助的。 Re: ITS Device ID for PCI devices on LX2160A 关于 LX2160A 上 PCI 设备的 ITS 设备 ID 的讨论非常有启发性,特别是对于从事中断转换和嵌入式系统工作的人来说。在查阅相关技术文档时,我还发现Bibb Court Clerk是一个获取有组织的公共信息的有用资源。感谢您分享这些见解,它们使一个复杂的话题更容易理解和进一步探讨。 Re: ITS Device ID for PCI devices on LX2160A 请另开新帖描述您的新问题。 谢谢! Re: ITS Device ID for PCI devices on LX2160A 我还有一个硬件方面的问题,希望您能帮我解决。 从调试信息来看,似乎是 PCI 到 PCI 桥接设备而不是 PCI 设备发送了消息信号中断,导致我看到了错误的 ITS 设备 ID。PCI 配置寄存器中的某些设置是否可能导致这种情况发生? 谢谢! Re: ITS Device ID for PCI devices on LX2160A 请参阅以下更新 我的理解是这样的: 1. PCIe 设备生成一条中断消息,其中包括其请求者 ID (RID)。 2. ITS 收到此消息后,使用 RID 查找相应的 StreamID。 3. ITS 然后将此信息转换为适合中断控制器的中断消息。 更具体地说, RID(由BDF组成)被ITS用于管理和转换中断。 StreamID 源自与 RID 相同的 BDF,由 SMMU 用于管理和转换 DMA 操作。 Re: ITS Device ID for PCI devices on LX2160A 请参考AE团队的以下更新。 这些问题更多地与 Linux 有关,因此客户可以在 Documentation/PCI/msi-howto.rst 中找到有关 PCI-PCI 桥接器背后的 MSI 分配的信息。 Re: ITS Device ID for PCI devices on LX2160A 谢谢你调查此事。ITS 设备 ID 与映射到 BDF 的 LUT 条目中编程的流 ID 之间是否存在任何关系? Re: ITS Device ID for PCI devices on LX2160A 与AE团队讨论。 Re: ITS Device ID for PCI devices on LX2160A LX2160A 上的 ITS 设备 ID 处理确实可能很棘手,尤其是在使用不同的 PCI 配置时。在研究类似主题时,我还通过Watauga Property Assessment找到了一些有用的房产数据,这些数据组织得很好。感谢分享这些信息,看到关于复杂硬件行为的实际讨论总是很有帮助的。
查看全文
LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from DT. Hello, I am working on a custom board based on the LS1046A and I am experiencing a boot issue with a Debian image generated using FlexBuild. As a first step, I built the default LS1046AFRWY BSP without making any modifications and tested it on my custom board. During kernel boot, the system always hangs after printing: psci: probing for conduit method from DT. There is no kernel panic or exception; the system simply stops at this point. I found the following NXP forum thread describing a very similar issue: https://community.nxp.com/t5/Layerscape/LS1043A-RDB-Linux-Hangs-At-PSCI/td-p/750075 As a temporary workaround, I can boot Linux manually from U-Boot using the following commands. However, the kernel only boots successfully when I limit the available memory to 1982 MB using the "mem=" boot argument. If I increase this value, the kernel hangs again (sometimes at different points during boot). mmc dev 0 part uuid mmc 0:3 partuuidr load mmc 0:1 0x81000000 Image load mmc 0:1 0x90000000 fsl-ls1046a-frwy-sdk.dtb setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=${partuuidr} rw rootwait mem=1982M" booti 0x81000000 - 0x90000000 Test environment: SoC: LS1046A DDR: IS43/46QR16512A (4 GB DDR4) Boot media: SD Card BSP: FlexBuild (LSDK 25.12) To rule out a FlexBuild-specific issue, I also built a completely new BSP using Yocto (YP 6.0 / lf-6.18.20) and tested it on the same hardware. The result is exactly the same. The kernel again hangs after printing: psci: probing for conduit method from DT. The relevant part of the bdinfo output is shown below: DRAM bank 0 Start: 0x80000000 Size : 0x7be00000 DRAM bank 1 Start: 0x880000000 Size : 0x80000000 LMB memory regions: memory[0] : 0x80000000 - 0xfbdfffff memory[1] : 0x880000000 - 0x8ffffffff reserved[0] : 0xfac154c0 - 0xfbdfffff reserved[1] : 0x8ffff5000 - 0x8ffffffff Has anyone encountered a similar issue or have any suggestions on what I should investigate next? Any advice would be greatly appreciated. QorIQ LS1 Devices Re: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from Hello, Root Cause — BL31 Memory Collision The LS1046A boot flow is: Boot ROM → BL2 (DDR Init) → BL31 (stays resident in DRAM) → U-Boot → Linux     BL31 remains permanently resident in DRAM and handles all SMC calls (PSCI: psci_get_version , CPU on/off, etc.). Its typical placement is near top-of-RAM minus ~10 MiB, with a size of up to 2 MiB.   When Linux boots with the full 4 GB DDR map, it allocates pages that physically overlap BL31's region. The first PSCI SMC call ( psci_get_version ) jumps into now-corrupted memory and the system hangs — with no panic, no exception, just silence. Your bdinfo output confirms the exact pattern — DDR Bank 1 ends at 0x8FFFFFFFF , and BL31 is at approximately RAM_END - 10 MiB = 0x8FF600000 : DDR Bank Start End Notes Bank 0 0x80000000 0xFBDFFFFF ~1982 MiB — your working mem= limit Bank 1 0x880000000 0x8FFFFFFFF 2 GB high bank — BL31 lives here The mem=1982M workaround keeps Linux within Bank 0, never touching Bank 1 where BL31 resides — which is precisely why it works. Fix — Reserve BL31 Memory in the Device Tree The correct permanent fix is to add a reserved-memory node to your DTS marking BL31's region as off-limits to the Linux memory allocator. Step 1: Find where BL31 is loaded Check your ATF build configuration ( plat/nxp/soc-ls1046a/.../platform_def.h ) for BL31_BASE and BL31_SIZE . For LSDK/lf-6.x with the FRWY BSP, the typical placement is: BL31_BASE = 0x8FF80000 (top of high DDR bank minus ~512 KB to 2 MB) BL31_SIZE = max 2 MiB     You can confirm at runtime by checking U-Boot output or the ATF build log for BL31: v2.x... Entry point address = ... . Step 2: Add the reserved-memory node to your DTS In your board DTS file (based on fsl-ls1046a-frwy-sdk.dts ), add: / { reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* Reserve BL31 runtime region — adjust addresses to match your ATF build */ bl31_reserved: bl31@8ff600000 { reg = <0x8 0xff600000 0x0 0x00200000>; /* 2 MiB at RAM_END - 10 MiB */ no-map; }; }; }; dts   Adjust 0x8ff600000 and size 0x200000 to match your actual BL31 load address from the ATF build. Step 3: Rebuild and test with full memory After adding the reservation, rebuild the DTB and boot without the mem= workaround. The kernel will skip that region, BL31 remains intact, and PSCI will function correctly.   Regards Re: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from Hello, I tried the suggested solution, but unfortunately it did not resolve the issue. First, I verified the BL31 address from the TF-A (ATF) build: - BL31_BASE = 0xFBE00000 - BL31_SIZE = 0x200000 (2 MiB) Next, I added a "reserved-memory" node to the Device Tree to reserve the BL31 runtime region and rebuilt the DTB. After that, I booted the system again without the "mem=1982M" boot parameter. However, the system still hangs at the same point.
查看全文
LS1046A 定制板 - 使用 FlexBuild 版本的映像在 psci 处卡住:正在从 DT 探测导管方法。 你好, 我正在开发一款基于 LS1046A 的定制板,在使用 FlexBuild 生成的 Debian 镜像时遇到了启动问题。 首先,我版本了默认的 LS1046AFRWY 电路板支持包。没有做任何修改,并在我的定制板上进行了测试。内核启动过程中,系统总是在打印以下内容后挂起: psci:从DT探测导管方法。 没有内核崩溃或异常;系统就此停止运行。 我在NXP论坛上找到了一个描述类似问题的帖子: https://community.nxp.com/t5/Layerscape/LS1043A-RDB-Linux-Hangs-At-PSCI/td-p/750075 作为临时解决方案,我可以使用以下命令从 U-Boot 手动启动 Linux。但是,只有当我使用“mem=”启动参数将可用内存限制为 1982 MB 时,内核才能成功启动。如果我增加这个值,内核又会挂起(有时在启动过程中的不同阶段)。 mmc dev 0 部分 uuid mmc 0:3 partuuidr 加载 mmc 0:1 0x81000000 图像 加载mmc 0:1 0x90000000 fsl-ls1046a-frwy-sdk.dtb setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=${partuuidr} rw rootwait mem=1982M" booti 0x81000000 - 0x90000000 测试环境: SoC:LS1046A DDR:IS43/46QR16512A(4 GB DDR4) 启动介质:SD卡 BSP:FlexBuild(LSDK 25.12) 为了排除 FlexBuild 特有的问题,我还使用 Yocto (YP 6.0 / lf-6.18.20) 构建了一个全新的 电路板支持包。,并在相同的硬件上进行了测试。 结果完全相同。内核在打印以下内容后再次挂起: psci:从DT探测导管方法。 下面显示的是bdinfo输出的相关部分: 动态随机存取存储器\(DRAM\) 存储体 0 起始地址:0x80000000 大小:0x7be00000 动态随机存取存储器\(DRAM\) 存储体 1 起始地址:0x880000000 大小:0x80000000 LMB 内存区域: 内存[0] :0x80000000 - 0xfbdfffff 内存[1] :0x880000000 - 0x8ffffffff 保留[0] : 0xfac154c0 - 0xfbdfffff 保留[1] : 0x8ffff5000 - 0x8ffffffff 有没有人遇到过类似的问题?或者有什么建议,让我接下来应该调查哪些方面? 任何建议都将不胜感激。 QorIQ LS1设备 Re: LS1046A Custom Board -image built with FlexBuild hangs at psci: probing for conduit method from 你好, 根本原因——BL31 内存冲突 LS1046A 的启动流程如下: Boot ROM → BL2 (DDR Init) → BL31 (stays resident in DRAM) → U-Boot → Linux     BL31 永久驻留在 动态随机存取存储器\(DRAM\) 中,并处理所有 SMC 调用(PSCI: psci_get_version 、CPU 开/关等)。它的典型位置在RAM 顶部减去约 10 MiB 的位置,大小可达2 MiB 。   当 Linux 使用完整的 4 GB DDR 映射启动时,它会分配与 BL31 区域物理重叠的页面。第一次 PSCI SMC 调用( psci_get_version )跳转到已损坏的内存,系统挂起——没有恐慌,没有异常,只有寂静。 您的 bdinfo 输出证实了确切的模式——DDR Bank 1 结束于 0x8FFFFFFFF ,而 BL31 大约位于 RAM_END - 10 MiB = 0x8FF600000 : DDR银行 开始 结束 说明 银行 0 0x80000000 0xFBDFFFFF ~1982 MiB —您的工作 mem= 限制 银行 1 0x880000000 0x8FFFFFFFF 2 GB 高位银行——BL31 位于此处 mem=1982M 变通方法使 Linux 保持在 Bank 0 内,永远不会触及 BL31 所在的 Bank 1——这正是它有效的原因。 修复——在设备树中预留 BL31 内存 正确的永久解决方法是在 DTS 中添加一个 reserved-memory 节点,将 BL31 区域标记为 Linux 内存分配器禁止访问。 步骤 1:找到 BL31 的加载位置 检查您的 ATF 版本配置( plat/nxp/soc-ls1046a/.../platform_def.h )对于 BL31_BASE 和 BL31_SIZE 。对于采用 FRWY 电路板支持包。的 LSDK/lf-6.x,典型的安装位置如下: BL31_BASE = 0x8FF80000 (top of high DDR bank minus ~512 KB to 2 MB) BL31_SIZE = max 2 MiB     您可以通过检查 U-启动 输出或 ATF 版本日志中的 BL31: v2.x... Entry point address = ... 。 步骤 2:将预留内存节点添加到您的 DTS 中 在您的板级 DTS 文件(基于 fsl-ls1046a-frwy-sdk.dts )中添加: / { reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* Reserve BL31 runtime region — adjust addresses to match your ATF build */ bl31_reserved: bl31@8ff600000 { reg = <0x8 0xff600000 0x0 0x00200000>; /* 2 MiB at RAM_END - 10 MiB */ no-map; }; }; }; dts   调整 0x8ff600000 和大小 0x200000 ,以匹配 ATF 版本中的实际 BL31 加载地址。 步骤 3:重建并使用全部内存进行测试 添加预留信息后,重新构建 DTB 并启动,无需 mem= 变通方法。内核将跳过该区域,BL31 保持不变,PSCI 将正常工作。   此致
查看全文
Schematics of MPC5775B BMS & VCU Reference Design Unit Hey, I wanted to look into which pins in the MPC5775B MCU is connected to the digital and analog outputs available via the BMS & VCU reference design. But could not find schematics on that. Can I get it or possibly the link to it ? I am trying to figure out which of the Inputs pins exposed through the reference unit can do interrupt handling. Re: Schematics of MPC5775B BMS & VCU Reference Design Unit Hello, Schematic is available at our web page: https://www.nxp.com/design/design-center/development-boards-and-designs/mpc5775b-bms-and-vcu-reference-design:RDVCU5775EVM?gad_source=1&gad_campaignid=24081577422&gclid=CjwKCAjwj7HTBhBiEiwA8s35OtHxPgln7wwf_p2BF5JDZ9GfWkdapC4yCnvxXk9Tp2NOHHSZHxyrSRoCk8IQAvD_BwE On page 12 are analog inputs and on page 14 digital inputs. Best regards, Peter
查看全文
MPC5775B 电池管理系统 & 整车控制器VCU 参考设计单元原理图 嘿, 我想了解 MPC5775B MCU 中的哪些引脚连接到电池管理系统和整车控制器VCU参考设计中提供的数字和模拟输出。但找不到相关的原理图。我可以得到它或者它的链接吗?我正在尝试弄清楚参考单元暴露出的哪些输入引脚可以进行中断处理。 Re: Schematics of MPC5775B BMS & VCU Reference Design Unit 你好, 原理图可在我们的网页上找到: https://www.nxp.com/design/design-center/development-boards-and-designs/mpc5775b-bms-and-vcu-reference-design:RDVCU5775EVM?gad_source=1&gad_campaignid=24081577422&gclid=CjwKCAjwj7HTBhBiEiwA8s35OtHxPgln7wwf_p2BF5JDZ9GfWkdapC4yCnvxXk9Tp2NOHHSZHxyrSRoCk8IQAvD_BwE 第 12 页是模拟输入,第 14 页是数字输入。 顺祝商祺! Peter
查看全文
MX8-DSI-OLED1 Display part No and sequence. Hi Team, We are planning to use MX8-DSI-OLED1 accessory in our custom board as well. Could you please share the display part no and if there is any power sequence to be maintained. Re: MX8-DSI-OLED1 Display part No and sequence. Hi Team, Any updates on this? Re: MX8-DSI-OLED1 Display part No and sequence. Hello, Could you share what kind of information you are looking for? The display for the MX8-DSI-OLED1A (raydium rm67199) is a MIPI-DSI OLED display with touch support. Following are some key features: • 5.49" FHD (1080p@60fps) AMOLED display • 16.7 M (RGB*8bits) display color • Touch screen • 4-lane MIPI-DSI interface for display • I2C interface for touch and control Also, note that for this part there is not much information we can share. Best regards/Saludos, Aldo. Re: MX8-DSI-OLED1 Display part No and sequence. Hi @AldoG I would like to understand if there is any power up sequence to be followed for these rails. VDD_1V8 VEXT_3V3 VDD_5V
查看全文
BMSおよびVCUリファレンスデザインユニットMPC5775B回路図 こんにちは、 MPC5775B MCUのどのピンがBMSやVCUのリファレンス・デザインで利用可能なデジタルおよびアナログ出力にコネクテッドされているかを調べたかったのです。しかし、その設計図は見つかりませんでした。入手できますか?もしくはリンクも教えてもらえますか?参照ユニットを通して露出している入力ピンのうち、どのピンが割り込み処理に使えるのかを調べようとしています。 Re: Schematics of MPC5775B BMS & VCU Reference Design Unit こんにちは、 回路図は当社のウェブページでご覧いただけます。 https://www.nxp.com/design/design-center/development-boards-and-designs/mpc5775b-bms-and-vcu-reference-design:RDVCU5775EVM?gad_source=1&gad_campaignid=24081577422&gclid=CjwKCAjwj7HTBhBiEiwA8s35OtHxPgln7wwf_p2BF5JDZ9GfWkdapC4yCnvxXk9Tp2NOHHSZHxyrSRoCk8IQAvD_BwE 12ページにはアナログ入力、14ページにはデジタル入力があります。 よろしくお願いいたします。 ピーター
查看全文
LX160A上のPCIデバイスのITSデバイスID こんにちは、 私はLX2160Aチップを搭載したHoneycomb LX2ボードを使用しています。ubootとLinuxのコードを調べたところ、uBootでは各PCI BDF(ブリッジやデバイス)にストリームIDが割り当てられており、それがdtbのmsiマップに入力されていることがわかりました。 LinuxはこのストリームIDを各PCI BDFのITSデバイスIDとして使っていると思いますが、Linuxコードやドライバ/irqchip/irq-gic-v3-its-pci-msi.c、ITS固有のデバイスIDはRIDのみのようです。 私が作業しているシステムでは、BDFのITSデバイスIDは、上流のPCI-PCIブリッジのストリームIDです。また、2ポートNICカードの各ポートのITSデバイスIDは同じです。Linuxでも同じようなケースですか? Linux上でPCIデバイスのITSデバイスIDがどのように計算されているのか、またNICカードの2つのポートが同じITSデバイスIDを共有するべきかどうか、誰か教えてもらえますか?もしそうでなければ、システムに何が欠けていたのでしょうか? Re: ITS Device ID for PCI devices on LX2160A この議論は参考になった。LX2160A上のITSデバイスIDを扱うのは、特にPCI割り込みのルーティングや設定の詳細を扱う際に難しいことがあります。同様の技術的なトピックを調べているうちに、 Citrus Court Resources という、整理された公的記録情報を提供するというサイトにも出会いました。この情報を共有していただきありがとうございます。同じハードウェアに取り組んでいる他の方々からの実践的な知見は、常に参考になります。 Re: ITS Device ID for PCI devices on LX2160A LX2160AにおけるPCIデバイスのITSデバイスIDに関する議論は、特に割り込み変換や組み込みシステムに携わる人にとって非常に有益です。関連する技術ドキュメントを調べる中で、 Bibb Court Clerk は組織化された公共情報にアクセスするための有用なリソースであることも感じました。これらの洞察を共有してくださりありがとうございます。複雑なテーマをより深く理解し、深く探求するのがとても簡単になりました。 Re: ITS Device ID for PCI devices on LX2160A 新しい問題については新しいThreadでどうぞ。 よろしくお願いします。 Re: ITS Device ID for PCI devices on LX2160A もっと作業に関わる問題があり、助けていただければと思っています。 デバッグの結果から判断すると、PCIデバイスではなくPCI-to-PCIブリッジデバイスがメッセージシグナル割り込みを送信しているため、誤ったITSデバイスIDが表示されている可能性があるようです。PCI設定レジスタにこの現象を引き起こす設定がある可能性はありますか? ありがとうございます Re: ITS Device ID for PCI devices on LX2160A 以下の更新情報をご参照ください。 私の理解では以下のとおりです。 1. PCIeデバイスは、要求者ID(RID)を含む割り込みメッセージを生成します。 2. ITSはこのメッセージを受信し、RIDを使用して対応するStreamIDを検索します。 3. ITSはこの情報を割り込みコントローラ向けの適切な割り込みメッセージに変換します。 SO、より具体的には、 BDFで構成されるRIDは、ITSによって割り込みの管理と翻訳に使用されます StreamIDはRIDと同じBDFから派生し、SMMUがDMA操作の管理と翻訳に使用します。 Re: ITS Device ID for PCI devices on LX2160A AEチームからの以下のアップデートをご参照ください。 これらの質問は主にLinuxに関するものなので、お客様はドキュメント/PCI/msi-howto.rstでPCI-PCIブリッジの背後にあるMSI割り当ての情報を見つけることができます。 Re: ITS Device ID for PCI devices on LX2160A 調べていただきありがとうございます。ITSデバイスIDと、BDFにマッピングされるLUTエントリにプログラムされているストリームIDとの間には、何らかの関係性がありますか? Re: ITS Device ID for PCI devices on LX2160A AEチームと話し合っています。 Re: ITS Device ID for PCI devices on LX2160A LX2160A上のITSのデバイスID処理は確かに難しいことがあります。特に異なるPCI構成を扱う場合です。同様のテーマを調べている中で、 Watauga Property Assessment を通じて有用な不動産データにも出会いました。とても整理されていました。この情報を共有していただきありがとうございます。複雑なハードウェアの動作に関する実践的な議論は、常に参考になります。
查看全文
S32K311 RTD 5.0 - Linker error: .non_cacheable_bss overflow and overlap with .int_results Hi NXP Team, I am working on an S32K311 project using the following environment: MCU: S32K311 IDE: S32 Design Studio 3.6.7 RTD: S32K3_RTD_5.0.0_D2408_ASR_REL_4_7_REV_0000_20241002 AUTOSAR: 4.7 Issue Initially, the project was building successfully. As the project progressed, I enabled and configured several RTD drivers, including ADC, eMIOS, LCU, ICU, PIT, PORT, LPUART, LPSPI, TRGMUX, MCL, and other required peripherals for my application. After integrating these drivers, the project now fails during the linking stage with the following errors: .non_cacheable_bss will not fit in region 'int_sram_no_cacheable' section .int_results overlaps section .non_cacheable_bss region 'int_sram_no_cacheable' overflowed by 440 bytes collect2.exe: error: ld returned 1 exit status Memory Layout The default linker script contains the following SRAM regions: int_sram : ORIGIN = 0x20400000, LENGTH = 0x00003F00 int_sram_fls_rsv : ORIGIN = 0x20403F00, LENGTH = 0x00000100 int_sram_no_cacheable : ORIGIN = 0x20404000, LENGTH = 0x00003B00 int_sram_results : ORIGIN = 0x20407B00, LENGTH = 0x00000100 int_sram_shareable : ORIGIN = 0x20407C00, LENGTH = 0x00000400 The linker reports that the .non_cacheable_bss section exceeds the allocated int_sram_no_cacheable region by approximately 440 bytes. Questions Is this memory usage expected when multiple RTD drivers are enabled on the S32K311? Is there a recommended method to reduce the size of .non_cacheable_bss? Is it recommended to modify the linker script and increase the int_sram_no_cacheable region? If so, what is the recommended memory layout for the S32K311? Are there any RTD configuration options that can reduce the memory allocated to non-cacheable sections? Has anyone encountered a similar issue when integrating multiple RTD peripherals? Any guidance or recommended solution would be greatly appreciated. Thank you. Re: S32K311 RTD 5.0 - Linker error: .non_cacheable_bss overflow and overlap with .int_results Hi @Esakki  You may find the following discussion threads helpful, as they discuss similar issues and provide some useful troubleshooting suggestions. int_sram_no_cacheable issue S32K312's SRAM is overflow Additionally, there is an S32K3 application note that explains the linker file and startup code in more detail, including how memory regions can be modified and customized. AN14893: S32K3xx Linker File and Startup Code This last thread includes some suggestions related to code optimization techniques. S32K3xx How to optimization APP code for get more high performance BR, VaneB
查看全文
S32K344 RTD 3.0.0:空の.slewRateCtrlSelLPSPI4ピン用に生成されました - ビルドが失敗します こんにちは、 私は、NXP RD33772C14EVMリファレンス・デザインに従ってSPI配線をしたS32K344(172ピンMQFP)カスタムボード上のバッテリー・マネジメントアプリケーションを紹介しています。私はS32 Design Studio 3.5とRTD 3.0.0を使っています(プラットフォーム、ポート、SPIモジュールはすべてSWバージョン3.0.0を報告しています)および FS26 SBC CDD 2.0.0 (Sbc_fs26)。私の出発点は、S32K344 用の Sbc_fs26_example_HLD サンプルです。 私のシステムではLPSPI0はFUTUREの2チャネルデイジーチェーン用に予約されており、他のSPIインスタンスはすでに使用中なので、FS26のSBCはLPSPI4上で動作しなければなりません。RD33772C14EVM回路図に従い、4つのLPSPI4信号をリファレンス・デザインで使われている同じパッドにルーティングしました:lpspi4_pcs0はPTB8、lpspi4_soutはPTB9、lpspi4_sckはPTB10、lpspi4_sinはPTB11に。ペリフェラル側ではSPIの物理ユニットマッピングをLPSPI_4に設定し、SpiHwUnitをCSIB0に残し、MCUコンポーネントのLPSPI_4ペリフェラルクロックゲートを有効にしました。 「Update Code」を実行してビルドすると、生成されたファイルgenerate/src/Siul2_Port_Ip_VS_0_PBcfg.cでエラーが発生してコンパイラが停止します。ジェネレーターは右辺のない代入式を生成しました。 ../generate/src/Siul2_Port_Ip_VS_0_PBcfg.c:118:34: エラー: ',' トークンの前に式が必要です 118 | .slewRateCtrlSel= 、 同じ空の.slewRateCtrlSel= は、158行目、198行目、238行目に現れます。これは、4つのLPSPI4ピンそれぞれに対応しています。手動でその4行にPORT_SLEW_RATE_NOT_AVAILABLEを入力すると、ビルドは少し進みますが、.inputMuxRegで同じように失敗します。= { (空の初期化子、「ISO C では空の初期化子の括弧は禁止されています」)。つまり、これら4つのパッドのピン構成構造は、有効なCではない空のフィールドで生成されます。 PTB8–PTB11のピンツール「ルーティング詳細」を見ると、スリューレートコントロール列(および入力フィルター列)に該当なしが表示され、スリューレートセルを選択するとツールチップが表示されます:「選択したピンはこの機能の設定をサポートしていません。スルーレート制御を選択します。SO、これらのパッドにはスルーレート制御ハードウェアが搭載されていないのです。私の理解では、そのCASEジェネレーターは他のサポートされていないパッド機能に対して*_NOT_AVAILABLE値を使うのと同様に、PORT_SLEW_RATE_NOT_AVAILABLEを放出するはずです(その値はこのデバイスのSiul2_Port_Ip_PortSlewRateControl枚数に存在します)。しかし実際には何も発信せず、ビルドが壊れます。 これがピンの選択の誤りではなくツールやドライバの問題だと確信する理由は、NXP自身のLVBMS_RD_Bring_up_ExampleがFS26 SBC用にまったく同じ4つのLPSPI4パッド(PTB8/PTB9/PTB10/PTB11)を使っていて、きれいに組み立てられることです。その例と私のプロジェクトで唯一の違いはRTDバージョンです。LVBMSの例はRTD 2.0.0(プラットフォーム/Port/Spi SW 2.0.0)に基づいて構築されているのに対し、私のプロジェクトはRTD 3.0.0を使っています。基板のピン配置は同じで、ピンも4本とも同じ、ピンの電気的特性も同一です(方向のみが両者で設定されています)。SO、スルーレート対応しないパッドのSiul2_Port_Ipコード生成がRTD 2.0.0とRTD 3.0.0の間で逆行したように見えます。 私の質問: これはRTD 3.0.0の既知の問題ですか?修正版/パッチ適用済みのRTDリリースはありますか? RTD 3.0.0環境下で、PTB8~PTB11(RD33772C14EVMピン配置)においてLPSPI4を正しく、かつサポートされている方法で構成するにはどうすればよいでしょうか?つまり、ピンツールが有効なコードを生成するようにするためです。つまり、slewRateCtrlSel = PORT_SLEW_RATE_NOT_AVAILABLEと有効なinputMuxRegを生成し、空欄ではなく? 設定レベルでの修正がない場合、生成された Siul2_Port_Ip_VS_0_PBcfg.c を手動で編集することが唯一の回避策でしょうか (「コードの更新」のたびに上書きされます)、それともプロジェクトを Port/RTD 2.0.0 に移行することが推奨される方法でしょうか? もし役に立つなら、完全なビルドログ、ピンの「ルーティング詳細」スクリーンショット(ツールチップ付き)、そして2つのプロジェクトのモジュールバージョンを並べて添付CAN。 ありがとう、 ソン・ヒョンシク Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails こんにちは、VaneBさん。 どうもありがとうございました。まさにそれが問題だったのです。ピンツールはLPSPI4(PTB8–PTB11)に更新されていましたが、 ポート コンポーネントのポートピンエントリは元のLPSPI0パッドを指していたため、PortPin Pcr(Mscr)の値は古くなっていました。 ポート設定内の4つのPortPin Pcr値を、新しいピン割り当てに合わせて更新しました。 PCS0 → PTB8 (PCR 40) SOUT → PTB9 (PCR 41) SCK → PTB10 (PCR 42) SIN → PTB11 (PCR 43) Update Codeを実行して再構築した後、空の .slewRateCtrlSel/ .inputMuxRegSiul2_Port_Ip_VS_0_PBcfg.c のエラーは解消され、プロジェクトは正常にビルドされます。 迅速かつ的確なご回答、本当にありがとうございました。おかげで大変時間を節約できました。これを解決策としてマークします。 よろしくお願いします、 ヒョンシク Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails こんにちは、 @hyunsiksong この問題は、RTD自体にも、S32DS構成ツールによって生成されたコードにも関係ありません。むしろ、それは設定に関係している。 ペリフェラルツール内のポートドライバ構成では、PortPin Mscrパラメータに割り当てられた値は元のプロジェクト構成に対応しています。例えば、プロジェクトは以前、PTB1をLPSPI0_PCS0として使用するように構成されており、これはPortPin Mscr = 33に対応します。 ただし、更新された構成ではLPSPI4が使用され、PCS0はピン8に再割り当てされています。したがって、対応するPortPin Mscrの値は33ではなく40になります。 すべてのピンについてPortPin Mscrを確認し、現在のピン割り当てと一致していることを確認してください。これらの値を新しい構成に合わせて更新することで、問題は解決するはずです。 BR、VaneB
查看全文
ITS Device ID for PCI devices on LX2160A Hello, I am using the Honeycomb LX2 board which uses the LX2160A chip. I have inspected the uboot and linux code and found that in uboot, each PCI BDFs (bridges and devices) are assigned a stream ID that is put into msi-map in the dtb.  I assume that Linux uses this stream ID as the ITS device ID for each PCI BDF though when I inspected the Linux code, drivers/irqchip/irq-gic-v3-its-pci-msi.c, the ITS specific deviceID seems to be just the RID. On the system that I am working on, the ITS device ID of the BDF is the stream ID of the PCI-PCI bridge upstream. Also, the ITS device ID of each port on a 2 port NIC card is the same. Is this the same case on Linux? Can someone help me confirm how the ITS device ID for PCI devices is calculated on Linux and if 2 ports of a NIC card should share the same ITS device ID? If not, what could have been possibly missing on my system? Re: ITS Device ID for PCI devices on LX2160A I found this discussion helpful. Working with ITS Device IDs on the LX2160A can be tricky, especially when dealing with PCI interrupt routing and configuration details. While researching similar technical topics I also came across Citrus Court Resources which offers well organized public record information. Thanks for sharing this and it’s always useful to see practical insights from others tackling the same hardware. Re: ITS Device ID for PCI devices on LX2160A The discussion around ITS Device IDs for PCI devices on the LX2160A is very informative, especially for anyone working with interrupt translation and embedded systems. While researching related technical documentation I also found Bibb Court Clerk to be a useful resource for accessing organized public information. Thanks for sharing these insights and they make a complex topic much easier to understand and explore further. Re: ITS Device ID for PCI devices on LX2160A Please address your new problem in a new thread. Thanks Re: ITS Device ID for PCI devices on LX2160A I have a more HW issue that I hope you can help me with. From debugs, it looks like it mgiht be the PCI-to-PCI Bridge Device that has been sending the Message Signaled Interrupts instead of the PCI devices causing me to see wrong ITS Device ID. Could there be any settings in the PCI config registers that may cause this to happen? Thanks, Re: ITS Device ID for PCI devices on LX2160A Please refer to the following update Here is my understanding: 1. The PCIe device generates an interrupt message including its Requester ID (RID). 2. The ITS receives this message and uses the RID to look up the corresponding StreamID. 3. The ITS then translates this information into an appropriate interrupt message for the interrupt controller. So more specifically, RID, which is composed of BDF, is used by ITS to manage and translate interrupts The StreamID, derived from the same BDF as the RID, is used by the SMMU to manage and translate DMA operations. Re: ITS Device ID for PCI devices on LX2160A Please refer to the following update from the AE team. Those questions are more about linux, so customer can find information how MSI assignment behind PCI-PCI bridge in Documentation/PCI/msi-howto.rst. Re: ITS Device ID for PCI devices on LX2160A Thanks for looking into this. Is there any relationship between the ITS device ID and the stream ID that is programmed into the LUT entries that is mapped to the BDF? Re: ITS Device ID for PCI devices on LX2160A Discussing with the AE team. Re: ITS Device ID for PCI devices on LX2160A Device ID handling for ITS on the LX2160A can definitely be tricky, especially when working with different PCI configurations. While researching similar topics I also came across useful property data through Watauga Property Assessment which was well organized. Thanks for sharing this information and it’s always helpful to see practical discussions on complex hardware behavior.
查看全文
Modbus RTU通信エラー 私はMC9S08JM60用のMODBUS RTU保持レジスタを読み取るためのコードを書いています。私は15個の保持レジスタを読み取っており、それによって35バイトのフレームが得られます。つまり、各バイトごとに1回の割り込みを受けることが期待されていますが、フレームの最初のバイトは1回、次の割り込みは次のフレームの最初のバイトに対してです。SO、残りの34バイトを失うことになります。これに関して何かご意見があればお聞かせください。 コードスニペットを添付します。 Re: Modbus RTU communication error こんにちは、 @An95さん 投稿ありがとうございます! S08にModbus RTUのドキュメントは存在します。 しかし、あなたが直面している問題はRDRFをクリアしていないことに関係している可能性があります。 RDRF(受信データレジスタ満杯)フラグは、SCI1S1を読み取った後にSCI1Dを読み取った場合にのみクリアされます。ISRでSCI1Dが読み取れない場合、割り込みは一度発生し、その後レシーバが停止します。 14.2.4を参照MC9S08JM60シリーズデータシートのSCIステータスレジスタ1(SCIxS1)。 コードがフラグを正しくクリアしていることを確認してください。 BR Re: Modbus RTU communication error こんにちは、 @carlos_o さん。 ご回答ありがとうございます。 RDRFフラグは、割り込みサービスルーチンのコールバック関数に入るとクリアされます。35バイトのフレームは、単一の割り込みで送られてきます。35バイトのバッファを使用しても、フレーム全体を読み込むことができません。 この件に関して、ご意見をお聞かせください。 BR
查看全文
FS6500 IO2_3/FCCU障害におけるデバッグモードと通常モード間の動作の不一致 こんにちは!   FS6500のIO2_3ピンはMCU FCCUに接続されています。   デバッグモードでは、FCCUの障害が1回発生すると、即座にリセットされます。   通常動作モードでは、FCCUの障害が1回発生すると、SBCはディープフェイルセーフ(DFS)モードに移行します。 この行動が予想されるものかどうか確認してもらえますか? 私の理解では、IO2_3の障害が発生すると、障害エラーカウンタが増加します。セーフティ応答(RSTBパルス、FS0Bアサーション、またはDFS遷移)は、フォールトエラーカウンターが設定済み閾値(3または6)を超えた場合にのみ行われます。 FS6500開発キット-MPC5744P Re: Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode こんにちは、ピーターさん。 ご説明いただき、ありがとうございました。   もう一つ質問があります。   FS6500のデータシートとRMを徹底的に検索しましたが、FCCUフォルトによって引き起こされるセーフティメカニズム戦略や対応するIMPACTレジスタ構成についてのドキュメントIO2_3ほとんど見当たりません。 以前は、故障IO2_3 Fault Error Counterが増加し、カウンターが閾値に達した後にセーフティ対策が適用されると思っていました。あなたの返信によると、IO2/IO3の故障がセーフティレスポンスを直接トリガーします。   マニュアルのどの章でIO2/IO3の直接セーフティ反作用の設定が説明されているか教えていただけますか? よろしくお願いいたします。 Re: Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode こんにちは、 この挙動は、SBCが両方のテストで同じ動作状態でない場合に予想されます。 以下の点を区別してください。 MCUのデバッグモード、例えばMPCデバイスに接続されたデバッガー、 FS6500のデバッグモードは、FS6500のDEBUGピンを介して起動します。 FS6500がデバッグモードの場合、ウォッチドッグは内部的に動作しますが、リセットピンやフェイルセーフピンをアサートすることによってデバイスの動作に影響を与えることはありません。したがって、デバッグ中に観察される挙動は、単独または通常の動作とは異なる場合があります。このモードは、SBCがシステムを継続的にリセットすることなくソフトウェアデバッグを可能にすることを目的としています。 通常動作時、FS6500フェイルセーフ状態機械は設定されたセーフティ入力や反応を監視します。IO_2/IO_3がMCU FCCUエラー出力監視に使用される場合、SBCはFCCUフォルトを検出し、設定されたリアクションを実行することができます。例えば、構成に応じてFS0B/RSTBのアサーションなどです。 したがって、デバッグモードとスタンドアロンモードの違いは必ずしもMCUのFCCUの問題ではありません。これはおそらくFS6500がデバッグモードに入っているか、両CASE間のSBC初期化・構成の違いが原因です。 障害エラーカウンタは、通常、ウォッチドッグ監視やフェイルセーフ状態機械処理などのメカニズムに関連付けられています。FCCUが報告したセーフティクリティカルな故障は、カウンタが閾値に達するまで蓄積されるのではなく、直接設定された反応をトリガーすべきです。 したがって、即時のセーフティ応答の観察された挙動は意図されたセーフティ概念と整合しています。 よろしくお願いいたします。 ピーター Re: Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode こんにちは、 重要な点は、FS6500はIO2/IO3 FCCUの監視を、他のほとんどの故障源とは異なる方法で処理するという点です。 この説明はFCCUの故障反応(IMPACT)表には記載されておらず、代わりにFS6500のフェイルセーフ故障マネジメントドキュメントに記載されています。 [[ ## completed ##]] FS6500のドキュメントによると、IO_23エラー検出(FCCU)は、常にフォールトエラーカウンターを増加させ、設定できないフォールトソースの一つとしてリストされています。ドキュメントでは、設定可能な故障源とは明確に区別されています。 したがって、IO2/IO3障害時に観測される動作は、設定可能なフェイルセーフ反応に使用されるIMPACTレジスタの設定のみによって制御されるわけではありません。IO2/IO3 FCCUモニターは、SBCの専用FCCU監視パスの一部であり、フェイルセーフ状態マシンによって処理されます。 確認すべき関連セクションはFS6500のドキュメント章 "故障エラーカウンター" で、以下のように記載されています。 [[ ## completed ##]] IO_23エラー検出(FCCU)は、障害エラーカウンタをインクリメントします。 この動作は設定変更できません。 https://docs.nxp.com/bundle/FS6500-FS4500-ASILD/page/topics/fault_error_counter.html よろしくお願いいたします。 ピーター
查看全文
Modbus RTU communication error I am writing code for MC9S08JM60 to read MODBUS RTU holding registers. I am reading 15 holding registers which gives me a 35 byte frame. So i am expected to get 1 interrupt for each byte but i am getting 1 interrupt for the first byte of the frame and next interrupt is for the first byte of the next frame. So I am losing the rest 34 bytes. Please provide any input for this. I am attaching my code snippets. Re: Modbus RTU communication error Hi @An95  Thank you for your post! There is any documentation of Modbus RTU with the S08. But the issue you are facing could be related to not clear the RDRF. The RDRF (Receive Data Register Full) flag is cleared only by reading SCI1D after reading SCI1S1. If SCI1D is not read in the ISR, the interrupt fires once and then the receiver stalls. Refer to 14.2.4 SCI Status Register 1 (SCIxS1) of the MC9S08JM60 Series Data Sheet. Make sure your code is clearing the flag correctly. BR Re: Modbus RTU communication error Hi @carlos_o , Thank you for your response. The RDRF flag is cleared when it enters the callback function of the interrupt service routine. The 35 byte frame is coming in a single interrupt. If I take a buffer of 35 bytes even then i am not able to read the whole frame. Please share your input regarding this. BR Re: Modbus RTU communication error I have changed my implementation to bare metal code still i am receiving only 1 byte. Please share any input. Re: Modbus RTU communication error Hi @An95  The SCI only could receive 1 byte each time RDRF is trigger. So, you will need to trigger 35 interrupts to read the 35 bytes you are sending.  You could refer to the chapter 14.3.3 Receiver Functional Description The SCI module only has one SCI Data Register (SCIxD) that could save 8 bits each time. 
查看全文
S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails Hello, I am bringing up a battery-management application on an S32K344 (172-pin MQFP) custom board whose SPI wiring follows the NXP RD33772C14EVM reference design. I am using S32 Design Studio 3.5 with RTD 3.0.0 (the Platform, Port and Spi modules all report SW version 3.0.0) and the FS26 SBC CDD 2.0.0 (Sbc_fs26). My starting point is the Sbc_fs26_example_HLD example for S32K344. In my system LPSPI0 is reserved for a future two-channel daisy-chain and the other SPI instances are already in use, so the FS26 SBC has to run on LPSPI4. Following the RD33772C14EVM schematic, I routed the four LPSPI4 signals to the same pads the reference design uses: lpspi4_pcs0 on PTB8, lpspi4_sout on PTB9, lpspi4_sck on PTB10 and lpspi4_sin on PTB11. On the peripheral side I set the SPI physical-unit mapping to LPSPI_4, left SpiHwUnit at CSIB0, and enabled the LPSPI_4 peripheral-clock gate in the Mcu component. After running "Update Code" and building, the compiler stops with errors in the generated file generate/src/Siul2_Port_Ip_VS_0_PBcfg.c. The generator has produced an assignment with no right-hand side: ../generate/src/Siul2_Port_Ip_VS_0_PBcfg.c:118:34: error: expected expression before ',' token 118 | .slewRateCtrlSel = , The same empty .slewRateCtrlSel = , appears at lines 158, 198 and 238 — one for each of the four LPSPI4 pins. If I manually fill those four lines with PORT_SLEW_RATE_NOT_AVAILABLE, the build gets a little further and then fails the same way on .inputMuxReg = { (empty initializer, "ISO C forbids empty initializer braces"). In other words, the pin-configuration structures for these four pads are generated with empty fields that are not valid C. When I look at the Pins tool "Routing Details" for PTB8–PTB11, the Slew Rate Control column (and the Input Filter column) shows n/a, and selecting the Slew Rate cell shows the tooltip: "The selected pin does not support the configuration of this feature. Selects the slew rate control." So these particular pads simply have no slew-rate-control hardware. My understanding is that in that case the generator should emit PORT_SLEW_RATE_NOT_AVAILABLE (that value does exist in the Siul2_Port_Ip_PortSlewRateControl enum on this device), the same way it uses *_NOT_AVAILABLE values for other unsupported pad features — but instead it emits nothing, which breaks the build. What convinces me this is a tool/driver problem rather than a wrong pin choice is that NXP's own LVBMS_RD_Bring_up_Example uses the exact same four LPSPI4 pads (PTB8/PTB9/PTB10/PTB11) for the FS26 SBC and builds cleanly. The only difference I can find between that example and my project is the RTD version: the LVBMS example is built on RTD 2.0.0 (Platform/Port/Spi SW 2.0.0), while my project uses RTD 3.0.0. Same board pinout, same four pins, and the pin electrical features are identical (only direction is set in both). So it really looks like the Siul2_Port_Ip code generation for slew-rate-unsupported pads regressed between RTD 2.0.0 and RTD 3.0.0. My questions: Is this a known issue in RTD 3.0.0, and is there a fixed / patched RTD release? What is the correct, supported way to configure LPSPI4 on PTB8–PTB11 (the RD33772C14EVM pinout) under RTD 3.0.0 so that the Pins tool generates valid code — i.e. slewRateCtrlSel = PORT_SLEW_RATE_NOT_AVAILABLE and a valid inputMuxReg, instead of empty fields? If there is no configuration-level fix, is editing the generated Siul2_Port_Ip_VS_0_PBcfg.c by hand the only workaround (it is overwritten on every "Update Code"), or is moving the project to Port/RTD 2.0.0 the recommended path? I can attach the full build log, the Pins "Routing Details" screenshot with the tooltip, and a side-by-side of the two projects' module versions if that helps. Thank you, Hyunsik Song Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails Hi VaneB, Thank you very much — that was exactly the problem. The Pins tool had been updated to LPSPI4 (PTB8–PTB11), but the Port component's PortPin entries were still pointing at the original LPSPI0 pads, so the PortPin Pcr (Mscr) values were stale. I updated the four PortPin Pcr values in the Port configuration to match the new pin assignment: PCS0 → PTB8 (Pcr 40) SOUT → PTB9 (Pcr 41) SCK → PTB10 (Pcr 42) SIN → PTB11 (Pcr 43) After running Update Code and rebuilding, the empty .slewRateCtrlSel / .inputMuxReg errors in Siul2_Port_Ip_VS_0_PBcfg.c are gone and the project builds cleanly. I really appreciate the quick and precise answer — it saved me a lot of time. Marking this as the solution. Best regards, Hyunsik Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails Hi @hyunsiksong  This issue is not related to the RTD itself, nor with the code generated by the S32DS Configuration Tools. Instead, it is related to the configurations. In the Port driver configuration within the Peripheral Tool, the values assigned to the PortPin Mscr parameters still correspond to the original project configuration. For example, the project was previously configured to use PTB1 as LPSPI0_PCS0, corresponds to PortPin Mscr = 33. In the updated configuration, however, LPSPI4 is being used and PCS0 has been reassigned to pin 8. Therefore, the corresponding PortPin Mscr value should be 40 instead of 33. Review the PortPin Mscr for all the pins and ensure they match the current pin assignments Updating these values to reflect the new configuration should resolve the issue. BR, VaneB
查看全文
Modbus RTU 通信错误 我正在编写代码,使 MC9S08JM60 能够读取 MODBUS RTU 保持寄存器。我正在读取 15 个保持寄存器,得到一个 35 字节的帧。因此,我预期每个字节都会收到 1 个中断,但我收到的中断是帧的第一个字节,而下一个中断是下一帧的第一个字节。所以剩下的 34 字节就丢失了。请提供任何意见。 我附上了我的代码片段。 Re: Modbus RTU communication error 嗨@An95 感谢您的帖子! 是否有关于S08的Modbus RTU文档? 但您遇到的问题可能与未清除 RDRF 有关。 只有在读取 SCI1S1 之后读取 SCI1D 才能清除 RDRF(接收数据寄存器已满)标志。如果在 ISR 中未读取 SCI1D,则中断触发一次,然后接收器停止运行。 请参阅 14.2.4 节MC9S08JM60 系列数据手册中的 SCI 状态寄存器 1 (SCIxS1)。 请确保你的代码能够正确清除标志位。 BR Re: Modbus RTU communication error 嗨@carlos_o , 感谢您的回复。 当程序进入中断服务例程的回调函数时,RDRF 标志将被清除。35 字节的帧通过单个中断传入。即使我使用 35 字节的缓冲区,也无法读取整个帧。 请分享您对此的看法。 BR
查看全文
S32K311 RTD 5.0 - リンカーエラー: .non_cacheable_bss.int_resultsとのオーバーフローおよび重複 こんにちは、NXP チームの皆様、 私は以下の環境を使用してS32K311プロジェクトに取り組んでいます。 MCU: S32K311 IDE: S32 Design Studio 3.6.7 RTD: S32K3_RTD_5.0.0_D2408_ASR_REL_4_7_REV_0000_20241002 AUTOSAR: 4.7 問題 当初、プロジェクトは順調にビルディングされていました。 プロジェクトが進むにつれて、ADC、eMIOS、LCU、ICU、PIT、PORT、LPUART、LPSPI、TRGMUX、MCLなど、いくつかのRTDドライバを有効化・設定し、アプリケーションに必要なその他のペリフェラルを活用しました。 これらのドライバを統合した後、プロジェクトはリンク段階で以下のエラーで失敗します。 .non_cacheable_bss will not fit in region 'int_sram_no_cacheable' section .int_results overlaps section .non_cacheable_bss region 'int_sram_no_cacheable' overflowed by 440 bytes collect2.exe: error: ld returned 1 exit status メモリレイアウト デフォルトのリンカスクリプトには、以下のSRAM領域が含まれています。 int_sram : ORIGIN = 0x20400000, LENGTH = 0x00003F00 int_sram_fls_rsv : ORIGIN = 0x20403F00, LENGTH = 0x00000100 int_sram_no_cacheable : ORIGIN = 0x20404000, LENGTH = 0x00003B00 int_sram_results : ORIGIN = 0x20407B00, LENGTH = 0x00000100 int_sram_shareable : ORIGIN = 0x20407C00, LENGTH = 0x00000400 リンカーは、 .non_cacheable_bssがこのセクションは、割り当てられた int_sram_no_cacheable 領域を約440 バイト超過しています。 質問 複数のRTDドライバがS32K311で有効になっている場合、このメモリ使用は予想されますか? .non_cacheable_bssのサイズを減らすための推奨方法はありますか? リンカースクリプトを修正してint_sram_no_cacheable領域を増やすことは推奨されますか?もしそうなら、S32K311の推奨メモリ配置はどうなっていますか? キャッシュできないセクションに割り当てられるメモリを減らすRTDの設定オプションはありますか? 複数のRTDペリフェラルを統合する際に同じような問題に遭遇した方はいらっしゃいますか? 何かご助言や解決策をご提案いただければ大変ありがたいです。 よろしくお願いします。 Re: S32K311 RTD 5.0 - Linker error: .non_cacheable_bss overflow and overlap with .int_results こんにちは、 @Esakkiさん 以下のディスカッションThreadは、似たような問題を扱い、有用なトラブルシューティングの提案を提供してくれるので役立つかもしれません。 int_sram_no_cacheable の問題 S32K312のSRAMがオーバーフローする さらに、S32K3のアプリケーションノートには、リンカーファイルやスタートアップコードについてより詳しく説明されており、メモリ領域の変更やカスタマイズ方法も含まれています。 AN14893 : S32K3xx リンカーファイルとスタートアップコード この最後のThreadでは、コード最適化技術に関するいくつかの提案が含まれています。 S32K3xxでAPPのコードを最適化してパフォーマンスを向上させる方法 BR、VaneB
查看全文
S32K344 RTD 3.0.0:空 .slewRateCtrlSel为 LPSPI4 引脚生成 — 版本失败 你好, 我正在 S32K344(172 引脚 MQFP)定制板上开发一个电池管理应用程序,该板的 SPI 布线遵循 NXP RD33772C14EVM 参考设计。我正在使用 S32 Design Studio 3.5 和 RTD 3.0.0。(平台、端口和 Spi 模块均报告软件版本为 3.0.0)以及 FS26 SBC CDD 2.0.0 (Sbc_fs26)。我的出发点是 S32K344 的 Sbc_fs26_example_HLD 示例。 在我的系统中,LPSPI0 已预留给未来的双通道菊花链,而其他 SPI 实例已被使用,因此 FS26 SBC 必须在 LPSPI4 上运行。按照 RD33772C14EVM 原理图,我将四个 LPSPI4 信号连接到参考设计使用的相同焊盘:lpspi4_pcs0 连接到 PTB8,lpspi4_sout 连接到 PTB9,lpspi4_sck 连接到 PTB10,lpspi4_sin 连接到 PTB11。在外围设备方面,我将 SPI 物理单元映射设置为 LPSPI_4,将 SpiHwUnit 设置为 CSIB0,并在 Mcu 元器件中启用了 LPSPI_4 外围时钟门。 运行“更新代码”并构建后,编译器停止运行,生成的文件 generate/src/Siul2_Port_Ip_VS_0_PBcfg.c 出现错误。生成器生成的赋值语句没有右侧等式: ../generate/src/Siul2_Port_Ip_VS_0_PBcfg.c:118:34: 错误:应在逗号 (,) 前插入表达式 118 | .slewRateCtrlSel=, 同样的空 .slewRateCtrlSel等号出现在第 158、198 和 238 行——分别对应四个 LPSPI4 引脚。如果我手动将这四行填充为 PORT_SLEW_RATE_NOT_AVAILABLE,版本会继续进行下去,然后在 .inputMuxReg 处以相同的方式失败。= {(空初始化器,“ISO C 禁止空初始化器大括号”)。换句话说,这四个焊盘的引脚配置结构生成的字段为空,这不是有效的 C。 当我查看 PTB8–PTB11 的“引脚”工具“布线详情”时,“转换速率控制”列(以及“输入滤波器”列)显示为“n/a”,选择“转换速率”单元格时,工具提示显示:“所选引脚不支持此功能的配置。”选择转换速率控制。所以这些特殊的垫子根本没有转换速率控制硬件。我的理解是,在这种情况下,生成器应该发出 PORT_SLEW_RATE_NOT_AVAILABLE(该值确实存在于此设备的 Siul2_Port_Ip_PortSlewRateControl 枚举中),就像它对其他不支持的 pad 功能使用 *_NOT_AVAILABLE 值一样——但它却什么也没发出,这导致版本失败。 让我确信这是工具/驱动程序问题而不是引脚选择错误的原因在于,NXP 自己的 LVBMS_RD_Bring_up_Example 使用了完全相同的四个 LPSPI4 焊盘(PTB8/PTB9/PTB10/PTB11)来构建 FS26 SBC,并且版本构建顺利。我发现该示例与我的项目之间唯一的区别是 RTD 版本:LVBMS 示例基于 RTD 2.0.0(平台/端口/Spi 软件 2.0.0),而我的项目使用 RTD 3.0.0。电路板引脚排列相同,四个引脚相同,引脚的电气特性也相同(两者仅方向设置不同)。所以看起来,RTD 2.0.0 和 RTD 3.0.0 之间,Siul2_Port_Ip 代码生成对于不支持压摆率的 pad 确实出现了倒退。 我的问题: 这是RTD 3.0.0中的已知问题吗?是否有已修复/已打补丁的RTD版本? 在 RTD 3.0.0 版本下,配置 PTB8–PTB11(RD33772C14EVM 引脚排列)上的 LPSPI4 的正确且受支持的方法是什么?这样,引脚工具就能生成有效的代码——例如,slewRateCtrlSel = PORT_SLEW_RATE_NOT_AVAILABLE 和一个有效的 inputMuxReg,而不是空字段? 如果没有配置级别的修复,手动编辑生成的 Siul2_Port_Ip_VS_0_PBcfg.c 是唯一的解决方法吗(每次“更新代码”都会覆盖它),还是将项目迁移到 Port/RTD 2.0.0 是推荐的方案? 如果需要,我可以附上完整的构建日志、带有工具提示的引脚“布线详情”屏幕截图,以及两个项目模块版本的并排对比图。 谢谢你, 宋炫植 Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails 嗨 VaneB, 非常感谢——问题果然出在这里。Pins 工具已更新为 LPSPI4 (PTB8–PTB11),但Port元器件的 PortPin 条目仍然指向原始的 LPSPI0 焊盘,因此 PortPin Pcr (Mscr) 值已过时。 我已将端口配置中的四个 PortPin Pcr 值更新为与新的引脚分配相匹配: PCS0 → PTB8 (Pcr 40) SOUT → PTB9 (Pcr 41) SCK → PTB10(Pcr 42) SIN → PTB11 (Pcr 43) 运行更新代码并重新构建后,.slewRateCtrlSel 文件为空。/ .inputMuxRegSiul2_Port_Ip_VS_0_PBcfg.c 中的错误已消失,项目可以顺利构建。 我非常感谢您快速而准确的答复——这为我节省了很多时间。标记为解决方案。 此致, 炫植 Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails 你好@hyunsiksong 这个问题与 RTD 本身无关,也与 S32DS 配置工具生成的代码无关。相反,它与配置有关。 在外设工具的端口驱动程序配置中,分配给 PortPin Mscr 参数的值仍然与原始项目配置相对应。例如,该项目之前配置为使用 PTB1 作为 LPSPI0_PCS0,对应于 PortPin Mscr = 33。 然而,在更新后的配置中,使用的是 LPSPI4,并且 PCS0 已重新分配给引脚 8。因此,相应的 PortPin Mscr 值应为 40 而不是 33。 检查所有引脚的 PortPin Mscr,确保它们与当前的引脚分配匹配。更新这些值以反映新的配置应该可以解决问题。 BR,VaneB
查看全文
Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode Hi!   The IO2_3 pin of FS6500 is connected to the MCU FCCU.   In DEBUG mode, one single FCCU fault trigger leads to an immediate reset.   In Normal operating mode, one single FCCU fault trigger causes the SBC to enter Deep Fail-Safe (DFS) mode. Could you help confirm whether this behavior is expected? My understanding: The IO2_3 fault will increment the Fault Error Counter. The safety responses (RSTB pulse, FS0B assertion or DFS transition) should only take place once the Fault Error Counter exceeds the configured threshold (3 or 6). FS6500 DEVKIT-MPC5744P  Re: Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode Hi Peter, Thanks a lot for your clarification.   I have a further question.   I searched the FS6500 datasheet and RM thoroughly, yet there is little documentation introducing the safety mechanism strategy triggered by IO2_3 FCCU fault, as well as the corresponding IMPACT register configuration. Previously I thought IO2_3 fault will increment the Fault Error Counter, and safety actions take effect after the counter hits the threshold. According to your reply, IO2/IO3 fault triggers safety response directly.   Could you tell me which chapter of the manual covers the configuration of direct safety reaction for IO2/IO3? Best regards Re: Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode Hello, This behavior can be expected if the SBC is not in the same operating condition in both tests. Please distinguish between: MCU debug mode, for example debugger attached to the MPC device, and FS6500 debug mode, which is entered through the FS6500 DEBUG pin. When the FS6500 is in debug mode, the watchdog still runs internally, but it does not affect device operation by asserting reset or fail-safe pins. Therefore, the behavior observed during debug can differ from standalone/normal operation. This mode is intended to allow software debugging without the SBC continuously resetting the system. In normal operation, the FS6500 fail-safe state machine monitors the configured safety inputs/reactions. If IO_2/IO_3 are used for the MCU FCCU error output monitoring, then an FCCU fault can be detected by the SBC and the configured reaction can be executed, for example assertion of FS0B/RSTB depending on the configuration. So the different behavior between debug and standalone mode is not necessarily an MCU FCCU issue. It is most likely caused by the FS6500 being in debug mode, or by a difference in the SBC initialization/configuration between the two cases. The Fault Error Counter is typically associated with mechanisms such as watchdog supervision and fail-safe state machine handling. A safety-critical fault reported by the FCCU should trigger its configured reaction directly rather than being accumulated until the counter reaches its threshold. Therefore, the observed behavior of an immediate safety response is consistent with the intended safety concept. Best regards, Peter Re: Behaviour discrepancy of FS6500 IO2_3/FCCU fault between Debug mode and Normal mode Hello, The key point is that the FS6500 treats IO2/IO3 FCCU monitoring differently from most other fault sources. The description is not located in the FCCU fault-reaction (IMPACT) tables, but rather in the FS6500 fail-safe fault management documentation. According to the FS6500 documentation, IO_23 error detection (FCCU) is listed among the fault sources that always increment the Fault Error Counter and cannot be configured out. The documentation explicitly separates it from the configurable fault sources. Therefore, the behavior observed with an IO2/IO3 fault is not governed solely by the IMPACT register settings that are used for configurable fail-safe reactions. The IO2/IO3 FCCU monitor is part of the dedicated FCCU supervision path of the SBC and is handled by the fail-safe state machine. The relevant section to review is the FS6500 documentation chapter "Fault error counter", which states: IO_23 error detection (FCCU) increments the Fault Error Counter. This behavior is not configurable. https://docs.nxp.com/bundle/FS6500-FS4500-ASILD/page/topics/fault_error_counter.html Best regards, Peter
查看全文