Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
i.MX8M-Plus RDC Sema42 用于簇内隔离 我想使用 i.MX8M-Plus 上的 RDC 来隔离 A53 集群中的核心。是否可以使用 RDC 信号量来禁止 A53 集群中的某些 CPU 访问外围设备? 参考手册 IMX8MPRM Rev 3 对门寄存器 RDC_SEMAPHOREx_GATEn 中的 GTFSM 字段的工作方式没有完全说明(第 3.2.6.1 节)。它有 2 位用于指示锁定域,4 位用于指示哪个“处理器”正在锁定信号量。 这里的“处理器”是指集群(例如A53、M7)还是集群中的一个核心? 如果 A53 集群上的 core0 将信号量锁定到 UART1,core1...3 还能访问 UART1 吗? Re: i.MX8M-Plus RDC Sema42 for intra-cluster isolation 否。 在 i.MX8M Plus 上,RDC 信号量“处理器”是总线主控/RDC 主控,而不是单独的 A53 内核。对于远程桌面连接 (RDC) 而言,A53 集群显示为一个 A53 平台功能域。A53 四核集群被视为一个单一的主功能域,这意味着所有四个 A53 核心(core0–core3)都属于同一个 RDC 功能域。因此,Sema42 信号量的 GTFSM 字段标识的是哪个功能域(例如,A53 簇与 M7 核心)持有锁,而不是簇内的哪个单个核心。 因此,如果 A53 core0 锁定 UART1 的信号量,则 A53 core1–3 不会单独被该 RDC 信号量阻塞。如果它们在同一个 A53/RDC 功能域中,它们仍然可以访问 UART1。 对于集群内核心隔离,您需要依赖软件级机制(例如操作系统级资源管理或自旋锁),而不是硬件 RDC/Sema42。 Re: i.MX8M-Plus RDC Sema42 for intra-cluster isolation 谢谢你的回复。 i.MX 8QuadMax 有两个核心复合物(A53 和 A72)。是否可以使用 xRDC2 将这两个复合物区分开来? Re: i.MX8M-Plus RDC Sema42 for intra-cluster isolation 是的,A53 与 A72 隔离是一个有效的用例,前提是将它们建模为单独的 SCFW 资源分区并相应地分配资源。这与试图将 A53 core0 与 A53 core1 隔离不同,xRDC2 的设计目的并非如此。
記事全体を表示
NXP S32 設定ツール ポートピンを追加する方法 こんにちは、みんな。 私は最近、プロジェクトでFRDM オートモーティブ S32K344 開発ボードとsimulink(MBDT)を使い始めました。 しかし、ポートピンを追加しようとすると、ポートピン/ポートコンテナを増やすオプションがないため、問題が発生します。 設定のどこが問題なのか、あるいはまずやるべきことがあるのか教えてもらえますか? Rizqu_0-1789455084038.png Re: NXP S32 Config Tools How to add more port pin こんにちは、 @Rizqu さん。 ポート/ピンコンテナは手動で管理されません。つまり、ピンを追加する場合は、「ピン」ビューで設定する必要があり、その設定内容はポート/ピンコンテナに自動的にリンクされます。 ポート構成は機能グループ名とリンクされています。詳細は以下のコミュニティスレッドを参照してください。 官能基の問題 ポートコンテナと機能グループの問題 解決済み:ペリフェラルの設定 - NXPコミュニティ S32プラットフォームIDE用のS32 Design Studioにおける機能グループを理解するためのリソース もしMBDTに関してさらに問題がある場合は、モデルベース設計ツールボックス(MBDT)- NXPコミュニティにご質問を提出してください。 よろしくお願いします、 ジュリアン
記事全体を表示
LPC55S28 CASPER ECC 乘法执行时间 我正在尝试弄清楚下面的代码是否应该在我测量的时间内执行完毕,或者我的设置是否出错导致它运行速度非常慢。这段代码是使用 kCASPER_ECC_P256 从给定的私钥生成公钥的函数的一部分。 以下代码使用 GPIO 开关来测量执行时间。设置和清除 GPIO 调用之间需要 337 毫秒。对于这种硬件加速的数学运算来说,这个速度似乎太慢了。这是预期之内的吗?我的MCU核心时钟频率为148MHz。有没有办法选择 CASPER 引擎的时钟源来加快速度? /* Base Generator Point G(x, y) for secp256r1 in 32-bit Little-Endian word arrays */ static const uint32_t G_x_le[8] = { 0xD898C296, 0xF4A13945, 0x2DEB33A0, 0x77037D81, 0x63A440F2, 0xF8BCE6E5, 0xE12C4247, 0x6B17D1F2 }; static const uint32_t G_y_le[8] = { 0x37BF51F5, 0xCBB64068, 0x6B315ECE, 0x2BCE3357, 0x7C0F9E16, 0x8EE7EB4A, 0xFE1A7F9B, 0x4FE342E2 }; uint32_t scalar_le[8]; uint32_t Q_x_le[8]; uint32_t Q_y_le[8]; /* Copy Big-Endian private scalar and convert to Little-Endian for CASPER */ memcpy(scalar_le, key_buffer, 32); swap_endian_32((uint8_t *)scalar_le); /* 1. Initialize CASPER coprocessor */ CASPER_Init(CASPER); CASPER_ecc_init(kCASPER_ECC_P256); HW_DB_PinSet(); /* 2. Compute Q = d * G using CASPER hardware */ CASPER_ECC_SECP256R1_Mul( CASPER, Q_x_le, Q_y_le, G_x_le, G_y_le, scalar_le ); HW_DB_PinClear(); 回复: LPC55S28 CASPER ECC Multiply Execution Time 嗨@guitardenver 我们使用 MCUXpresso SDK CASPER 示例在运行频率为 150 MHz 的 LPC55S28 EVK 上测量了相同的操作。对 CASPER_ECC_SECP256R1_Mul() 的一次调用大约需要 2410 万个 CPU 周期,相当于大约 160 毫秒的执行时间。 根据这一结果,您应用程序中测得的 337 毫秒似乎并不算不合理,特别是如果考虑到额外的密钥格式化、数据转换、初始化或调试版本开销的话。 CASPER 不提供单独的用户可配置时钟源。执行时间主要取决于使用 CASPER 加速器的 ECC 软件实现。 BR 哈里 Re: LPC55S28 CASPER ECC Multiply Execution Time 你可以做以下几件事。但是,我没有在这个MCU上看到CASPER引擎的任何可配置时钟选项。 1. 使用 O2 优化来提高速度 2.启用 Flash 加速器预取和等待状态优化。 SYSCON -> FMCCR |= SYSCON_FMCCR_PREFEN_MASK ;   之后我把它降到了160毫秒。   Re: LPC55S28 CASPER ECC Multiply Execution Time 我正在尝试弄清楚下面的代码是否应该在我测量的时间内执行,或者我是否设置了某些限制。 嘿!即使使用 P256,对于 148MHz 的 MCU 来说,硬件加速的 ECC 操作耗时 337 毫秒也确实有点高。你调查这件事是件好事。有时驱动程序开销或时钟问题可能会悄悄出现。您是否检查过 CASPER 引擎的具体时钟源,或者是否有任何关于优化其性能的可用文档?
記事全体を表示
LPC55S28 CASPER ECC Multiply Execution Time I am trying to figure out if the below code is expected to execute within the time I'm measuring or if I have something set up wrong and it's making it very slow. This code is part of a function that generates a Public Key from given private key using kCASPER_ECC_P256. The below code uses a GPIO toggle to measure execution time. Between the Set and Clear GPIO calls, it takes 337mS. Which seems slow for hardware accelerated math for this operation. Is this expected? My MCU has a core clock of 148MHz. Is there a way to choose the clock source for the CASPER engine to speed this up? /* Base Generator Point G(x, y) for secp256r1 in 32-bit Little-Endian word arrays */ static const uint32_t G_x_le[8] = { 0xD898C296, 0xF4A13945, 0x2DEB33A0, 0x77037D81, 0x63A440F2, 0xF8BCE6E5, 0xE12C4247, 0x6B17D1F2 }; static const uint32_t G_y_le[8] = { 0x37BF51F5, 0xCBB64068, 0x6B315ECE, 0x2BCE3357, 0x7C0F9E16, 0x8EE7EB4A, 0xFE1A7F9B, 0x4FE342E2 }; uint32_t scalar_le[8]; uint32_t Q_x_le[8]; uint32_t Q_y_le[8]; /* Copy Big-Endian private scalar and convert to Little-Endian for CASPER */ memcpy(scalar_le, key_buffer, 32); swap_endian_32((uint8_t *)scalar_le); /* 1. Initialize CASPER coprocessor */ CASPER_Init(CASPER); CASPER_ecc_init(kCASPER_ECC_P256); HW_DB_PinSet(); /* 2. Compute Q = d * G using CASPER hardware */ CASPER_ECC_SECP256R1_Mul( CASPER, Q_x_le, Q_y_le, G_x_le, G_y_le, scalar_le ); HW_DB_PinClear(); 回复: LPC55S28 CASPER ECC Multiply Execution Time Hi @guitardenver  We measured the same operation using the MCUXpresso SDK CASPER example on an LPC55S28 EVK running at 150 MHz. A single call to CASPER_ECC_SECP256R1_Mul() required approximately 24.1 million CPU cycles, corresponding to about 160 ms execution time. Based on this result, the measured 337 ms in your application does not appear unreasonable, especially if additional key formatting, data conversion, initialization, or debug-build overhead is included. CASPER does not provide a separate user-configurable clock source. The execution time is primarily determined by the ECC software implementation that utilizes the CASPER accelerator. BR Harry Re: LPC55S28 CASPER ECC Multiply Execution Time There are a couple things you can do.  But I do not see any configurable clock options for CASPER engine on this MCU. 1. Use O2 optimizations for speed 2. Enable the Flash accelerator prefetch and wait state optimization.  SYSCON->FMCCR |= SYSCON_FMCCR_PREFEN_MASK;   After this I am able to get it down to 160mS   Re: LPC55S28 CASPER ECC Multiply Execution Time I am trying to figure out if the below code is expected to execute within the time I'm measuring or if I have something set up  Hey there! That 337ms for a hardware-accelerated ECC operation definitely sounds a bit high for a 148MHz MCU, even with P256. It's good you're looking into it. Sometimes driver overhead or clocking issues can sneak in. Have you checked the CASPER engine's specific clock source or any available documentation on optimizing its performance?
記事全体を表示
I.MX95 LVDSクロック出力は変更できません こんにちは、みんな、 Q1: カーネルのlf-6.12yでシングルポートのLVDSディスプレイを作っています。ドライバ/GPU/drm/panel/panel-simple.cで自分でパネル設定を追加しましたが、クロックピンを測定しているときはいつも150MHz前後でした。しかし、他の信号は正常に機能していた。 しかし、lf-6.18yではクロック出力は正しくでき、デュアルポートモードではクロック変更も両バージョンで問題ありません。これは既知の問題でしょうか、それとも私のミスでしょうか?なぜなら、いくつかの理由でこの問題をlf-6.12yで解決できればと思っているからです。 以下は私の設定です panel-simple.c: static const struct display_timing lt9211_test_timing = { .pixelclock= { 35916000, 35916000, 35916000 }, .hactive= { 280, 280, 280 }, .hfront_porch= { 40, 40, 40, }, .hback_porch= { 60, 60, 60 }, .hsync_len= { 30, 30, 30 }, .vactive= { 1424, 1424, 1424 }, .vfront_porch= { 15, 15, 15 }, .vback_porch= { 17, 17, 17}, .vsync_len= { 4, 4, 4 }, .フラグ= DISPLAY_FLAGS_DE_HIGH、 }; static const struct panel_desc lt9211_test = { タイミング= &lt9211_test_timing、 .bpc= 8、 .num_timings= 1、 。サイズ= { 。幅= 292、 。身長= 111、 }、 .bus_format= MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA、 .bus_flags= DRM_BUS_FLAG_DE_HIGH、 .connector_type= DRM_MODE_CONNECTOR_LVDS、 }; デバイスツリー内の私の lvds 設定 &{/}{ lvds1_panel { //compatible = "3ascreen,sa123hwv-l51"; compatible = "lt9211_test"; バックライト = <&lvds_backlight>; ステータス = "正常"; ポート { panel_in: エンドポイント { リモートエンドポイント = <&lvds1_out>; }; }; }; Q2: 特定の条件下では、同じハードウェア内でデータレーンとクロック間でLVDSの共通電圧が整列しないこともあります。あるいは、LVDS1のD3Pには信号があるがD3Nには信号がないなど、何らかの信号が欠落している場合もある。なぜこうなったのか、何かアイデアはありますか?一部のプログラムがこれを引き起こす可能性はありますか? Q3: どんな設定でもLVDSのクロック位相をシフトできますか? よろしくお願いします。 Re: I.MX95 LVDS clock output can not be changed Q1: これはおそらくあなたのパネルではなく、既知のlf-6.12y LVDSクロックドライバーの制限やバグである可能性が高いです。タイミングのミス。シングルポートのLVDSでは、ドライバ/クロック経路が約148.5/150に強制または丸められている可能性が高いですMHzlf-6.18yが動作するため、実用的な解決策はLVDS/LDBクロックの変更をlf-6.18yからlf-6.12yにバックポートするか、6.12y LVDSドライバー/PLLクロックテーブルをパッチして35.916 MHzピクセルクロックを可能にすることです。 git diff lf-6.12.y..lf-6.18.y -- \ ドライバ/GPU/DRM/ブリッジ/IMX/IMX95-LDB.C ドライバ/phy/freescale/phy-fsl-imx8mp-lvds.c ドライバ/clk/imx/clk-imx95-blk-ctl.c \ arch/arm64/boot/dts/freescale/imx95.dtsi \ arch/arm64/boot/dts/freescale/imx95-*-lvds* Q2: 例えばD3Pには信号があるのにD3Nに信号がない場合、通常はパネルタイミングが原因ではありません。チェック: LVDSチャネルのイネーブルメント:LVDS0/LVDS1のミスマッチ fsl、データ幅 / fsl、データマッピング PHYイネーブルメント コネクタまたは基板の断線/短絡 はんだ付けの問題 終端/プロービング方法 LVDS出力ピンが損傷している可能性があります ソフトウェアが誤ったチャネル/レーン/データ幅設定を引き起こすことがありますが、差動ペアの片側が欠けているとハードウェア、パッド、ルーティング、終端、または測定の問題を強く示唆しています。 Q3: i.MX8MP LVDSの場合、LVDSのクロック位相をシフトするための通常のデバイスツリー構成はありません。クロック周波数、タイミング、PHY設定を修正してください。 Re: I.MX95 LVDS clock output can not be changed 本当にありがとうございます。 LVDSパッチはとても役に立ちます。
記事全体を表示
iMX DDR 配置工具代码生成错误 || iMX95 大家好, 我们目前正在使用NXP 配置工具进行 i.MX95 DDR 配置,但在生成 DDR 初始化/时序代码时遇到了问题。 我们为以下目标创建/打开了 DDR 配置: 处理器: MIMX9596xxxxN 核心: Cortex-M33 内存类型: LPDDR5 - Ryzen RS2G32LO5D4FDB-23BT DDR 数据速率: 6400 MT/s 排名人数: 2 16 位通道数: 2 DRAM配置: 16Gb:2Gb x8 该工具显示的总动态随机存取存储器(DRAM)容量为: 16384 MB 首先,我们尝试使用NXP i.MX95 19x19 EVK 默认 LPDDR5 配置来验证 DDR 配置,然后再应用我们自定义的板 DDR 设置。 但是,当我们尝试生成/更新 DDR 代码时,“配置工具”的“问题”窗口中会报告错误: “生成代码失败……” 代码预览窗口显示: “代码生成失败。” 问题截图已附上,供您参考: Screenshot from 2026-09-15 11-40-00.pngScreenshot from 2026-09-15 11-40-00.png截图来自 2026-09-15 11-40-00.png Re: iMX DDR Config Tool Code Generation Error || iMX95 你好, 请您尽快核实并提供该问题的最新进展?目前项目时间紧迫,非常感谢您的及时支持。 Re: iMX DDR Config Tool Code Generation Error || iMX95 你好, 我已附上 .mex 文件。文件供您参考,但我们将使用 8GB LPDDR5 Rayson RS2G32LO5D4FDB-23BT。 Re: iMX DDR Config Tool Code Generation Error || iMX95 请您将 IMX95LPD5EVK-19.mex 文件发送给我进行验证。 Re: iMX DDR Config Tool Code Generation Error || iMX95 你好, 是的,我们已经下载并安装了您提到的同一版本。我们目前使用的是该工具的Linux版本。我附上了截图供您参考。 Screenshot from 2026-09-15 15-56-04.pngScreenshot from 2026-09-15 15-56-04.png截图来自 2026-09-15 15-56-04.png Re: iMX DDR Config Tool Code Generation Error || iMX95 你安装了Config_Tools_for_i.MX_26.06_x64 吗?是最新版本 26.06 吗? 你使用的是Linux版本吗?我使用的是Windows版本。 请您将 IMX95LPD5EVK-19.mex 文件发送给我进行验证。 Re: iMX DDR Config Tool Code Generation Error || iMX95 你好, 问题依然存在。即使保存了 .mex 文件文件已保存到本地磁盘,但代码并未生成。当我点击“更新代码”时,该工具抛出错误“代码生成失败”。 Screenshot from 2026-09-15 15-31-15.pngScreenshot from 2026-09-15 15-31-15.png截图来自 2026-09-15 15-31-15.png Screenshot from 2026-09-15 15-36-58.pngScreenshot from 2026-09-15 15-36-58.png截图来自 2026-09-15 15-36-58.png Re: iMX DDR Config Tool Code Generation Error || iMX95 1.我下载并安装了 Config_Tools_for_i.MX_26.06_x64。 2. 我创建了一个新的配置,在“板卡”下选择“IMX95LPD5EVK-19”。启用 DDR 工具并选择它。 3. 点击“文件->保存”将此项目保存到磁盘。然后“更新代码”功能可用。 4. 点击“更新代码”按钮,我这边没有错误。 yipingwang_0-1789463155201.pngyipingwang_0-1789463155201.pngyipingwang_0-1789463155201.png Re: iMX DDR Config Tool Code Generation Error || iMX95 在 Ubuntu 24.04 上必须安装此版本配置工具。 我可以在 Ubuntu 22.04 上重现您的问题。 然后我在 Ubuntu 24.04 操作系统上安装了 configs tool 26.06,它运行正常。
記事全体を表示
S32 设计工作室平台 + SW32G2 + RTD 版本选择 我参考了《S32G-VNP-RDB2 软件启用指南》,建议的软件版本为 SW32G2_S32DS_3.4.0_D2012.zip + S32DS.3.4_b201217_win32.x86_64.exe + 实时驱动程序 S32_RTD_4.4_1.0.0_HF01_D2102_DS_Updatesite.zip。 但我实际下载的是 S32DS.3.4_b201217_win32.x86_64.exe +SW32G2_S32DS_3.4.1_D2104.zip +SW32G_RTD_4.4_3.0.2_HF01_DS_updatesite_D2204.zip。 当我尝试添加新的 RGB LED 灯并打开外设工具时,它会显示“外设:[SDK] 更新代码失败 - 代码生成失败”。我不确定不同的软件版本组合是否会导致这些错误。 Re: S32 Design Studio Platform + SW32G2 + RTD version selection 你好, guang1994 我会内部回复你。 BR 乔伊
記事全体を表示
S32K358 about Cache operation 我在S32DS 中编写S32K358 的程序,建立OTA 升级程序需要操作内部FLASH,当调用上述函数时,我能够编译通过,但是CTRL+鼠标左键却无法找到上述函数,这是正常现象吗?  屏幕截图 2026-09-15 141928.png 屏幕截图 2026-09-15 141953.png Re: S32K358 about Cache operation 嗨@sunshine88 , 您能尝试重建索引吗? danielmartynek_0-1789469464382.pngdanielmartynek_0-1789469464382.png 谢谢! BR,丹尼尔
記事全体を表示
FRDM-IMX93:Linux 无法访问 LPSPI3 寄存器(读取设备内存时出现总线错误)——外部 SPI 设备 摘要 我正在尝试在 FRDM-IMX93 板的P11 EXPI 接头上使用LPSPI3在 GPIO_IO08-11 上启动两个外部 MCP2515 CAN 控制器(Waveshare 2-CH CAN HAT,已确认在真正的 Raspberry Pi 上工作)(引脚与 UM12181 表 21 中 Raspberry Pi 兼容接头的位置相匹配)。 在修复了我能找到的所有设备树级问题(电源、引脚复用、片选、引脚控制断言-GPIO)之后,SPI 时钟 (SCK)始终无法在物理接头引脚上切换,并且直接读取 LPSPI3 块的寄存器会导致总线错误。另一个已知工作正常的外部设备(LPUART1)可以从相同的地址空间正常读取数据。这表明存在资源/总线访问限制(RDC 或类似限制),而不是 Linux 设备树中可以修复的问题。 板/软件 开发板:FRDM-IMX93(恩智浦),SoC:MIMX9352CVVXMAB BSP:NXP i.MX 发布发行版,内核版本 6.18.2-1.0.0-gf49f45233f7b 目标外设:lpspi3(spi@42550000,别名在 /aliases 中为 spi2,通过 /proc/device-tree/__symbols__ 确认实际 dts 标签为 lpspi3) 被测外部设备:CS0/CS1 上的 2 个 MCP2515(Waveshare 2 通道 CAN HAT) 已确认有效(已排除) 给排气歧管供电。reg_vexp_3v3 / reg_vexp_5v 是默认禁用的调节器固定节点(regulator_summary 显示 use=0)。通过覆盖片段添加了 regulator-always-on + regulator-boot-on,目标为 &reg_vexp_3v3 / &reg_vexp_5v(通过 __symbols__ 确认了真实标签)。事后验证 P11 上实际存在 3.3 V / 5 V 电压。 Pinmux。使用 imx93-pinfunc.h 中的官方宏,GPIO_IO08‑11 已正确复用到 LPSPI3_PCS0/SIN/SOUT/SCK。对于这三个函数,input_reg/input_val 均为 0x0000/0x0,因此不需要 DAISY 链选择(通过宏检查排除,不需要单独的寄存器)。 芯片选择。cs-gpios = , (位操作 GPIO CS,与 NXP 针对此节点的上游板级支持模式相匹配)。通过 cat /sys/kernel/debug/gpio 和万用表/逻辑分析仪确认: CS0 切换正常,并且物理上连接到了接头引脚。 pinctrl-assert-gpios。NXP自己的上游 &lpspi3 参考中包含 pinctrl-assert-gpios = <&pcal6408 0 GPIO_ACTIVE_HIGH>;(此行并未出现在大多数公开指南中,仅出现在板自己的 dts 补丁中)。已添加;通过 /proc/device-tree/__symbols__ 确认 pcal6408 已解析,并通过 cat /sys/kernel/debug/gpio 确认,一旦请求 lpspi3 的默认 pinctrl 状态,GPIO 就会被钳位(输出 hi)。 覆盖层涂抹顺畅。U-Boot 的 fdt apply 没有出现 FDT_ERR_NOTFOUND;/sys/bus/spi/devices/ 显示 SPI 内核已注册 spi2.0 和 spi2.1。 ERR051608(LPSPI TCR[PRESCALE] 勘误)。已检查 spi-fsl-lpspi.c历史记录——该修复(fsl、imx93-spi 的 prescale_max = 1)已于 2024 年 8 月合并到主线版本 / 稳定版 6.6.51。& 6.10.10 2024 年 9 月,远早于此内核版本 (6.18.2),并且兼容字符串 (fsl,imx93-spi) 已存在于主板 dts 中,因此驱动程序应该自动应用此限制。虽然不能完全排除这种可能性(没有直接的注册确认实际写入了 PRESCALE 字段),但时间线强烈表明此事已经处理完毕。 实际症状 使用万用表探测物理 P11 引脚上的 CS0/CS1、MISO、MOSI、SCK,然后使用逻辑分析仪以 10–20 MSa/s 的采样率在 CS0 下降沿触发,同时不断重试传输(在循环中使用 spidev_test,以及通过 echo spi2.0 > /sys/bus/spi/drivers/mcp251x/bind 反复强制 mcp251x 重新探测): CS0切换。经万用表和逻辑分析仪验证。 SCK 从不切换。平坦,无任何活动,无论持续尝试转移。 MOSI 从不切换。 两个 MCP2515 的故障情况完全相同:mcp251x spi2.0/spi2.1:MCP251x 在复位后未进入配置模式 / 探测失败,错误代码为 110 (ETIMEDOUT) — 即驱动程序自身的 SPI 级复位 + 读取 CANSTAT 序列未得到响应,这与 SCK 从未离开 SoC 的情况一致。 根本原因已缩小到时钟/总线访问,而非设备树。   # clk_enable_count is 0 despite the controller actively being used $ cat /sys/kernel/debug/clk/clk_summary | grep -i lpspi3 lpspi3_root 0 0 0 50000000 0 0 50000 N deviceless no_connection_id lpspi3 0 0 0 50000000 0 0 50000 N 42550000.spi per 即使 42550000.spi(真正的、绑定的消费者)正在循环中积极尝试传输,lpspi3 的功能(每个)时钟也显示 enable_count=0——它并非只是“未使用”(与 lpspi1/2/4 相比,它们是无设备的,也显示 0,因此仅凭这一点并不能得出结论)。 决定性的测试——通过 devmem 直接读取寄存器:   $ devmem 0x44380000 32 # LPUART1 base — known-good peripheral 0x04040007 $ devmem 0x42550000 32 # LPSPI3 base (VERID register) Bus error (core dumped) 一个完全无关的、工作正常的外部设备(LPUART1,用于调试控制台)可以从相同的 CPU/总线上下文中正常读取数据。LPSPI3 的基地址在普通的 32 位读取中就会出现故障,甚至在任何时钟门控或引脚复用考虑之前就会发生这种情况。这看起来像是资源域控制器 (RDC) 或类似的访问控制机制,在硬件级别阻止 Cortex-A55 (Linux) 域访问此外围设备的地址范围,而与 Linux 设备树中的任何可配置项无关。 向恩智浦提出的问题 FRDM-IMX93 上的 LPSPI3 是否故意保留给另一个功能域(例如,该板默认的 RDC 配置中包含 Cortex-M33 / secure world 内核,导致在 Linux 系统下,如果不进行额外的 SPL/ATF/TF-A 级重新配置,则无法使用该内核? 如果是这样,是否有记录在案的方法将 LPSPI3 总线访问权限重新分配给 Cortex-A55 非安全域(U-Boot SPL 中的 RDC 配置,或 OP-TEE/TF-A 更改),或者尽管 GPIO_IO08-11 已引出,但此板的 P11 接头上根本不支持外部 SPI? 这是我的板/内核版本特有的问题,还是默认 FRDM-IMX93 电路板支持包的已知特性?如果存在参考文件 imx93-11x11-frdm-lpspi.dts(类似于 EVK 的 imx93-11x11-evk-lpspi.dts),将会非常有帮助。 如何重现 底板 dtb:随 i.MX 版本 发行版镜像一起提供的标准 imx93-11x11-frdm.dtb(未修改的 NXP lpspi3 + pcal6408 + reg_vexp_3v3/reg_vexp_5v 节点 — 全部通过 __symbols__ 确认存在)。 应用上述覆盖层(regulator always‑on, pinctrl + cs‑gpios + pinctrl‑assert‑gpios on &lpspi3)。 手动将 spidev(内置,CONFIG_SPI_SPIDEV=y)绑定到 spi2.0:   echo spidev > /sys/bus/spi/devices/spi2.0/driver_override echo spi2.0 > /sys/bus/spi/drivers/spidev/bind spidev_test -D /dev/spidev2.0-s 1000000 -v — 传输“成功”(无 I/O 错误),但即使 MOSI/MISO 物理短路,RX 数据也不是 TX 的环回。 devmem 0x42550000 32 → 总线错误。 如果需要,我很乐意提供完整的 overlay 源代码、dmesg 和 clk_summary/gpio 转储。
記事全体を表示
問題: IMX_SEC_ENCLAVE の依存関係と解放後使用を修正する Hello これは、GitHub のこのプルリクエストのフォローアップです。 提供されたパッチは最終的に適用されなかったようで、lf-6.18.y には含まれていません。 Kconfigコミットは、NVMEM_IMX_OCOTP_SCUがmである場合にエンクレイブドライバがyになれないようにするためで、プローブのディフェースを回避するために必要です。 そうしないと、こうなります。 root@colibri-imx8x-14985125:~# dmesg -l err [ 1.708145] rtc-ds1307 1-0068: hctosys: unable to read the hardware clock [ 2.072996] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.078636] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.084513] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 2.111555] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.117209] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.123110] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 2.141671] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.147303] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.153200] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 2.171418] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.177065] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.182929] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 5.744448] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 5.750217] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 5.756186] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 5.877660] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 5.888247] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 5.894232] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 10.324138] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 10.349783] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 10.374692] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 11.731697] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 11.738134] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 11.747692] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.284910] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.295720] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.307723] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.410541] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.426771] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.443446] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.644550] debugfs: '5f1a0000.phy' already exists in 'regmap' [ 12.655906] debugfs: '5f1a0000.phy' already exists in 'regmap' [ 12.670039] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.688813] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.696063] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.765923] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.775810] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.786887] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.839515] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.847285] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.853801] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.936721] nvmem imx-scu-ocotp0: cell mac raw len 6 unaligned to nvmem word size 4 [ 12.951328] nvmem imx-scu-ocotp0: cell mac raw len 6 unaligned to nvmem word size 4 [ 13.708903] genpd_provider mu_a1: failed to power off resource 214 ret -22 [ 16.701904] Bluetooth: hci0: unexpected event for opcode 0x0000 root@colibri-imx8x-14985125:~# 2回目のコミットではドライバにリファクタリングが行われており、NXPが対応しているかはわかりません コミット9703dfecc735(「LF-15802: ドライバ: ファームウェア: imx: SEドライバーの削除を修正」) SEチームに確認してもらえますか? よろしくお願いいたします フランツ Re: ISSUE: fix dependency for IMX_SEC_ENCLAVE and use-after-free こんにちは、 まだ解決していないようですので、社内のソフトウェアチームに確認して確認します。 よろしくお願いいたします。 アルド。
記事全体を表示
iMX DDR設定ツールのコード生成エラー || iMX95 チームの皆さん、こんにちは。 現在、 i.MX95 DDR構成のためにNXP Config Toolsを使用していますが、DDR初期化/タイミングコードの生成時に問題が発生しています。 以下のターゲットに対してDDR構成を作成/開きました。 プロセッサ: MIMX9596xxxxN コア: Cortex-M33 メモリタイプ: LPDDR5 - Ryzen RS2G32LO5D4FDB-23BT DDRデータレート: 6400 MT/s ランク数: 2 16ビットチャネル数: 2 DRAM構成: 16Gb:2Gb x8 ツールが表示するDRAMの総容量: 16384MB まず、独自のボードDDR設定を適用する前に、NXP i.MX95 19x19 EVKのデフォルトのLPDDR5構成を使用してDDR構成を検証しようとしています。 しかし、DDRコードを生成/更新しようとすると、Config Toolsの「問題」ウィンドウにエラーが表示されます。 コードの生成に失敗しました… コードプレビューウィンドウには以下が表示されます。 コード生成に失敗しました。 問題のスクリーンショットを参考資料として添付します。 Screenshot from 2026-09-15 11-40-00.pngScreenshot from 2026-09-15 11-40-00.png2026-09-15 11-40-00 のスクリーンショット.png Re: iMX DDR Config Tool Code Generation Error || iMX95 こんにちは、 この問題についてできるだけ早く確認し、最新情報を提供していただけませんか?現在、プロジェクトのスケジュールが迫っているため、迅速なサポートをいただけると大変ありがたいです。 Re: iMX DDR Config Tool Code Generation Error || iMX95 こんにちは、 .mexファイルを添付しました。参考までにファイルを示しますが、今回は 8GB LPDDR5 Rayson RS2G32LO5D4FDB-23BT を使用します。 Re: iMX DDR Config Tool Code Generation Error || iMX95 検証のため、IMX95LPD5EVK-19.mex ファイルを私に送っていただけますか? Re: iMX DDR Config Tool Code Generation Error || iMX95 こんにちは、 はい、おっしゃっていたのと同じバージョンをダウンロードしてインストールしました。現在は Linux版 のツールを使っています。参考までにスクリーンショットを添付しました。 Screenshot from 2026-09-15 15-56-04.pngScreenshot from 2026-09-15 15-56-04.png2026-09-15 15-56-04 のスクリーンショット.png Re: iMX DDR Config Tool Code Generation Error || iMX95 Config_Tools_for_i.MX_26.06_x64 をインストールしましたか?最新バージョンの26.06ですか? Linux版を使っていましたか?私はWindows版を使用しています。 検証のため、IMX95LPD5EVK-19.mex ファイルを私に送っていただけますか? Re: iMX DDR Config Tool Code Generation Error || iMX95 こんにちは、 問題は依然として解決していない。.mexファイルを保存した後でもファイルをローカルディスクに保存しても、コードが生成されません。「コードの更新」をクリックすると、ツールから「コード生成に失敗しました」というエラーが表示されます。 Screenshot from 2026-09-15 15-31-15.pngScreenshot from 2026-09-15 15-31-15.png2026-09-15 15-31-15 のスクリーンショット.png Screenshot from 2026-09-15 15-36-58.pngScreenshot from 2026-09-15 15-36-58.png2026-09-15 15-36-58 のスクリーンショット.png Re: iMX DDR Config Tool Code Generation Error || iMX95 1.Config_Tools_for_i.MX_26.06_x64 をダウンロードしてインストールしました。 2. 新しい構成を作成し、「ボード」の下にある「IMX95LPD5EVK-19」を選択します。DDRツールを有効にして選択してください。 3. 「ファイル」→「保存」をクリックして、このプロジェクトをディスクに保存します。すると「コードの更新」が利用可能になります。 4. 「コードを更新」ボタンをクリックしてください。私の側にはエラーはありません。 yipingwang_0-1789463155201.pngyipingwang_0-1789463155201.pngyipingwang_0-1789463155201.png Re: iMX DDR Config Tool Code Generation Error || iMX95 Ubuntu 24.04 では、このバージョン設定ツールをインストールすることが必須です。 Ubuntu 22.04であなたの問題を再現できます。 その後、Ubuntu 24.04 OSにconfigs tool 26.06をインストールしたところ、正常に動作しました。
記事全体を表示
S32 Design Studio Platform + SW32G2 + RTD version selection I refer to the S32G-VNP-RDB2 SOFTWARE ENABLEMENT GUIDE, the suggested software version was SW32G2_S32DS_3.4.0_D2012.zip + S32DS.3.4_b201217_win32.x86_64.exe + Real Time Drivers S32_RTD_4.4_1.0.0_HF01_D2102_DS_Updatesite.zip.  But I actually download S32DS.3.4_b201217_win32.x86_64.exe +SW32G2_S32DS_3.4.1_D2104.zip +SW32G_RTD_4.4_3.0.2_HF01_DS_updatesite_D2204.zip.  When I want to new the Light Up RGB LED and open peripherals tool, It will show "Peripherals: [SDK] Failed to update code - Code generation failed“. I'm not sure if the different software version combination causing these error. Re: S32 Design Studio Platform + SW32G2 + RTD version selection Hi, guang1994 I will reply to you internally. BR Joey
記事全体を表示
ISSUE: fix dependency for IMX_SEC_ENCLAVE and use-after-free Hello This is a follow up from this PR on github. It seems that the patches provided were at the end not applied as it's not present in lf-6.18.y. The Kconfig commit is needed to make sure that the Enclave driver cannot be y when NVMEM_IMX_OCOTP_SCU is m, thus avoiding probe defers. Otherwise you get this: root@colibri-imx8x-14985125:~# dmesg -l err [ 1.708145] rtc-ds1307 1-0068: hctosys: unable to read the hardware clock [ 2.072996] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.078636] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.084513] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 2.111555] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.117209] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.123110] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 2.141671] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.147303] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.153200] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 2.171418] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 2.177065] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 2.182929] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 5.744448] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 5.750217] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 5.756186] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 5.877660] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 5.888247] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 5.894232] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 10.324138] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 10.349783] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 10.374692] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 11.731697] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 11.738134] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 11.747692] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.284910] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.295720] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.307723] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.410541] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.426771] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.443446] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.644550] debugfs: '5f1a0000.phy' already exists in 'regmap' [ 12.655906] debugfs: '5f1a0000.phy' already exists in 'regmap' [ 12.670039] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.688813] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.696063] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.765923] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.775810] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.786887] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.839515] fsl-se secure-envlave-1: Fail to read FIPS fuse [ 12.847285] fsl-se secure-envlave-1: Failed to fetch SoC Info. [ 12.853801] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info [ 12.936721] nvmem imx-scu-ocotp0: cell mac raw len 6 unaligned to nvmem word size 4 [ 12.951328] nvmem imx-scu-ocotp0: cell mac raw len 6 unaligned to nvmem word size 4 [ 13.708903] genpd_provider mu_a1: failed to power off resource 214 ret -22 [ 16.701904] Bluetooth: hci0: unexpected event for opcode 0x0000 root@colibri-imx8x-14985125:~# On the second commit submitted, there has been some refactoring in the driver and I'm not sure if this has been addressed by NXP with commit 9703dfecc735 ("LF-15802: drivers: firmware: imx: Fix the SE driver remove") Could  maybe the SE team confirm? kinds regards Franz Re: ISSUE: fix dependency for IMX_SEC_ENCLAVE and use-after-free Hello, I see that this has not been solved yet, will check with internal software team and confirm about this. Best regards/Saludos, Aldo.
記事全体を表示
S32K31XEVB-Q100FlexCAN0 — 环回功能正常,但使用外部 CANoe 工具时无法接收信号。 板: S32K311-EVB 模块: FlexCAN0 工具:通过 J8 连接器连接的 Vector CANoe 调试探针: J-Link 我正在使用 FlexCAN0 在 S32K311-EVB 上实现 CAN 协议。 环回模式测试(正常): 我首先在内部环回模式下实现了 FlexCAN0 并进行了测试。这成功了——发送的消息通过我的“void CanIf_RxIndication(const Can_HwType* Mailbox, const PduInfoType* PduInfoPtr )”正确接收。 处理功能,确认我的基本 FlexCAN0 配置(时钟设置、位定时、消息缓冲区初始化)运行正常。 外部通信测试(失败): 然后我开始测试外部CAN通信: 在引脚配置中配置 PTA6 和 PTA7 引脚。 通过J8连接器将 Vector CANoe 连接到电路板。 在 CANoe 配置中,我取消勾选了“CAN 环回模式”。 连接12伏适配器 CANoe 开始传输——CANoe 显示正在发送 CAN 帧。 然而,在 S32K311 端,没有任何信号被接收——CanIf_RxIndication (在环回模式下正常工作的同一函数)从未被调用/触发信号。 我使用 Segger RTT Viewer 通过 JTAG 进行调试。 配置 Sami2098_0-1789478804307.pngSami2098_0-1789478804307.pngSami2098_0-1789478804307.png Sami2098_1-1789478831337.pngSami2098_1-1789478831337.pngSami2098_1-1789478831337.png Sami2098_2-1789478911944.pngSami2098_2-1789478911944.pngSami2098_2-1789478911944.png Sami2098_3-1789478932611.pngSami2098_3-1789478932611.pngSami2098_3-1789478932611.png 此致。   Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool 你好@Sami2098 , 请问您目前使用的是哪个RTD版本? 我们社区里有一些例子可以作为参考: 回复:S32K311 的 CAN 示例 - NXP 社区 示例 S32K312 CAN 发送和接收,使用轮询模式 DS3.5 RTD300 [RTD600 MCAL & IP] S32K3X4EVB - T172 FlexCAN 示例(中断/轮询) FlexCAN配置整体看起来没问题。请确认 PTA6/7 是否分别配置为输入和输出,并且您确实调用了 Siul2_Port_Ip_Init() API 来初始化端口? Julin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.png 由于您使用的是 S32K1XEVB,使用的收发器是 FS23,当 FS23 处于调试模式时,CAN 收发器默认设置为运行模式,因此无需设置 CAN_MODE = 0b1x。 我还建议检查 S32K311<->CANoe 之间配置的比特率和采样点是否相同。 最后,如果您有逻辑分析仪或示波器,能否分享一下CANTXD、CANRXD、CANH 和 CANL 信号? 此致, 朱利安 Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool 你好Julián_AragónM 谢谢你调查此事。我找到了根本原因——实际上是我这边的CANoe 通道总线配置问题,而不是 S32K311 CAN 驱动程序配置问题。修正 CANoe Vector 配置后,接收功能现在正常了。 后续问题: 我目前运行的波特率为500 kbps ,我知道如果我切换到不同的波特率(例如125 kbps ),则需要重新计算几个相关参数——例如预分频器、传播段、相位段 1、相位段 2 和重新同步跳转宽度——以保持相对于 CAN 外设时钟的正确位时序和采样点。 请问谁能提供一份参考资料/指南文件,解释以下内容: 这些位定时参数(预分频器、Prop Seg、PS1、PS2、SJW)如何与不同的目标波特率相关以及如何针对不同的目标波特率进行推导。 汽车/工业环境中不同波特率的推荐采样点范围。 任何与S32K3xx FlexCAN MCAL (AUTOSAR)配置工具(用于位时序计算)相关的 NXP 官方应用笔记或参考资料。 我正在使用AUTOSAR 模式下的 MCAL 层(用于 Can 驱动程序配置的 S32 配置工具),因此,如果能提供与此配置流程(而不是单独的寄存器级 FlexCAN 编程)相一致的指南,将会特别有帮助。 感谢您事先的指导。 Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool 你好@Sami2098 , 1.S32K3XX 参考手册 Rev. 12 中的第 73.3.10.8 章(协议定时)解释了位定时配置及其各种参数。 2. 这实际上取决于您的应用和配置;但是,标称比特率包括 125 kbps、250 kbps 和 500 kbps。 3. 您可以参考我们的FlexCAN 位时序计算表。您还可以参考S32K3XX FlexCAN 和 RTD 培训幻灯片。 此致, 朱利安
記事全体を表示
LPSPI3 registers inaccessible from Linux (Bus error on devmem read) — external SPI device on P11 EXP Summary I'm trying to bring up two external MCP2515 CAN controllers (Waveshare 2‑CH CAN HAT, confirmed working on a genuine Raspberry Pi) on the FRDM‑IMX93 board's P11 EXPI header, using LPSPI3 on GPIO_IO08‑11 (the pins that match the Raspberry‑Pi‑compatible header positions per UM12181 Table 21). After fixing every device‑tree‑level issue I could find (power, pinmux, chip‑select, pinctrl‑assert‑gpios), the SPI clock (SCK) never toggles on the physical header pin, and a direct register read of the LPSPI3 block causes a Bus error. A different, known‑working peripheral (LPUART1) reads back fine from the same address space. This points to a resource/bus access restriction (RDC or similar) rather than anything fixable from the Linux device tree. Board / software Board: FRDM‑IMX93 (NXP), SoC: MIMX9352CVVXMAB BSP: NXP i.MX Release Distro, kernel 6.18.2-1.0.0-gf49f45233f7b Target peripheral: lpspi3 (spi@42550000, aliased spi2 in /aliases, real dts label confirmed via /proc/device-tree/__symbols__ to be lpspi3) External device under test: 2× MCP2515 (Waveshare 2‑CH CAN HAT) on CS0/CS1 What's already confirmed working (ruled out) Power to the header. reg_vexp_3v3 / reg_vexp_5v are regulator-fixed nodes that default to disabled (regulator_summary showed use=0). Added regulator-always-on + regulator-boot-on via overlay fragments targeting &reg_vexp_3v3 / &reg_vexp_5v (confirmed real labels via __symbols__). Verified 3.3 V / 5 V physically present on P11 afterwards. Pinmux. GPIO_IO08‑11 correctly muxed to LPSPI3_PCS0/SIN/SOUT/SCK using the official macros from imx93-pinfunc.h. input_reg/input_val are 0x0000/0x0 for these three functions, so no DAISY‑chain select is required (ruled out via macro inspection, no separate register needed). Chip‑select. cs-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>, <&gpio2 7 GPIO_ACTIVE_LOW>; (bit‑banged GPIO CS, matching NXP's own upstream board‑support pattern for this node). Confirmed via cat /sys/kernel/debug/gpio and multimeter/logic‑analyzer: CS0 toggles correctly and physically reaches the header pin. pinctrl-assert-gpios. NXP's own upstream &lpspi3 reference for this board includes pinctrl-assert-gpios = <&pcal6408 0 GPIO_ACTIVE_HIGH>; (this line does not appear in most public guides, only in the board's own dts patch). Added it; confirmed via /proc/device-tree/__symbols__ that pcal6408 resolves, and via cat /sys/kernel/debug/gpio that the GPIO is asserted (out hi) once lpspi3's default pinctrl state is requested. Overlay applies cleanly. No FDT_ERR_NOTFOUND from U‑Boot's fdt apply; /sys/bus/spi/devices/ shows spi2.0 and spi2.1 registered by the SPI core. ERR051608 (LPSPI TCR[PRESCALE] errata). Checked spi-fsl-lpspi.c history — the fix (prescale_max = 1 for fsl,imx93-spi) landed in mainline Aug 2024 / stable 6.6.51 & 6.10.10 Sept 2024, well before this kernel version (6.18.2), and the compatible string (fsl,imx93-spi) is already present in the base board dts, so the driver should auto‑apply this limit. Not ruled out with certainty (no direct register confirmation of the actual PRESCALE field written), but timeline strongly suggests it's already handled. The actual symptom With CS0/CS1, MISO, MOSI, SCK probed on the physical P11 pins (multimeter, then a logic analyzer at 10–20 MSa/s triggered on CS0 falling edge) while continuously retrying a transfer (spidev_test in a loop, and separately by repeatedly forcing mcp251x re‑probe via echo spi2.0 > /sys/bus/spi/drivers/mcp251x/bind): CS0 toggles. Confirmed on both multimeter and logic analyzer. SCK never toggles. Flat, no activity, regardless of continuous transfer attempts. MOSI never toggles. Both MCP2515s fail identically: mcp251x spi2.0/spi2.1: MCP251x didn't enter in conf mode after reset / Probe failed, err=110 (ETIMEDOUT) — i.e. the driver's own SPI‑level reset+read‑CANSTAT sequence gets no response, consistent with SCK never leaving the SoC. Root cause narrowed to clock / bus access, not device tree   # clk_enable_count AND clk_prepare_count are both 0, despite the controller # actively being used in a continuous retry loop $ cat /sys/kernel/debug/clk/clk_summary | grep -i lpspi3 lpspi3_root 0 0 0 50000000 0 0 50000 N deviceless no_connection_id lpspi3 0 0 0 50000000 0 0 50000 N 42550000.spi per $ cat /sys/kernel/debug/clk/lpspi3/clk_prepare_count 0 lpspi3's functional (per) clock shows clk_enable_count=0 and clk_prepare_count=0 even while 42550000.spi (the real, bound consumer) is actively attempting transfers in a loop (spidev_test loop, and separately by repeatedly forcing mcp251x re‑probe via echo spi2.0 > /sys/bus/spi/drivers/mcp251x/bind). clk_prepare() is the step before clk_enable() — the fact that it's never even called suggests the driver's transfer path (or a pm_runtime_get() in front of it) never reaches its own clock‑management code for this device, rather than the clock being requested and then failing to gate on. I don't have kernel build tooling to add tracepoints, so I can't yet tell whether this is a pm_runtime resume that silently no‑ops, a missing dependency (e.g. a power-domains reference this board's lpspi3 node needs but doesn't have), or something else in spi-fsl-lpspi.c for this specific kernel build. The decisive register‑level test — direct devmem read:   $ devmem 0x44380000 32 # LPUART1 base — known-good peripheral 0x04040007 $ devmem 0x42550000 32 # LPSPI3 base (VERID register) Bus error (core dumped) A completely unrelated, working peripheral (LPUART1, used for the debug console) reads back fine from the same CPU/bus context; LPSPI3's base address faults on a plain 32‑bit read. I initially suspected a Resource Domain Controller (RDC) style access restriction specific to this board, but several NXP Community threads (i.MX25/i.MX6ULL "devmem return bus error", i.MX8MP I2C‑from‑DSP thread) point to the same symptom being the normal, expected result of touching an AIPS‑bus peripheral whose clock is gated off — not necessarily a security/domain restriction. That's consistent with clk_enable_count=0 above and makes me now think this is a clock‑enablement bug in the driver/PM path for this device, not (necessarily) an RDC block — though I can't fully rule out RDC without lower‑level tooling. This isn't a general i.MX93 LPSPI3 limitation For context: a separate NXP Community thread ([iMX93AUTO EVK] SPI Configuration for QCA7006AQ, community.nxp.com/t5/i-MX-Processors/iMX93AUTO-EVK-SPI-Configuration-for-QCA7006AQ-with-imx93AUTO-EVK/m-p/1839847) shows someone successfully driving an external SPI device over LPSPI3 on the same GPIO_IO08‑11 pins on the i.MX93‑11x11‑EVK (same SoC), using:   c &lpspi3 { compatible = "fsl,imx93-spi", "fsl,lpspi"; cs-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; status = "okay"; ... }; &iomuxc { pinctrl_lpspi3_qca: lpspi3grp { fsl,pins = < MX93_PAD_GPIO_IO11__LPSPI3_SCK 0x3fe MX93_PAD_GPIO_IO10__LPSPI3_SOUT 0x3fe MX93_PAD_GPIO_IO09__LPSPI3_SIN 0x3fe MX93_PAD_GPIO_IO08__LPSPI3_PCS0 0x3fe /* native PCS0, not plain GPIO */ >; }; }; I tried this exact variant (native LPSPI3_PCS0/LPSPI3_PCS1 instead of plain GPIO2_IO08/GPIO2_IO07, plus the explicit compatible override) on the FRDM board — no change, devmem 0x42550000 32 still faults, clk_enable_count/clk_prepare_count still 0. This rules out pinmux/compatible‑string choice as the cause on this board, and — combined with the EVK success — makes me suspect something FRDM‑board‑specific (either in imx93-11x11-frdm.dts's handling of lpspi3, or in this board's U‑Boot/ATF‑level RDC/power‑domain setup) rather than a general i.MX93 SoC or mainline‑driver limitation. Questions for NXP Given clk_prepare_count/clk_enable_count stay at 0 for lpspi3 even while the SPI core is actively driving transfers to a bound spi2.0/spi2.1 device, and a plain register read of 0x42550000 bus‑faults — what's missing from the FRDM‑IMX93's lpspi3 device‑tree node (or from board‑level RDC/power‑domain setup) that the working EVK config doesn't need? Is LPSPI3 on the FRDM‑IMX93 intentionally reserved for another domain (e.g. Cortex‑M33 / secure world, or the on‑board MAYA‑W2 tri‑radio module path) at the board's default RDC/ATF configuration, unlike the EVK? Is there a reference imx93-11x11-frdm-lpspi.dts (analogous to imx93-11x11-evk-lpspi.dts) for using LPSPI3 externally via P11 on this specific board? How to reproduce Base board dtb: stock imx93-11x11-frdm.dtb shipped with the i.MX Release Distro image (unmodified NXP lpspi3 + pcal6408 + reg_vexp_3v3/reg_vexp_5v nodes — all confirmed present via __symbols__). Apply the overlay described above (regulator always‑on, pinctrl + cs‑gpios + pinctrl‑assert‑gpios on &lpspi3; tried both plain‑GPIO and native‑PCS0/PCS1 pinmux variants, same result both times). Bind spidev (built‑in, CONFIG_SPI_SPIDEV=y) manually to spi2.0:   echo spidev > /sys/bus/spi/devices/spi2.0/driver_override echo spi2.0 > /sys/bus/spi/drivers/spidev/bind spidev_test -D /dev/spidev2.0 -s 1000000 -v — "succeeds" (no I/O error) but RX data is not a loopback of TX even with MOSI/MISO physically shorted; SCK never toggles on a logic analyzer regardless. cat /sys/kernel/debug/clk/clk_summary | grep lpspi3 → clk_enable_count=0. cat /sys/kernel/debug/clk/lpspi3/clk_prepare_count → 0. devmem 0x42550000 32 → Bus error. devmem 0x44380000 32 (LPUART1) → succeeds normally. Happy to provide the full overlay source, dmesg, and clk_summary/gpio dumps if useful.
記事全体を表示
FRDM-IMX93: LPSPI3 registers inaccessible from Linux (Bus error on devmem read) — external SPI devic Summary I'm trying to bring up two external MCP2515 CAN controllers (Waveshare 2‑CH CAN HAT, confirmed working on a genuine Raspberry Pi) on the FRDM‑IMX93 board's P11 EXPI header, using LPSPI3 on GPIO_IO08‑11 (the pins that match the Raspberry‑Pi‑compatible header positions per UM12181 Table 21). After fixing every device‑tree‑level issue I could find (power, pinmux, chip‑select, pinctrl‑assert‑gpios), the SPI clock (SCK) never toggles on the physical header pin, and a direct register read of the LPSPI3 block causes a Bus error. A different, known‑working peripheral (LPUART1) reads back fine from the same address space. This points to a resource/bus access restriction (RDC or similar) rather than anything fixable from the Linux device tree. Board / software Board: FRDM‑IMX93 (NXP), SoC: MIMX9352CVVXMAB BSP: NXP i.MX Release Distro, kernel 6.18.2-1.0.0-gf49f45233f7b Target peripheral: lpspi3 (spi@42550000, aliased spi2 in /aliases, real dts label confirmed via /proc/device-tree/__symbols__ to be lpspi3) External device under test: 2× MCP2515 (Waveshare 2‑CH CAN HAT) on CS0/CS1 What's already confirmed working (ruled out) Power to the header. reg_vexp_3v3 / reg_vexp_5v are regulator-fixed nodes that default to disabled (regulator_summary showed use=0). Added regulator-always-on + regulator-boot-on via overlay fragments targeting &reg_vexp_3v3 / &reg_vexp_5v (confirmed real labels via __symbols__). Verified 3.3 V / 5 V physically present on P11 afterwards. Pinmux. GPIO_IO08‑11 correctly muxed to LPSPI3_PCS0/SIN/SOUT/SCK using the official macros from imx93-pinfunc.h. input_reg/input_val are 0x0000/0x0 for these three functions, so no DAISY‑chain select is required (ruled out via macro inspection, no separate register needed). Chip‑select. cs-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>, <&gpio2 7 GPIO_ACTIVE_LOW>; (bit‑banged GPIO CS, matching NXP's own upstream board‑support pattern for this node). Confirmed via cat /sys/kernel/debug/gpio and multimeter/logic‑analyzer: CS0 toggles correctly and physically reaches the header pin. pinctrl-assert-gpios. NXP's own upstream &lpspi3 reference for this board includes pinctrl-assert-gpios = <&pcal6408 0 GPIO_ACTIVE_HIGH>; (this line does not appear in most public guides, only in the board's own dts patch). Added it; confirmed via /proc/device-tree/__symbols__ that pcal6408 resolves, and via cat /sys/kernel/debug/gpio that the GPIO is asserted (out hi) once lpspi3's default pinctrl state is requested. Overlay applies cleanly. No FDT_ERR_NOTFOUND from U‑Boot's fdt apply; /sys/bus/spi/devices/ shows spi2.0 and spi2.1 registered by the SPI core. ERR051608 (LPSPI TCR[PRESCALE] errata). Checked spi-fsl-lpspi.c history — the fix (prescale_max = 1 for fsl,imx93-spi) landed in mainline Aug 2024 / stable 6.6.51 & 6.10.10 Sept 2024, well before this kernel version (6.18.2), and the compatible string (fsl,imx93-spi) is already present in the base board dts, so the driver should auto‑apply this limit. Not ruled out with certainty (no direct register confirmation of the actual PRESCALE field written), but timeline strongly suggests it's already handled. The actual symptom With CS0/CS1, MISO, MOSI, SCK probed on the physical P11 pins (multimeter, then a logic analyzer at 10–20 MSa/s triggered on CS0 falling edge) while continuously retrying a transfer (spidev_test in a loop, and separately by repeatedly forcing mcp251x re‑probe via echo spi2.0 > /sys/bus/spi/drivers/mcp251x/bind): CS0 toggles. Confirmed on both multimeter and logic analyzer. SCK never toggles. Flat, no activity, regardless of continuous transfer attempts. MOSI never toggles. Both MCP2515s fail identically: mcp251x spi2.0/spi2.1: MCP251x didn't enter in conf mode after reset / Probe failed, err=110 (ETIMEDOUT) — i.e. the driver's own SPI‑level reset+read‑CANSTAT sequence gets no response, consistent with SCK never leaving the SoC. Root cause narrowed to clock / bus access, not device tree   # clk_enable_count is 0 despite the controller actively being used $ cat /sys/kernel/debug/clk/clk_summary | grep -i lpspi3 lpspi3_root 0 0 0 50000000 0 0 50000 N deviceless no_connection_id lpspi3 0 0 0 50000000 0 0 50000 N 42550000.spi per lpspi3's functional (per) clock shows enable_count=0 even while 42550000.spi (the real, bound consumer) is actively attempting transfers in a loop — it isn't simply "unused" (compare to lpspi1/2/4, which are deviceless and also show 0, so that alone isn't conclusive). The decisive test — direct register read via devmem:   $ devmem 0x44380000 32 # LPUART1 base — known-good peripheral 0x04040007 $ devmem 0x42550000 32 # LPSPI3 base (VERID register) Bus error (core dumped) A completely unrelated, working peripheral (LPUART1, used for the debug console) reads back fine from the same CPU/bus context. LPSPI3's base address faults on a plain 32‑bit read, before any clock‑gating or pinmux consideration even matters. This looks like a Resource Domain Controller (RDC) — or similar access‑control mechanism — blocking the Cortex‑A55 (Linux) domain from this peripheral's address range at the hardware level, independent of anything configurable from the Linux device tree. Questions for NXP Is LPSPI3 on the FRDM‑IMX93 intentionally reserved for another domain (e.g. Cortex‑M33 / secure world) in the board's default RDC configuration, making it unusable from Linux without additional SPL/ATF/TF‑A level reconfiguration? If so, is there a documented way to reassign LPSPI3 bus access to the Cortex‑A55 non‑secure domain (RDC config in U‑Boot SPL, or an OP‑TEE/TF‑A change), or is this simply not supported as an external SPI on this board's P11 header despite GPIO_IO08‑11 being broken out there? Is this specific to my board/kernel build, or a known characteristic of the default FRDM‑IMX93 BSP? A reference imx93-11x11-frdm-lpspi.dts (analogous to imx93-11x11-evk-lpspi.dts for the EVK) would be very helpful if one exists. How to reproduce Base board dtb: stock imx93-11x11-frdm.dtb shipped with the i.MX Release Distro image (unmodified NXP lpspi3 + pcal6408 + reg_vexp_3v3/reg_vexp_5v nodes — all confirmed present via __symbols__). Apply the overlay described above (regulator always‑on, pinctrl + cs‑gpios + pinctrl‑assert‑gpios on &lpspi3). Bind spidev (built‑in, CONFIG_SPI_SPIDEV=y) manually to spi2.0:   echo spidev > /sys/bus/spi/devices/spi2.0/driver_override echo spi2.0 > /sys/bus/spi/drivers/spidev/bind spidev_test -D /dev/spidev2.0 -s 1000000 -v — transfer "succeeds" (no I/O error) but RX data is not a loopback of TX even with MOSI/MISO physically shorted. devmem 0x42550000 32 → Bus error. Happy to provide the full overlay source, dmesg, and clk_summary/gpio dumps if useful.
記事全体を表示
S32K31XEVB-Q100FlexCAN0 — ループバックは正常に動作しますが、外部CANoeツールでは受信できません。 ボード: S32K311-EVB モジュール: FlexCAN0 ツール: J8コネクタで接続されたベクターCANoe デバッグプローブ: Jリンク 私はFlexCAN0を使ってS32K311-EVBでCANプロトコルを実装しています。 ループバックモードテスト(動作確認済み): 私はまず、FlexCAN0を内部ループバックモードで実装し、テストしました。これはうまくいきました。送信されたメッセージは、私の「void CanIf_RxIndication(const Can_HwType* Mailbox, const PduInfoType* PduInfoPtr )」を通じて正しく受信されました。 処理機能により、FlexCAN0の基本設定(クロック設定、ビットタイミング、メッセージバッファ初期化)が正しく機能していることを確認します。 外部コミュニケーションテスト(効果なし): 次に外部CAN通信のテストに移りました: ピン構成でPTA6とPTA7のピンを設定してください。 J8コネクターでVector CANoeをボードに接続しました。 CANoe構成では、私は チェックされていない「CAN Loopback Mode」 12Vアダプターを取り付ける CANoeの送信を開始しました — CANoeはCANフレームを送信していることを示しています。 しかし、S32K311側では何も受信されず、 CanIf_RxIndication (ループバックモードでは正しく動作していた同じ関数)は呼び出されたりトリガーされたりしません。 デバッグには、JTAG を使用した Segger RTT Viewer を使用しています。 設定 Sami2098_0-1789478804307.pngSami2098_0-1789478804307.pngSami2098_0-1789478804307.png Sami2098_1-1789478831337.pngSami2098_1-1789478831337.pngSami2098_1-1789478831337.png Sami2098_2-1789478911944.pngSami2098_2-1789478911944.pngSami2098_2-1789478911944.png Sami2098_3-1789478932611.pngSami2098_3-1789478932611.pngSami2098_3-1789478932611.png よろしくお願いします。   Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool こんにちは、 @Sami2098 さん。 現在使っているRTDバージョンを教えてもらえますか? 私たちのコミュニティには参考にできるいくつかの例があります: Re: S32K311のCAN例 - NXPコミュニティ ポーリングモードDS3.5 RTD300を使用したS32K312 CAN送受信の例 [RTD600 MCAL & IP] S32K3X4EVB-T172 FlexCAN 割り込みのサンプル / ポーリング FlexCANの設定は全体的に問題なさそうです。PTA6/7がそれぞれ入力と出力として設定されていること、そして実際にSiul2_Port_Ip_Init()APIを呼び出してポートの初期化をしているのか確認できますか? Julin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.pngJulin_AragnM_2-1789514266922.png S32K1XEVBを使っている場合、使用されているトランシーバはFS23で、FS23がデバッグモードの場合、CANトランシーバはデフォルトでアクティブモードに設定されているため、CAN_MODE = 0b1xを設定する必要はありません。 S32K311<->CANoeの間で設定されているビットレートとサンプリングポイントが同じであることを確認することもお勧めします。 最後に、もしロジックアナライザーやオシロスコープをお持ちなら、CANTXD、CANRXD、CANH、CANLの信号を共有してもらえますか? よろしくお願いします、 ジュリアン Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool こんにちは、 Julián_AragónMさん。 調べていただきありがとうございます。原因は、実は CANoeのチャネルバス設定の問題 で、S32K311 CANドライバの設定の問題ではありませんでした。CANoe Vectorの設定を修正したところ、受信は正常に動作するようになりました。 追加の質問: 現在は 500 kbpsで動作しており、異なるボーレート(例: 125 kbps)に切り替えると、正しいビットタイミングとCAN周辺クロックに対するサンプルポイントを維持するために、プリスケーラ、伝播セグメント、位相セグメント1、フェーズセグメント2、リシンクジャンプ幅など、いくつかの依存パラメータを再計算する必要があると理解しています。 誰か、 以下の説明書や参考資料 を教えてもらえますか? これらのビットタイミングパラメータ(プリスケーラ、プロップセグメント、PS1、PS2、SJW)が、異なる目標ボーレートとどのように関連し、どのように導出されるか。 オートモーティブ・インダストリアルの文脈で異なるボーレートに対する推奨サンプルポイント範囲。 ビットタイミング計算用の S32K3xx FlexCAN MCAL(AUTOSAR) 構成ツールに関する公式のNXPアプリケーションノートや参考文献など、いかなるものもご存知。 私は MCALレイヤーをAUTOSARモード (S32 Configuration Tool for Canドライバー設定)で使っているので、この設定フローに合わせたガイド(レジスタレベルのFlexCANプログラミングだけでなく)が特に助かります。 ご指導ありがとうございます。 Re: S32K31XEVB-Q100FlexCAN0 — Loopback works fine, but no reception with external CANoe Tool こんにちは、 @Sami2098 さん。 1.リファレンスマニュアルRev. 12の73.3.10.8章(プロトコルタイミング)S32K3XXビットタイミングの設定とその各種パラメータが説明されています。 2. これはアプリケーションや構成によります。ただし、標準ビットレートには125 kbps、250 kbps、500 kbpsがあります。 3. FlexCANビットタイミング計算シートを参照してください。また、RTDトレーニングのシルデスと連携したS32K3XX FlexCANも参照できます。 よろしくお願いします、 ジュリアン
記事全体を表示
LPSPI3レジスタがLinuxからアクセス不能(devmem読み取り時のバスエラー)— P11 EXP上の外部SPIデバイス 概要 FRDM-IMX93ボードの P11 EXPIヘッダーに LPSPI3 を使って、2つの外部MCP2515 CANコントローラー(Waveshare 2-CHAN HAT、本物のRaspberry Piで動作確認)を起動しようとしています(GPIO_IO08 UM12181表21参照、Raspberry-Pi互換ヘッダー位置に一致するピンです)。 見つけたデバイスツリーレベルの問題(電源、ピンマックス、チップセレクト、pinctrl-assert-gpio)をすべて修正した後、SPIクロック(SCK)は物理ヘッダーピンを切り替え ず 、LPSPI3ブロックの直接レジスタ読み込みは バスエラーを引き起こします。別の既知の動作ペリフェラル(LPUART1)は同じアドレス空間から問題なく読み返します。これはLinuxデバイスツリーから修正できるものではなく、リソース/バスアクセス制限(RDCなど)を示しています。 ボード/ソフトウェア ボード:FRDM-IMX93(NXP)、SoC:MIMX9352CVVXMAB BSP: NXP i.MX リリース ディストリビューション、カーネル 6.18.2-1.0.0-gf49f45233f7b ターゲット周辺機器:lpspi3(spi@42550000、/aliasesでエイリアスされたspi2、/proc/device-tree/で確認された本物のdtsラベル__symbols__ lpspi3) テスト中の外部デバイス:CS0/CS1上の2× MCP2515(Waveshare 2-CH CAN HAT) 既に動作が確認されているもの(除外されたもの) ヘッダーに電力を供給します。reg_vexp_3v3 / reg_vexp_5v は、デフォルトで無効になっているレギュレータ固定ノードです (regulator_summary では use=0 と表示されています)。レギュレーター常時オン+レギュレーターブートオンを追加し、オーバーレイフラグメントのターゲティング&reg_vexp_3v3/&reg_vexp_5vを追加しました( __symbols__で実際のラベルが確認されました)。その後、P11に3.3V/5Vの電圧が物理的に存在していることを確認しました。 Pinmux。GPIO_IO08-11 は、imx93-pinfunc.h の公式マクロを使用して、LPSPI3_PCS0/SIN/SOUT/SCK に正しく多重化されています。input_reg/input_valはこれら3つの機能に対して0x0000/0x0であるため、DAISYチェーンセレクトは不要です(マクロ検査で除外され、個別レジスタは不要)。 チップセレクト。cs-gpios = 、(ビットバンギングされたGPIO CS。このノードに対するNXP独自のアップストリームボードサポートパターンに一致)。cat /sys/kernel/debug/gpio とマルチメーター/ロジックアナライザーで確認したところ、 CS0 は正しくトグルし、物理的にヘッダーピンに到達していることがわかりました。 pinctrl-assert-gpios。NXP独自のこのボード用アップストリーム&lpspi3リファレンスには、pinctrl-assert-gpios = <&pcal6408 0 GPIO_ACTIVE_HIGH>; が含まれています(この行はほとんどの公開ガイドには記載されておらず、ボード独自のdtsパッチにのみ記載されています)。追加しました。/proc/device-tree/__symbols__ で pcal6408 が解決されること、および cat /sys/kernel/debug/gpio で lpspi3 のデフォルトの pinctrl 状態が要求されると GPIO がアサートされる (出力 hi) ことを確認しました。 オーバーレイはきれいに適用されます。U-Bootのfdt applyからFDT_ERR_NOTFOUNDは発生せず、/sys/bus/spi/devices/にはSPIコアによってspi2.0とspi2.1が登録されていることが示されています。 ERR051608 (LPSPI TCR[PRESCALE] のエラータ)。spi-fsl-lpspi.c を確認しました履歴 — 修正(fsl、imx93-spi の prescale_max = 1)は、2024年8月 / 安定版 6.6.51 でメインラインに取り込まれました。2024年9月6.10日は、このカーネルバージョン(6.18.2)よりずっと前のもので、互換文字列(fsl、imx93-spi)はすでにベースボードのdtsに存在しているため、ドライバはこの制限を自動的に適用すべきです。完全に否定できるわけではないが(実際にPRESCALEフィールドが書き込まれたという直接的なレジスタ確認はない)、タイムラインから判断すると既に処理済みである可能性が高い。 実際の症状 CS0/CS1、MISO、MOSI、SCKが物理的なP11ピン(マルチメーター、CS0落ち込みエッジで10〜20 MSa/sのロジックアナライザーをトリガー)でプローブしつつ、転送を繰り返し再試行(ループ内でspidev_testし、Echo spi2.0 > /sys/bus/spi/drivers/mcp251x/bindを経て繰り返しMCP251xの再プローブを強制することで別々に実行しました): CS0の切り替え。マルチメーターとロジックアナライザーの両方で確認済み。 SCKは切り替えません。継続的に転送を試みても、変化はなく、活動は見られない。 MOSIは切り替えません。 両方のMCP2515が同じように失敗します:mcp251x spi2.0/spi2.1:リセット/プローブ失敗後、MCP251xはコンフモードに入らなかった。err=110(ETIMEDOUT)。つまり、ドライバ自身のSPIレベルのリセット+read-CANSTATシーケンスは応答せず、SCKがSoCを出ないのと一致している。 根本原因はデバイスツリーではなくクロック/バスアクセスに絞られます   # clk_enable_count AND clk_prepare_count are both 0, despite the controller # actively being used in a continuous retry loop $ cat /sys/kernel/debug/clk/clk_summary | grep -i lpspi3 lpspi3_root 0 0 0 50000000 0 0 50000 N deviceless no_connection_id lpspi3 0 0 0 50000000 0 0 50000 N 42550000.spi per $ cat /sys/kernel/debug/clk/lpspi3/clk_prepare_count 0 LPSPI3の機能クロック(per)はclk_enable_count=0 、 clk_prepare_count=0を示します。これは425550000.SPI(実際のバインドされた消費者)がループ(spidev_testループ、そしてEcho SPI2.>0を経て/sys/bus/spi/ドライバ/mcp251x/bindを繰り返し強制してMCP251Xを再プローブを繰り返し試みている間でもです)。clk_prepare()はclk_enable() の前の ステップです。呼び出されないことから、ドライバーの転送経路(またはその前のpm_runtime_get())がこのデバイスの独自のクロック管理コードに到達しないことを示唆しており、クロックを要求してゲートオンに失敗したわけではありません。 トレースポイントを追加するカーネルビルドツールは持っていないので、これがサイレントノーオプスの繰り返しpm_runtimeなのか、依存関係が欠落しているのか(例:power-domainsがこのボードのlpspi3ノードが必要とするが持っていない)、あるいはこの特定のカーネルビルドに対するspi-fsl-lpspi.cの別の何かなのか、まだ判断がつきません。 決定的なレジスタレベルのテスト ― 直接的なdevmem読み取り:   $ devmem 0x44380000 32 # LPUART1 base — known-good peripheral 0x04040007 $ devmem 0x42550000 32 # LPSPI3 base (VERID register) Bus error (core dumped) 全く関係のない動作するペリフェラル(LPUART1、デバッグコンソール用)は同じCPU/バスコンテキストから問題なく読み戻します。 LPSPI3のベースアドレスフォルトは、単なる32ビット読み取りで発生します。当初はこの基板特有のリソースドメインコントローラー(RDC)スタイルのアクセス制限かと疑いましたが、いくつかのNXPコミュニティスレッド(i.MX25/i.MX6ULL「devmem return bus error」やi.MX8MP I2C-from-DSPスレッド)は、 クロックが制限されているAIPSバス周辺機器に触れた場合の正常で予想される症状 であり、必ずしもセキュリティやドメイン制限ではないと指摘しています。これは上記のclk_enable_count=0と一致しており、これはこの デバイスのドライバー/PMパスのクロック有効化バグであり、必ずしもRDCブロックではないと考えています。ただし、低レベルのツールがなければRDCを完全に除外することはできません。 これは一般的な i.MX93 LPSPI3 の制限ではありません 参考までに:別のNXPコミュニティThread([iMX93AUTO EVK] SPI Configuration for QCA7006AQ, community.nxp.com/t5/i-MX-Processors/iMX93AUTO-EVK-SPI-Configuration-for-QCA7006AQ-with-imx93AUTO-EVK/m-p/1839847)i.MX93-11x11-EVK (同じSoC)の同じGPIO_IO08-11ピン上で、LPSPI3を介して外部SPIデバイスを正常に駆動する様子が示されています。   c &lpspi3 { compatible = "fsl,imx93-spi", "fsl,lpspi"; cs-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; status = "okay"; ... }; &iomuxc { pinctrl_lpspi3_qca: lpspi3grp { fsl,pins = < MX93_PAD_GPIO_IO11__LPSPI3_SCK 0x3fe MX93_PAD_GPIO_IO10__LPSPI3_SOUT 0x3fe MX93_PAD_GPIO_IO09__LPSPI3_SIN 0x3fe MX93_PAD_GPIO_IO08__LPSPI3_PCS0 0x3fe /* native PCS0, not plain GPIO */ >; }; }; FRDM ボードでこのまったく同じバリアント (通常の GPIO2_IO08/GPIO2_IO07 の代わりにネイティブ LPSPI3_PCS0/LPSPI3_PCS1、さらに明示的な互換性オーバーライド) を試しましたが、変化はありませんでした。devmem 0x42550000 32 は依然としてフォルトを起こし、clk_enable_count/clk_prepare_count は依然として 0 です。これにより、このボードではピンmux/compatible-stringの選択が原因ではないことがわかり、EVKの成功と合わせて、 FRDMボード固有の何か(imx93-11x11-frdm.dtsのlpspi3 の処理、またはこのボードの U-Boot/ATF レベルの RDC/電源ドメイン設定)によるものであり、一般的な i.MX93 SoC またはメインラインドライバの制限ではありません。 NXPへの質問 SPIコアがバインドされたspi2.0/spi2.1デバイスへの転送をアクティブに実行している間も、lpspi3のclk_prepare_count/clk_enable_countが0のままであり、0x42550000の単純なレジスタ読み取りでバスフォルトが発生する場合、FRDM-IMX93のlpspi3デバイスツリーノード(またはボードレベルのRDC/電源ドメイン設定)には、正常に動作するEVK構成に不要なものが欠けているのでしょうか? FRDM-IMX93 の LPSPI3 は、別のドメイン (例:Cortex-M33 / セキュアワールド、またはオンボードの MAYA-W2 トライラジオモジュールパス)は、EVK とは異なり、ボードのデフォルトの RDC/ATF 構成で動作しますか? この特定のボードでP11経由でLPSPI3を外部から使用するための参照ファイルimx93-11x11-frdm-lpspi.dts(imx93-11x11-evk-lpspi.dtsに相当)はありますか? 再現方法 ベースボードdtb: i.MXリリースディストリビューションイメージに同梱されている標準のimx93-11x11-frdm.dtb(変更されていないNXP lpspi3 + pcal6408 + reg_vexp_3v3/reg_vexp_5vノード - すべて__symbols__経由で存在が確認されています)。 上記のオーバーレイを適用します(レギュレータ常時オン、&lpspi3 上で pinctrl + cs-gpios + pinctrl-assert-gpios を使用。plain-GPIO と native-PCS0/PCS1 pinmux の両方のバリアントを試しましたが、どちらの場合も同じ結果でした)。 spidev(組み込み、CONFIG_SPI_SPIDEV=y)を手動でspi2.0にバインドします。   echo spidev > /sys/bus/spi/devices/spi2.0/driver_override echo spi2.0 > /sys/bus/spi/drivers/spidev/bind spidev_test -D /dev/spidev2.0-s 1000000 -v — 「成功」(I/O エラーなし) だが、MOSI/MISO を物理的に短絡しても RX データは TX のループバックではない。ロジック アナライザで SCK がトグルすることはない。 cat /sys/kernel/debug/clk/clk_summary | grep lpspi3 → clk_enable_count=0. cat /sys/kernel/debug/clk/lpspi3/clk_prepare_count → 0. devmem 0x42550000 32 → バスエラー。devmem 0x44380000 32 (LPUART1) → 正常に成功しました。 必要であれば、オーバーレイのソースコード、dmesgログ、clk_summary/gpioダンプなど、すべての情報を提供いたします。
記事全体を表示
iMX DDR Config Tool Code Generation Error || iMX95 Hi Team, We are currently working with the NXP Config Tools for i.MX95 DDR configuration and are facing an issue while generating the DDR initialization/timing code. We created/opened the DDR configuration for the following target: Processor: MIMX9596xxxxN Core: Cortex-M33 Memory Type: LPDDR5 - Ryzen RS2G32LO5D4FDB-23BT DDR Data Rate: 6400 MT/s Number of Ranks: 2 Number of 16-bit Channels: 2 DRAM Configuration: 16Gb:2Gb x8 Total DRAM Density shown by the tool: 16384 MB Initially, we are trying to validate the DDR configuration using the NXP i.MX95 19x19 EVK default LPDDR5 configuration before applying our custom board DDR settings. However, when we try to generate/update the DDR code, the Config Tools reports an error in the Problems window: “Failed to generate code…” and the Code Preview window shows: “Code generation failed.” The screenshot of the issue is attached for reference: Screenshot from 2026-09-15 11-40-00.pngScreenshot from 2026-09-15 11-40-00.pngScreenshot from 2026-09-15 11-40-00.png Re: iMX DDR Config Tool Code Generation Error || iMX95 Hi, Could you please check and provide an update on this issue at the earliest? We are currently running short on the project timeline, so your prompt support would be greatly appreciated. Re: iMX DDR Config Tool Code Generation Error || iMX95 Hi, I have attached the .mex file for your reference but we are going to use 8GB LPDDR5 Rayson RS2G32LO5D4FDB-23BT. Re: iMX DDR Config Tool Code Generation Error || iMX95 Would you please send your IMX95LPD5EVK-19.mex to me to do verification? Re: iMX DDR Config Tool Code Generation Error || iMX95 Hi,  Yes, we have downloaded and installed the same version that you mentioned. We are currently using the Linux version of the tool. I have attached a screenshot for your reference. Screenshot from 2026-09-15 15-56-04.pngScreenshot from 2026-09-15 15-56-04.pngScreenshot from 2026-09-15 15-56-04.png Re: iMX DDR Config Tool Code Generation Error || iMX95 Did you install Config_Tools_for_i.MX_26.06_x64? The latest version 26.06? Did you using the Linux version? I am using the Windows version. Would you please send your IMX95LPD5EVK-19.mex to me to do verification? Re: iMX DDR Config Tool Code Generation Error || iMX95 Hi,  The issue still persists. Even after saving the .mex file to the local disk, the code is not being generated. When I click Update Code, the tool throws the error “Code generation failed.” Screenshot from 2026-09-15 15-31-15.pngScreenshot from 2026-09-15 15-31-15.pngScreenshot from 2026-09-15 15-31-15.png Screenshot from 2026-09-15 15-36-58.pngScreenshot from 2026-09-15 15-36-58.pngScreenshot from 2026-09-15 15-36-58.png Re: iMX DDR Config Tool Code Generation Error || iMX95 1. I downloaded and installed Config_Tools_for_i.MX_26.06_x64. 2. I created a new configuration, select "IMX95LPD5EVK-19" under "Boards". Enable DDR tool and select it. 3. Click "File->Save" to save this project to the disk. Then "Update Code" is avaiable. 4. Click "Update Code" button, there is no error on my side. yipingwang_0-1789463155201.pngyipingwang_0-1789463155201.pngyipingwang_0-1789463155201.png Re: iMX DDR Config Tool Code Generation Error || iMX95 It is mandatory to install this version configs tool on Ubuntu 24.04. I can reproduce your problem on Ubuntu 22.04. Then I install configs tool 26.06 on Ubuntu 24.04 OS, it worked normally.
記事全体を表示
S32 Design Studio プラットフォーム + SW32G2 + RTD バージョン選択 私はS32G-VNP-RDB2 ソフトウェア イネーブルメント ガイドを参照しており、推奨されているソフトウェアバージョンはSW32G2_S32DS_3.4.0_D2012.zip+R S32DS.3.4_b201217_win32.x86_64.exe+リアルタイム・ドライバ S32_RTD_4.4_1.0.0_HF01_D2102_DS_Updatesite.zipでした。 しかし、実際にダウンロードしたのは S32DS.3.4_b201217_win32.x86_64.exe +SW32G2_S32DS_3.4.1_D2104.zip +SW32G_RTD_4.4_3.0.2_HF01_DS_updatesite_D2204.zip です。 RGBLEDを点灯してペリフェラルを起動しようとすると、「ペリフェラル:[SDK] コード更新に失敗 - コード生成に失敗」と表示されます。ソフトウェアのバージョンが違うからこそエラーが原因なのかは分かりません。 Re: S32 Design Studio Platform + SW32G2 + RTD version selection こんにちは、 guang1994 社内で返信させていただきます。 BR ジョーイ
記事全体を表示