Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
S32DS 许可证到期 您好, 当我打开 S32DS 时,得到以下信息:   适用于 ARM 的 S32 设计工作室 ActivationId:8AEC-51FD-AB5B-6A4D 评估天数:9 功能版本:2.2 功能状态:评估(9 天) 延长许可证有效期需要哪些手续? 顺祝商祺! 桑德拉 Re: S32DS license expiring 你好 我已通知管理员延长您的许可证有效期。 顺祝商祺! Peter Re: S32DS license expiring 你好 您的许可证有效期延长至 2030 年。 顺祝商祺! Peter Re: S32DS license expiring 你好 我无法激活 S32DS,原因是图像问题,你们能帮我解决这个问题吗? HelenLi_0-1778831877838.pngHelenLi_0-1778831877838.pngHelenLi_0-1778831877838.png Re: S32DS license expiring 帮助! 我的S32DS IDE许可证即将到期。请问您能否帮我延长一下它的使用期限?谢谢 ! 许可证:1A99 90A8 2F06 339B Re: S32DS license expiring 你好: ActivationId:04E9-8F5A-8B1F-F9C8 需要延长许可证有效期 Re: S32DS license expiring 你好! 我的S32DS IDE许可证即将到期。请问您能否帮我延长一下它的使用期限?谢谢 ! 许可证号:EA09-8465-A8E8-F07B
記事全体を表示
S32K344 – 安装 HSE_B 固件的应用程序是否可以使用 PFLASH Block 2? 你好, 我们正在围绕 S32K344 (HSE_FW_S32K344_0_2_55_0, 0.2.55.0 版本 pb150130 (2025 年 1 月 30 日)) 开发配电单元。类型:标准固件配置)具有双库引导加载程序和安全固件更新。我们在 Flash 布局的某一点上遇到了困难,希望能得到一个明确的答案。 问题 我们的 NVM 配置区域(应用程序写入的运行时参数)目前位于 PFLASH 块 0 中,与正在执行的代码位于同一块中。在运行时向它们写入数据会触发内核的读写停顿,从而在编程/擦除操作期间冻结单元。对于我们的应用来说,这是不可接受的(PDU 驱动与功能安全相关的负载)。 显而易见的解决方法是将这些区域移动到不包含已执行代码的块中。块 2(0x600000–0x6FFFFF,扇区 368–381)是自然的候选者:它没有被我们的应用程序银行使用,而且它也不是 HSE 存储其数据的块。 我们目前已核查的内容 – S32K3xx 参考手册描述了 PFLASH 块结构,但没有提及 HSE 预留。 – 公开的 HSE 基本固件常见问题解答指出,第 0 和 1 块保证供应用程序使用,并且 HSE 固件保留了第 3 块的一部分(在 FULL_MEM 配置中为 176 KB)。它完全没有提到第二区。 – 我们看到的 HSE 演示应用程序和 RTD 示例也没有使用 Block 2,因此我们无法从中推断出任何信息。 – 我们已提交 HSE 固件参考手册 v2.4 的 NDA / DocStore 访问请求,据我们了解,该手册涵盖了此内容。请求正在处理中。 问题 安装 HSE_B 固件后,在 FULL_MEM 配置下,Block 2 是否完全可供应用程序(代码和数据)使用?AB_SWAP 呢? 在运行时从应用程序核心擦除/编程 Block 2 是否存在任何与 HSE 相关的限制(例如,(由 HSE、SBAF 或安全启动锁定或监测的扇区)? 是否有公开文档描述了 HSE 固件、SBAF 和应用程序之间完整的 PFLASH 块分配情况?如果不行,能否请哪位好心人帮我们在保密协议申请处理期间获取 HSE 固件参考手册? 在得到确切答案之前,我们的设计特意限制在模块 0 和 1 内,这就给我们留下了边读边写的问题。 提前感谢您的帮助。 Re: S32K344 – Is PFLASH Block 2 available to the application with HSE_B firmware installed? 谢谢分享 😉 Re: S32K344 – Is PFLASH Block 2 available to the application with HSE_B firmware installed? 你好@manu_fenixecu , A1. 是的,Block 2 完全是用户闪存。 有关 S32K344、S32K314 和 S32K324 的闪存布局,请参阅 HSE-B FW RM v2.7 中的图 33(FULL_MEM)和图 34(AB_SWAP)。 A2. HSE-B FW RM v2.7,第 14.6.4.2 节 (HSE_CONFIG_GPR3) — 应用程序应读取第 27 位。 A3.唯一公开的参考资料是 S32K3xx RM rev12,表 198(“启用 HSE_B 固件使用功能标志时的配置详细信息”)。没有签署保密协议,HSE-B FW RM 不能共享。如需 HSE 相关支持,请使用支持工单,而不是在此公共社区中提问。 此致, 丹尼尔
記事全体を表示
i.MX8DXL CAAM COVER 对 P-384 私钥/黑斑用例的限制 您好,NXP团队: 我们正在评估 i.MX8DXL CAAM 对 ECDSA P-384 黑键/blob 的支持情况。 观察到的结果 P-256 从外部提供的明文 P-256 私钥开始: 明文密钥 → 封面 → 黑键斑点 从黑斑中恢复黑键 ECDSA 签名/核实 结果:通过 P-384(CAAM 生成的黑键) 生成 ECDSA 私钥,颜色为 KEY_COLOR_BLACK 无需 COVER 操作即可从私钥生成黑块 从黑斑中恢复黑键 ECDSA 签名/核实 结果:通过 P-384(外部明文私钥) 从外部提供的明文 P-384 私钥(48 字节)开始: 明文密钥 → 封面 → 黑键斑点 从黑斑中恢复黑键 ECDSA 签名/核实 结果:失败 补充观察 我们在NXP的补丁中注意到以下注释: https://github.com/nxp-imx-support/imx_sec_apps/blob/master/caam-ecdsa-blackkey/patch/0002-caam-black-key-blob-feature.patch /* * KEY 命令似乎限制为 32 字节,因此我们应该使用加载方式。 * 改为使用最多可加载 64 字节的命令。 * * TODO:KEY 命令表明它应该能够加载更大的密钥。 * 小于 32 字节,但实际上行不通 * * TODO:LOAD 命令表明它应该能够加载最多 96 个文件 * 字节键在实践中不起作用,并且限制为 64 字节。 */ 我们观察到了类似的行为。 使用 LOAD 命令而不是 KEY 命令,我们可以处理大于 32 字节的密钥,包括 48 字节的 P-384 私钥。 然而,这并不能解决上述问题。虽然可以将密钥覆盖并存储在一个块状物中,但恢复后的黑密钥不能成功用于 ECDSA 签名/验证。   我们的疑问: CAAM COVER 操作对于大于 32 字节的 ECC 私钥是否存在任何已知限制? 通过 COVER 导入外部 P-384 明文私钥,然后将其用作 ECDSA 黑密钥,这是否是支持的用例? 观察到的这种现象是否是由于 CAAM 硬件限制造成的? 是否有推荐的 CAAM 方法可以导入外部生成的 P-384 明文私钥并将其用作 ECDSA 操作的黑密钥? 任何指导都将不胜感激。 谢谢,并致以最诚挚的问候! 霍詹姆斯。 Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case 补充说明:   我们关注的重点不仅限于 ECDSA 用例。   即使通过 COVER 导入外部 P-384 私钥不是 ECDSA 支持的工作流程,我们仍然想了解 COVER 操作本身的局限性。   在我们的应用中,COVER 操作不仅可以用于保护 ECDSA 私钥,还可以用于保护一般敏感数据。因此,支持大于 32 字节的有效载荷大小是一个重要的考虑因素。 根据我们的测试,使用 LOAD 命令变通方法可以处理大于 32 字节的有效载荷。小于约 80 字节的有效载荷似乎可以正常工作,而更大的有效载荷则表现出不稳定的行为。我们想了解这些观察结果反映的是 CAAM 的实际局限性还是实施问题。 NXP能否也澄清一下,COVER 操作本身是否存在任何已记录的大小限制,而与 ECDSA 用例无关?   谢谢! Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case 我们需要搭建测试CAAM功能的环境。一旦有了结果,我们会立即通知您。
記事全体を表示
在调用 mlockall(MCL_FUTURE) 的进程中使用 iMX8MP GPU 会导致内核 BUG() 一位客户报告了一个与使用 iMX8MP GPU(使用 EGL 绘图)相关的问题。当初始化 GPU 的进程先前调用 mlockall(MCL_FUTURE) 时,一旦 CMA 区域被映射到用户空间,内核就会报告以下 BUG(): Kernel BUG at remap_pfn_range_internal+0x23c/0x2c8 Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP CPU: 0 PID: 3197 Comm: galcore_window_ Tainted: G O 6.6.142-7.7.0-devel #1-Torizon Hardware name: Toradex Verdin iMX8M Plus WB on Verdin Development Board (DT) pc : remap_pfn_range_internal+0x23c/0x2c8 x27: 00000000a2100000 x20: 0068000000000fcb x19: 0000007f90000000 ^^^^^^^^^^^^^^^^^^^^^^ the PTE already present Call trace: remap_pfn_range_internal+0x23c/0x2c8 remap_pfn_range+0x24/0x58 dma_direct_mmap+0xf4/0x150 dma_mmap_attrs+0x18/0x3c _CMAFSLMapUser+0x9c/0x150 [galcore] gckOS_LockPages+0xe4/0x148 [galcore] gckKERNEL_MapVideoMemory+0x90/0x1dc [galcore] gckVIDMEM_NODE_LockCPU+0x1b4/0x250 [galcore] _LockVideoMemory.isra.0+0x1f4/0x28c [galcore] gckKERNEL_Dispatch+0x210/0x1730 [galcore] gckDEVICE_Dispatch+0xcc/0x220 [galcore] drv_ioctl+0x340/0x444 [galcore] __arm64_sys_ioctl+0xac/0xf0 Kernel panic - not syncing: Oops - BUG: Fatal exception mlockall(MCL_FUTURE) 通常用于实时应用程序,而报告此问题的客户正在使用 CODESYS 来驱动其 HMI。 我们利用人工智能辅助分析了该问题,并找到了该问题触发原因的合理解释: galcore 驱动程序中的 CMA 分配器不包含 .mmap() 方法。钩。在 _CMAFSLMapUser() 执行期间,它调用 mmap() 获取 vma,然后使用该 vma 通过 find_vma() 定位 CMA 区域。mmap() 的调用方式导致内核延迟分配 SHM 区域以满足请求。正常情况下,当找到 CMA 区域并重新映射时,此分配会在片刻后被丢弃。 但是,当 MCL_FUTURE 处于活动状态时,内核不能再延迟分配 SHM 区域,因此它会在 mmap() 返回之前填充整个区域。在这种情况下,该地址上有有效的页面,而稍后对 remap_pfn_range() 的调用最终会默默地丢弃内存管理维护信息,这正是 BUG() 所阻止的。 我将附上一个 zip 文件,其中包含一个程序的源代码,该程序可以稳定地重现该问题,而无需运行 CODESYS。AI代理建议使用以下补丁来修复此问题: diff -uNr a/hal/kernel/inc/gc_hal_options.h b/hal/kernel/inc/gc_hal_options.h --- a/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:00:44.596621860 +0000 +++ b/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:01:15.643862002 +0000 @@ -1471,9 +1471,17 @@ * Enable this macro can replace the /dev/zero by anon_inode: * [galcore] in /proc/ /maps. * Without the macro, run 'cat /proc/ /maps' will print "/dev/zero". + * + * It is also what gives the allocators an ->mmap handler, which is + * required so that the reservation made by vm_mmap() is created as a + * device mapping (VM_IO | VM_PFNMAP) rather than as ordinary anonymous + * memory. Without it, a process that has called mlockall(MCL_FUTURE) + * gets the range pre-faulted inside vm_mmap(), and the subsequent + * remap_pfn_range() then hits BUG_ON(!pte_none()) in remap_pte_range(). + * See tmp_mmap() in gc_hal_kernel_allocator.c. */ #ifndef gcdANON_FILE_FOR_ALLOCATOR -# define gcdANON_FILE_FOR_ALLOCATOR 0 +# define gcdANON_FILE_FOR_ALLOCATOR 1 #endif /* diff -uNr a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c --- a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:00:44.605314869 +0000 +++ b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:01:15.644216883 +0000 @@ -400,7 +400,13 @@ gcmkHEADER_ARG("Allocator=%p Mdl=%p Cacheable=%d", Allocator, Mdl, Cacheable); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) +#if gcdANON_FILE_FOR_ALLOCATOR + /* Same as the gfp, dma and reserved_mem allocators: go through the + * allocator's anon file so that its ->mmap handler runs. */ + userLogical = (gctPOINTER)vm_mmap(Allocator->anon_file, +# else userLogical = (gctPOINTER)vm_mmap(gcvNULL, +# endif 0L, Mdl->numPages * PAGE_SIZE, PROT_READ | PROT_WRITE, diff -uNr a/hal/os/linux/kernel/gc_hal_kernel_allocator.c b/hal/os/linux/kernel/gc_hal_kernel_allocator.c --- a/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:00:44.603242857 +0000 +++ b/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:01:15.644041018 +0000 @@ -104,6 +104,36 @@ static int tmp_mmap(struct file *fp, struct vm_area_struct *vma) { + /* + * Declare the reservation as a device mapping with raw PFNs, before + * mmap() returns it to the caller. remap_pfn_range() sets both flags + * anyway; setting them here only makes them effective from the moment + * the VMA is created, and that is what matters: + * + * - the kernel treats VM_IO | VM_PFNMAP as VM_SPECIAL, documented in + * include/linux/mm.h as "Special vmas that are non-mergable, + * non-mlock()able". mmap_region() therefore clears VM_LOCKED from + * this VMA and leaves mm->locked_vm alone, and __mm_populate() + * skips it outright ("if (vma->vm_flags & (VM_IO | VM_PFNMAP)) + * continue;" in mm/gup.c). + * + * - so a process that has called mlockall(MCL_FUTURE) no longer has + * this range pre-faulted inside vm_mmap(). Every other mapping in + * that process keeps being locked and pre-faulted as before; only + * device memory, which is neither pageable nor swappable and gains + * nothing from being pre-faulted, is left out. + * + * - and the allocator's own remap_pfn_range(), a few microseconds + * later, therefore finds an empty range instead of one the kernel + * has just populated, so it no longer trips + * BUG_ON(!pte_none(ptep_get(pte))) in remap_pte_range(). + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) + vm_flags_set(vma, VM_IO | VM_PFNMAP); +#else + vma->vm_flags |= VM_IO | VM_PFNMAP; +#endif + return 0; } 上游驱动程序使用了一种不同的机制来绕过这个问题。其他 galcore 分配器使用相同的模式(调用 vm_mmap 获取 vma),因此很可能容易受到相同的 BUG() 的影响。 请您调查并修复 galcore 驱动程序?这个问题导致实际应用场景无法正常运行,直接影响到我们的客户。 谢谢! 拉斐尔 Re: Using iMX8MP GPU on a process that call mlockall(MCL_FUTURE) causes kernel BUG() 嗨@rbeims 让我先运行一下测试,然后再和GPU团队确认。 此致, 志明
記事全体を表示
TJA1445がスリープモードの場合、CANHとCANLは低レベルになります。 こんにちは、 TJA1445をスリープモードでテストする際、ウェイクアップソースモードをWUFに設定し、VBATVCCをデフォルトで0、CPNCを1、PNCOKを1に設定した場合、スリープモードに入った後にCANHとCANLが2.5Vではなく低レベル(0V)になるのはなぜですか?この時点でCANの状態は「CANオフライン」ですか?TJA1445がスリープモードに入ったときにCANHとCANLが2.5Vになるように設定するにはどうすればよいですか?現在のテスト環境では、CANメッセージを1つ送信するだけではTJA1445をウェイクアップするには不十分です。 liugaosong_0-1788782128664.pngliugaosong_0-1788782128664.pngliugaosong_0-1788782128664.png CH1はINHピン、CH2はCANHピンです。ご覧のとおり、スリープモードは低レベルです。 Re: TJA1445 休眠时CANH和CANL为低电平 PN関連のレジスタが電源障害前に設定されていれば、VCC/VIOをオフにしてBATのみを残すことができます。  そして、バス上でWUPに一致するメッセージが見つかった場合、CANオフラインからCANオフラインバイアスに移行できます。WUFに一致する別のメッセージを受信すると、PNウェイクアップを開始できます。 WUPメッセージの要件は、ほとんどのメッセージで一般的に満たされています。つまり、特定のフレームを2つ連続して送信すれば、デバイスを起動するのに十分です。     Re: TJA1445 休眠时CANH和CANL为低电平 こんにちは、 ボードがスリープモードになり、VCCがオフになった場合、TJA1445は1フレームでウェイクアップできないのでしょうか?CANオフラインからCANオフラインバイアスへのプロセスを経る必要があるのでしょうか?このとき、CANHとCANLは2.5Vになるのでしょうか、それともCANステータスが常にCANオフラインモードのままTJA1445はスリープモードに入るのでしょうか?
記事全体を表示
Flash Drives # which is best flash drive avialble now in the market ## Please tell me Re: Flash Drives Hi@reedjhn9 I didn't quite understand your question. Could you describe it in more detail—specifically, the product you are using and the exact issue you want to know about?
記事全体を表示
USB初期化失敗: -22 こんにちは、 USBポート経由でuucツールを使用してwic.b2zイメージをeMMCに書き込もうとしています。書き込み中にUSB初期化失敗:-22エラーが発生しました。imx8mpプロセッサを使用しています。 bootcmd_mfg を実行します: mfgtool_args を実行します。iminfo が${initrd_addr}の場合、test が${tee}の場合、bootm が${tee_addr} ${initrd_addr} ${fdt_addr}の場合、booti が${loadaddr} ${initrd_addr} ${fdt_addr}の場合、fi を実行します。それ以外の場合は、echo "fastboot を実行します..." を実行します。fastboot 0 を実行します。fi を実行します。 自動起動を停止するには、任意のキーを押してください: 0 ## 43800000 番地の画像を確認中... 不明な画像フォーマット! fastbootを実行... USB初期化失敗: -22 u-boot=>     i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus Re: USB init failed: -22 こんにちは、 問題の原因を分析するために、ボードの起動設定と全過程を共有してください。 Re: USB init failed: -22 U-Boot SPL 2024.04-lf_v2024.04+g6c4545203d1+p0(2024年11月15日 - 04:02:13 +0000) DDRINFO: DRAM initを起動 DDRINFO:DRAMレート4000MTS DDRINFO:ddrphyのキャリブレーション完了 DDRINFO: ddrmix設定完了 第0節:RNGのインスタンス化 ノーマルブート BOOTROMからの起動を試みています 起動段階:USB起動 img info 0x48022fa0、サイズ1064を探せます ダウンロードを続ける必要があります 1024 注意:JR0はHABで使用可能なのでNSにリリースしないでください 通知:BL31: v2.10.0(リリース):オートモーティブ-15.0.0_1.1.0 お知らせ:BL31:製造日時:2024年11月4日 08:52:12 U-Boot 2024.04-lf_v2024.04+g6c4545203d1+p0(2024年11月15日 - 04:02:13 +0000) CPU:i.MX8MP Lite[4] rev1.1 1600 MHz(1200 MHzで動作) CPU:インダストリアル温度グレード(-40°Cから105°C)で35°Cに対応 リセット原因:POR(POR) モデル:NXP i.MX8MPlus LPDDR4 EVKボード DRAM:6 GiB tcpc_init: デバイスIDが見つからない=0x50 setup_typec: tcpc port2 init 失敗、err=-19 tcpc_init: デバイスIDが見つからない=0x50 setup_typec: tcpc port1 init 失敗、err=-19 コア:284デバイス、36 uクラス、デバイスツリー:別々 MMC: FSL_SDHC: 1, FSL_SDHC: 2 どこからともなく環境を読み込む...了解 [*]-ビデオリンク0adv7535_mipi2hdmi adv7535@3d:cecデバイスID=0x3cが見つかりません プローブ失敗 パネル装置adv7535@3d 表示タイミングが取得できない プローブ映像装置故障、退位-19 [0] LCD-controller@32e80000、ビデオ [1] mipi_dsi@32e60000、video_bridge [2] adv7535@3d、パネル adv7535_mipi2hdmi adv7535@3d: cecデバイスIDが見つからない=0x3c プローブ失敗 パネル装置adv7535@3d 表示タイミングが取得できない プローブ映像装置故障、退位-19 出演:連続ドラマ 終了:連続ドラマ えっと:連続 第0節:RNGのインスタンス化 MMC:カードは提示されていません USB起動検出。Fastbootモードに入る! ネット:FEC0のPHYが取得できませんでした:addr 1 FEC0: addr 1のPHYが取得できませんでした eth1:ethernet@30bf0000【プライム】 速攻:通常 mfgtoolsのUSBから起動 警告 - mfgtoolsのデフォルト環境をご利用ください 、デフォルト環境を使用 実行bootcmd_mfg:実行mfgtool_args;もし情報が ${initrd_addr}なら;もしテストなら ${tee} =はい;次にbootm ${tee_addr} ${initrd_addr} ${fdt_addr};そうでなければbooti ${loadaddr} ${initrd_addr} ${fdt_addr};fi;そうでなければエコー「Run fastboot ...";ファストブート0;FI; どのキーを押してもオートブートを止める:0 ## 43800000で画像確認中... 不明な画像フォーマット! fastbootを実行... USB初期化失敗: -22 u-boot=> Re: USB init failed: -22 こんにちは、 最後のプリビルドイメージ(Linux 6.18.20_2.0.0)と uuu ツールの最終バージョンを再度フラッシュしてみてください。 敬具。
記事全体を表示
USB 初始化失败:-22 您好, 我尝试使用 uuc 工具通过 USB 端口将 wic.b2z 镜像刷入 eMMC 存储。刷写过程中出现 USB 初始化失败:-22 错误。我使用的是 imx8mp 处理器。 运行 bootcmd_mfg: run mfgtool_args;if iminfo ${initrd_addr} ; then if test ${tee} = yes; then bootm ${tee_addr} ${initrd_addr} ${fdt_addr} ; else booti ${loadaddr} ${initrd_addr} ${fdt_addr} ; fi; else echo "运行 fastboot ..."; fastboot 0; fi; 按任意键停止自动启动:0 正在检查 43800000 处的图像... 未知图像格式! 运行 fastboot... USB 初始化失败:-22 u-boot=>     i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Re: USB init failed: -22 你好, 请提供完整的操作流程和主板的启动配置,以便我们分析问题原因。 Re: USB init failed: -22 U-Boot SPL 2024.04-lf_v2024.04+g6c4545203d1+p0(2024年11月15日 - 04:02:13 +0000) DDRINFO:启动 DRAM 初始化 DDRINFO:DRAM 速率 4000MTS DDRINFO:DDRPHY 校准完成 DDRINFO:ddrmix 配置完成 SEC0:RNG 实例化 正常启动 尝试从 BOOTROM 启动 启动阶段:USB 启动 查找图像信息 0x48022fa0,大小 1064 需要继续下载 1024 注意:请勿将 JR0 释放给 NS,因为它可能被 HAB 使用。 注意:BL31:v2.10.0(版本):automotive-15.0.0_1.1.0 通知:BL31:构建时间:2024年11月4日 08:52:12 U-Boot 2024.04-lf_v2024.04+g6c4545203d1+p0(2024年11月15日 - 04:02:13 +0000) CPU:i.MX8MP Lite[4] rev1.1 1600 MHz(运行频率为 1200 MHz) CPU:工业级耐温等级(-40℃至105℃),工作温度35℃ 复位原因:POR 型号:NXP i.MX8MPlus LPDDR4 EVK 板 动态随机存取存储器(DRAM):6 GiB tcpc_init:找不到设备 ID=0x50 setup_typec:tcpc port2 初始化失败,错误代码=-19 tcpc_init:找不到设备 ID=0x50 setup_typec:tcpc port1 初始化失败,错误代码=-19 核心:284 个设备,36 个微类,设备树:独立 MMC:FSL_SDHC:1,FSL_SDHC:2 环境正在加载,但不知从何而来……好的 [*]-视频链接 0adv7535_mipi2hdmi adv7535@3d:找不到 CEC 设备 ID=0x3c 探测面板设备 adv7535@3d 失败 无法获取显示时序 探测视频设备故障,返回码 -19 [0] lcd-controller@32e80000,视频 [1] mipi_dsi@32e60000,视频桥 [2] adv7535@3d,面板 adv7535_mipi2hdmi adv7535@3d:找不到 CEC 设备 ID=0x3c 探测面板设备 adv7535@3d 失败 无法获取显示时序 探测视频设备故障,返回码 -19 输入:串行 输出:串口 错误:串行 SEC0:RNG 实例化 MMC:未持有卡片 检测 USB 启动。即将进入fastboot模式! 网络:无法获取 FEC0 的 PHY:地址 1 无法获取 FEC0 的 PHY:地址 1 eth1:以太网@30bf0000 [PRIME] Fastboot:正常 从 USB 启动 mfgtools *** 警告 - 请使用 mfgtools 的默认环境 使用默认环境 运行 bootcmd_mfg: run mfgtool_args;if iminfo ${initrd_addr} ; then if test ${tee} = yes; then bootm ${tee_addr} ${initrd_addr} ${fdt_addr} ; else booti ${loadaddr} ${initrd_addr} ${fdt_addr} ; fi; else echo "运行 fastboot ..."; fastboot 0; fi; 按任意键停止自动启动:0 ## 正在检查 43800000 处的图像... 未知图像格式! 运行 fastboot... USB 初始化失败:-22 u-boot=> Re: USB init failed: -22 你好, 请尝试再次刷入最新的预编译镜像( Linux 6.18.20_2.0.0 )和最新版本的uuu工具。 此致敬礼
記事全体を表示
S32K344 – Is PFLASH Block 2 available to the application with HSE_B firmware installed? Hello, We are developing a Power Distribution Unit around the S32K344 (HSE_FW_S32K344_0_2_55_0, 0.2.55.0 build pb150130 (30 janvier 2025). Type : Standard FW configuration) with a dual-bank bootloader and secure firmware update. We are stuck on one point of the flash layout and would appreciate a definitive answer. The problem Our NVM configuration regions (runtime parameters written by the application) currently live in PFLASH Block 0, in the same block as the executing code. Writing to them at runtime triggers read-while-write stalls on the core, which freezes the unit for the duration of the program/erase operation. This is not acceptable for our application (the PDU drives safety-relevant loads). The obvious fix is to move these regions to a block that does not contain executed code. Block 2 (0x600000–0x6FFFFF, sectors 368–381) is the natural candidate: it is not used by our application banks, and it is not the block where HSE stores its data. What we have checked so far – The S32K3xx Reference Manual describes the PFLASH block structure but does not say anything about HSE reservations. – The public HSE Basic FW FAQ states that Blocks 0 and 1 are guaranteed for the application, and that the HSE firmware reserves part of Block 3 (176 KB in FULL_MEM configuration). It does not mention Block 2 at all. – The HSE demo application and RTD examples we looked at do not use Block 2 either, so we cannot infer anything from them. – We have submitted an NDA / DocStore access request for the HSE Firmware Reference Manual v2.4, which we understand covers this. The request is pending. Questions With HSE_B firmware installed, is Block 2 entirely available to the application (code and data) in FULL_MEM configuration? What about AB_SWAP? Is there any HSE-related restriction on erasing/programming Block 2 at runtime from the application core (e.g. sectors locked or monitored by HSE, SBAF or secure boot)? Is there a public document that describes the full PFLASH block allocation between HSE firmware, SBAF and the application? If not, could someone help us get access to the HSE Firmware Reference Manual while our NDA request is processed? Until we have a confirmed answer, our design is deliberately confined to Blocks 0 and 1, which leaves us with the read-while-write issue. Thank you in advance for your help. Re: S32K344 – Is PFLASH Block 2 available to the application with HSE_B firmware installed? Hello @manu_fenixecu, A1. Yes, Block 2 is entirely user flash. Refer to HSE-B FW RM v2.7, Figure 33 (FULL_MEM) and Figure 34 (AB_SWAP) for the flash memory layout of S32K344, S32K314, and S32K324. A2. HSE-B FW RM v2.7, Section 14.6.4.2 (HSE_CONFIG_GPR3) — the application should read bit 27. A3. The only publicly available reference is the S32K3xx RM rev12, Table 198 ("Configuration details when the HSE_B firmware usage feature flag is enabled"). The HSE-B FW RM cannot be shared without an NDA in place. For HSE-related support, please use support tickets rather than this public community. Regards, Daniel Re: S32K344 – Is PFLASH Block 2 available to the application with HSE_B firmware installed? Thank you for sharing 😉
記事全体を表示
mlockall(MCL_FUTURE)を呼び出すプロセスでiMX8MP GPUを使用すると、カーネルBUG() あるお客様がiMX8MPのGPU使用(EGLによる描画)に関する問題を報告しました。以前mlockall(MCL_FUTURE)と呼ばれていたGPU初期化プロセスが、CMA領域がユーザースペースにマッピングされると、カーネルは以下のBUG()を報告します: Kernel BUG at remap_pfn_range_internal+0x23c/0x2c8 Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP CPU: 0 PID: 3197 Comm: galcore_window_ Tainted: G O 6.6.142-7.7.0-devel #1-Torizon Hardware name: Toradex Verdin iMX8M Plus WB on Verdin Development Board (DT) pc : remap_pfn_range_internal+0x23c/0x2c8 x27: 00000000a2100000 x20: 0068000000000fcb x19: 0000007f90000000 ^^^^^^^^^^^^^^^^^^^^^^ the PTE already present Call trace: remap_pfn_range_internal+0x23c/0x2c8 remap_pfn_range+0x24/0x58 dma_direct_mmap+0xf4/0x150 dma_mmap_attrs+0x18/0x3c _CMAFSLMapUser+0x9c/0x150 [galcore] gckOS_LockPages+0xe4/0x148 [galcore] gckKERNEL_MapVideoMemory+0x90/0x1dc [galcore] gckVIDMEM_NODE_LockCPU+0x1b4/0x250 [galcore] _LockVideoMemory.isra.0+0x1f4/0x28c [galcore] gckKERNEL_Dispatch+0x210/0x1730 [galcore] gckDEVICE_Dispatch+0xcc/0x220 [galcore] drv_ioctl+0x340/0x444 [galcore] __arm64_sys_ioctl+0xac/0xf0 Kernel panic - not syncing: Oops - BUG: Fatal exception mlockall(MCL_FUTURE)はリアルタイムアプリケーションで一般的に使われており、問題を報告した顧客はCODESYSを使ってHMIを駆動しています。 AIを活用した分析を実施した結果、問題が発生する理由として考えられる説明が明らかになりました。 galcoreドライバーのCMAアロケーターには.mmap()が含まれていません。フック。_CMAFSLMapUser() の実行中に、mmap() を呼び出して vma を取得し、それを使用して find_vma() を使用して CMA 領域を特定します。mmap() の呼び出し方法により、カーネルは要求を満たすために SHM 領域を遅延的に割り当てることになります。通常の場合、CMAが見つかって再マッピングされると、この割り当てはすぐに破棄されます。 しかし、MCL_FUTUREがアクティブなとカーネルはもはやSHM領域を怠惰に割り当てることができなくなり、mmap()が戻る前にエリア全体を埋め尽くします。この場合、このアドレスには有効なページがあり、後のremap_pfn_range()への呼び出しはメモリ管理のハウスキーピング情報を静かに破棄することになり、これはまさにBUG()が防いでいることです。 CODESYSを実行せずに問題を再現できるプログラムのソースコードを含むzipファイルを添付します。AIエージェントは、この問題を修正するために以下のパッチを提案しました。 diff -uNr a/hal/kernel/inc/gc_hal_options.h b/hal/kernel/inc/gc_hal_options.h --- a/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:00:44.596621860 +0000 +++ b/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:01:15.643862002 +0000 @@ -1471,9 +1471,17 @@ * Enable this macro can replace the /dev/zero by anon_inode: * [galcore] in /proc/ /maps. * Without the macro, run 'cat /proc/ /maps' will print "/dev/zero". + * + * It is also what gives the allocators an ->mmap handler, which is + * required so that the reservation made by vm_mmap() is created as a + * device mapping (VM_IO | VM_PFNMAP) rather than as ordinary anonymous + * memory. Without it, a process that has called mlockall(MCL_FUTURE) + * gets the range pre-faulted inside vm_mmap(), and the subsequent + * remap_pfn_range() then hits BUG_ON(!pte_none()) in remap_pte_range(). + * See tmp_mmap() in gc_hal_kernel_allocator.c. */ #ifndef gcdANON_FILE_FOR_ALLOCATOR -# define gcdANON_FILE_FOR_ALLOCATOR 0 +# define gcdANON_FILE_FOR_ALLOCATOR 1 #endif /* diff -uNr a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c --- a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:00:44.605314869 +0000 +++ b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:01:15.644216883 +0000 @@ -400,7 +400,13 @@ gcmkHEADER_ARG("Allocator=%p Mdl=%p Cacheable=%d", Allocator, Mdl, Cacheable); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) +#if gcdANON_FILE_FOR_ALLOCATOR + /* Same as the gfp, dma and reserved_mem allocators: go through the + * allocator's anon file so that its ->mmap handler runs. */ + userLogical = (gctPOINTER)vm_mmap(Allocator->anon_file, +# else userLogical = (gctPOINTER)vm_mmap(gcvNULL, +# endif 0L, Mdl->numPages * PAGE_SIZE, PROT_READ | PROT_WRITE, diff -uNr a/hal/os/linux/kernel/gc_hal_kernel_allocator.c b/hal/os/linux/kernel/gc_hal_kernel_allocator.c --- a/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:00:44.603242857 +0000 +++ b/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:01:15.644041018 +0000 @@ -104,6 +104,36 @@ static int tmp_mmap(struct file *fp, struct vm_area_struct *vma) { + /* + * Declare the reservation as a device mapping with raw PFNs, before + * mmap() returns it to the caller. remap_pfn_range() sets both flags + * anyway; setting them here only makes them effective from the moment + * the VMA is created, and that is what matters: + * + * - the kernel treats VM_IO | VM_PFNMAP as VM_SPECIAL, documented in + * include/linux/mm.h as "Special vmas that are non-mergable, + * non-mlock()able". mmap_region() therefore clears VM_LOCKED from + * this VMA and leaves mm->locked_vm alone, and __mm_populate() + * skips it outright ("if (vma->vm_flags & (VM_IO | VM_PFNMAP)) + * continue;" in mm/gup.c). + * + * - so a process that has called mlockall(MCL_FUTURE) no longer has + * this range pre-faulted inside vm_mmap(). Every other mapping in + * that process keeps being locked and pre-faulted as before; only + * device memory, which is neither pageable nor swappable and gains + * nothing from being pre-faulted, is left out. + * + * - and the allocator's own remap_pfn_range(), a few microseconds + * later, therefore finds an empty range instead of one the kernel + * has just populated, so it no longer trips + * BUG_ON(!pte_none(ptep_get(pte))) in remap_pte_range(). + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) + vm_flags_set(vma, VM_IO | VM_PFNMAP); +#else + vma->vm_flags |= VM_IO | VM_PFNMAP; +#endif + return 0; } 上流ドライバーはこの問題を回避する別のメカニズムを使用しています。他の galcore アロケータも同じパターン (vm_mmap を呼び出して vma を取得する) を使用しているため、同じ BUG() の影響を受ける可能性があります。 この件について調べて、galcoreドライバーを直してもらえますか?この問題は実際のユースケースが正常に動作することを妨げており、直接的にお客様に影響を及ぼしています。 ありがとうございました。 ラファエル Re: Using iMX8MP GPU on a process that call mlockall(MCL_FUTURE) causes kernel BUG() こんにちは@rbeims  テストを実行してからGPUチームに確認させてください。 よろしくお願いします、 志明
記事全体を表示
i.MX8QXP C0: クラッシュ証拠キャプチャ SCwatchdogresetCortex-M4監視A35クラスタ全体にラムーブ こんにちは、NXPチームの皆さん、 プラットフォームの詳細: SoC: i.MX8QXP C0、MEKリファレンスに基づくカスタムボード BSP: NXP Linux 6.6.3 [状態完全タグ、例:lf-6.6.3-1.0.0]、ヨクト・スカースギャップ SCFWバージョン:[scu_rmを実行し、ブートログを確認してバージョンを貼り付けてください] SECO/AHAB: [有効/無効、バージョン] U-Boot: [2024.04/tag] Cortex-M4(CM4_0):現在使用されておらず、ファームウェアはインストールされていません ユースケース:生産オートモーティブ向けインストゥルメントクラスター;A35はLinux/Weston HMIを動作させています 問題提起: 実稼働環境では、A35 複合システムがクラッシュしたり、ハードハングアップ(カーネルパニック/ロックアップ)を起こしたりするケースが時折発生します。現在では持続的なクラッシュの証拠もなく、自律的な復旧もありません。クラスターは手動で電源を入れ直すまで停止状態のままで、フィールドやDVの発生はデバッグできません。我々は、(a) pstore/ramoops を使用したウォッチドッグリセット後のパニックログの永続化、および (b) A35 パーティションのみをリセットできる機能を備えた CM4_0 による A35 の監視を実装したいと考えています。 i.MX8QXP C0において、システムウォッチドッグ(imx-sc-wdt、SCFWによって処理される)が作動した場合、どのようなタイプのリセットが実行されますか?(SoC/ボード全体のリセット、またはAクラスタパーティションのリセット)これはSCFWボードファイルまたはsc_pm API経由で設定可能ですか? Re: i.MX8QXP C0: crashevidence capture ramoops across SCwatchdogresetCortex-M4 supervision A35 clus こんにちは、 はい、SCFWが管理する仮想監視犬を使ってパーティションをリセットすることもできます SC_TIMER_WDOG_ACTION_PARTITION 動作はLinux/A35パーティションのみをリセットします。 また、SCFW sc_pm APIを介してA35パーティション上で sc_pm_reset_partition() を呼び出すことで、CM4_0ファームウェアから直接同じ効果を得る方法もあります。これにより、CM4_0はウォッチドッグメカニズムとは独立した完全な監視制御が可能になります。 この件については、あなたが使っている特定のバージョンのSCFW移植ガイドで詳しく知ることができます。 よろしくお願いいたします。 アルド。
記事全体を表示
S32K322 LCU/Emios S32K144とS32K322のエンコーダの実装方法と原理の違いについて理解を深めたいです。 S32K144では、初期の角度がPWMを通じて伝達され、その後カウントがABIインターフェースに提供されてさらなるプロセッシングが行われます。また、FTMを介した直交デコーダ機能を使用して、A、B、I信号/配線の断線を検出する故障検出メカニズムも備えています。 しかし、S32K322では、同じロジックが期待どおりに動作せず、特に方向を正しく検出できないことが問題となっています。 例えば、Iパルス線が切断されると、絶対カウントはゼロになる。これによりスイッチングが誤作動し、その後、絶対カウントが徐々に変化し、最終的に4095パルスに達する。 S32K144では、Iパルスが切断された場合でも、単一出力のA信号とB信号によって適切なカウント値が得られるため、故障を検出することが可能です。 以下のケースで期待される挙動を例示したり、明確にしていただけますか? Aパルスワイヤーが切断されました Bパルスワイヤーが外れています Iパルスワイヤが切断されました AとBのパルスワイヤーが切断されています A、B、Iパルスワイヤが切断されている また、S32K144とS32K322の両方で、これらのシナリオでエンコーダのカウントと方向がどのように振る舞うかについても説明していただけると助かります。 よろしくお願いいたします。 ティル S32K3 S32K1 ブラシレスDCモータ  Re: S32K322 LCU/Emios こんにちは、 S32K322にはS32K144上にあるFTMペリフェラルは含まれていません。S32K3ファミリでは、直交エンコーダの機能はLCU、TRGMUX、eMIOSモジュールの連携を中心に構築されています。これは、S32K144に搭載されているFTMベースの直交デコーダとは根本的に異なるアーキテクチャである。 S32K322では、PHAとPHBはLCUによって別々のCWおよびCCWパルスストリームにデコードされ、2つのeMIOSチャネルでカウントされます。アプリケーションはこれらのカウンターの差からインクリメンタル位置を得ます。 S32K3直交デコーダデザインの有用な出発点は、アプリケーションノートAN13767、特に4.2.5節で、方向検出、TRGMUXルーティング、eMIOSエッジカウンタ構成に使用されるLUT真理表を説明しています。追加情報はS32K344モータ制御キットのページおよび関連するコミュニティディスカッションでご覧いただけます。 AN13767: アプリケーションノートAN13767 S32K344モーター制御キット: S32K344 BLDC/PMSM開発キット コミュニティディスカッション: S32K344の直交デコーダ LCUのLUT実装に基づき、A信号またはB信号のいずれかが切断されても、残ったチャネルはLCU出力でCWまたはCCWパルスを生成するトランジションを生成できます。その結果、対応するeMIOSカウンターはカウントを継続し、方向情報が引き続き取得できる場合があります。しかし、パルスレートが低下するため、通常動作時と比較して1回転あたりのカウント数が約4分の1に減少する。 A信号とB信号の両方が切断されている場合、LCU入力には有効な直交位相遷移は存在しません。その結果、CWパルスもCCWパルスも生成されず、eMIOSカウンタは変化しない。 インデックス(I)信号に関しては、NXPモーター制御キットの実装ではインデックス信号は使用されていません。位置と方向はAおよびBの直交信号のみから導かれ、位置のずれはローターアライメント時に校正されます。さらに、この実装ではインデックス信号はMCUに接続されていません。したがって、I信号を切断した際に観察される挙動はアプリケーション固有のものと考えられます。 BR、ペトル Re: S32K322 LCU/Emios アプリケーションノートに記載されているLCUのLUTロジックを完全には理解できませんでした。 私には以下の質問があります。 1. A/B信号切断の検出: 絶対カウントだけでAまたはB信号の切断を検出するのは信頼性が低いことは理解しています。なぜなら、AまたはBの信号が切断された場合でも絶対カウントが 0または4095 のままになるからです。 同時に、 CW/CCWカウンター に基づいて固定しきい値を定義するのは難しいです。なぜならローターが前後に回転し、カウンターが転がってしまうからです。したがって、CW/CCWカウンターはロールオーバー条件に応じて 4095を超え、最大65535(uint16)まで続きます。 このシナリオにおいて、 A/B信号の切断を検出するための推奨されるロジックまたは閾値は何でしょうか? カウンターローバーの状態を考慮し、この状況に適した診断方法を提案していただけますか?
記事全体を表示
S32DS license expiring Hi, when I open my S32DS I get following message:   S32 Design Studio for ARM ActivationId: 8AEC-51FD-AB5B-6A4D Evaluation Days: 9 Feature Version: 2.2 Feature Status: Evaluation (9 days) what do I have to do to extend my license?  Best regards Sandra Re: S32DS license expiring Hello, I have notified admin to prolong your license. Best regards, Peter Re: S32DS license expiring Hello, You license is now extended to 2030. Best regards, Peter Re: S32DS license expiring Hello, I could not active the S32DS, because the issue of picture, could you help me how to solve this problem? HelenLi_0-1778831877838.pngHelenLi_0-1778831877838.pngHelenLi_0-1778831877838.png Re: S32DS license expiring Help! My S32DS IDE  license is about to expire. Could you please help me extend its usage period? Thank you ! license : 1A99 90A8 2F06 339B Re: S32DS license expiring Hello: ActivationId: 04E9-8F5A-8B1F-F9C8 The license validity period needs to be extended. Re: S32DS license expiring Hello! My S32DS IDE license is about to expire. Could you please help me extend its usage period? Thank you ! license : EA09-8465-A8E8-F07B
記事全体を表示
Using iMX8MP GPU on a process that call mlockall(MCL_FUTURE) causes kernel BUG() A customer reported an issue related to the use of the iMX8MP GPU (drawing using EGL). When the process that initializes the GPU previously called mlockall(MCL_FUTURE), as soon as the CMA area is mapped into userspace, the kernel reports the following BUG(): Kernel BUG at remap_pfn_range_internal+0x23c/0x2c8 Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP CPU: 0 PID: 3197 Comm: galcore_window_ Tainted: G O 6.6.142-7.7.0-devel #1-Torizon Hardware name: Toradex Verdin iMX8M Plus WB on Verdin Development Board (DT) pc : remap_pfn_range_internal+0x23c/0x2c8 x27: 00000000a2100000 x20: 0068000000000fcb x19: 0000007f90000000 ^^^^^^^^^^^^^^^^^^^^^^ the PTE already present Call trace: remap_pfn_range_internal+0x23c/0x2c8 remap_pfn_range+0x24/0x58 dma_direct_mmap+0xf4/0x150 dma_mmap_attrs+0x18/0x3c _CMAFSLMapUser+0x9c/0x150 [galcore] gckOS_LockPages+0xe4/0x148 [galcore] gckKERNEL_MapVideoMemory+0x90/0x1dc [galcore] gckVIDMEM_NODE_LockCPU+0x1b4/0x250 [galcore] _LockVideoMemory.isra.0+0x1f4/0x28c [galcore] gckKERNEL_Dispatch+0x210/0x1730 [galcore] gckDEVICE_Dispatch+0xcc/0x220 [galcore] drv_ioctl+0x340/0x444 [galcore] __arm64_sys_ioctl+0xac/0xf0 Kernel panic - not syncing: Oops - BUG: Fatal exception mlockall(MCL_FUTURE) is commonly used by real time applications, and the customer who reported the issue is using CODESYS to drive their HMI. We executed an AI-assisted analysis of the issue, and uncovered a plausible explanation for the reason the issue is being triggered: The CMA allocator in the galcore driver doesn't include an .mmap() hook. During the _CMAFSLMapUser() execution, it calls mmap() to get a vma, which is then used to locate the CMA area using find_vma(). The way mmap() is called causes the kernel to lazilly allocate a SHM area to fullfil the request. In normal cases, this allocation gets discarded moments later when the CMA are is found and remapped. However, when MCL_FUTURE is active the kernel cannot lazilly allocate the SHM area anymore, so it goes and populates the entire area before mmap() returns. In this case we have valid pages on this address, and the later call to remap_pfn_range() would end up silently discarding the memory management housekeeping information, which is exactly what the BUG() prevents. I'll attach a zip file which contains the source code of a program that reproduces the issue consistently without the need to run CODESYS. The AI agent suggested the following patch to fix it: diff -uNr a/hal/kernel/inc/gc_hal_options.h b/hal/kernel/inc/gc_hal_options.h --- a/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:00:44.596621860 +0000 +++ b/hal/kernel/inc/gc_hal_options.h 2026-09-04 13:01:15.643862002 +0000 @@ -1471,9 +1471,17 @@ * Enable this macro can replace the /dev/zero by anon_inode: * [galcore] in /proc/ /maps. * Without the macro, run 'cat /proc/ /maps' will print "/dev/zero". + * + * It is also what gives the allocators an ->mmap handler, which is + * required so that the reservation made by vm_mmap() is created as a + * device mapping (VM_IO | VM_PFNMAP) rather than as ordinary anonymous + * memory. Without it, a process that has called mlockall(MCL_FUTURE) + * gets the range pre-faulted inside vm_mmap(), and the subsequent + * remap_pfn_range() then hits BUG_ON(!pte_none()) in remap_pte_range(). + * See tmp_mmap() in gc_hal_kernel_allocator.c. */ #ifndef gcdANON_FILE_FOR_ALLOCATOR -# define gcdANON_FILE_FOR_ALLOCATOR 0 +# define gcdANON_FILE_FOR_ALLOCATOR 1 #endif /* diff -uNr a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c --- a/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:00:44.605314869 +0000 +++ b/hal/os/linux/kernel/allocator/freescale/gc_hal_kernel_allocator_cma.c 2026-09-04 13:01:15.644216883 +0000 @@ -400,7 +400,13 @@ gcmkHEADER_ARG("Allocator=%p Mdl=%p Cacheable=%d", Allocator, Mdl, Cacheable); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) +#if gcdANON_FILE_FOR_ALLOCATOR + /* Same as the gfp, dma and reserved_mem allocators: go through the + * allocator's anon file so that its ->mmap handler runs. */ + userLogical = (gctPOINTER)vm_mmap(Allocator->anon_file, +# else userLogical = (gctPOINTER)vm_mmap(gcvNULL, +# endif 0L, Mdl->numPages * PAGE_SIZE, PROT_READ | PROT_WRITE, diff -uNr a/hal/os/linux/kernel/gc_hal_kernel_allocator.c b/hal/os/linux/kernel/gc_hal_kernel_allocator.c --- a/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:00:44.603242857 +0000 +++ b/hal/os/linux/kernel/gc_hal_kernel_allocator.c 2026-09-04 13:01:15.644041018 +0000 @@ -104,6 +104,36 @@ static int tmp_mmap(struct file *fp, struct vm_area_struct *vma) { + /* + * Declare the reservation as a device mapping with raw PFNs, before + * mmap() returns it to the caller. remap_pfn_range() sets both flags + * anyway; setting them here only makes them effective from the moment + * the VMA is created, and that is what matters: + * + * - the kernel treats VM_IO | VM_PFNMAP as VM_SPECIAL, documented in + * include/linux/mm.h as "Special vmas that are non-mergable, + * non-mlock()able". mmap_region() therefore clears VM_LOCKED from + * this VMA and leaves mm->locked_vm alone, and __mm_populate() + * skips it outright ("if (vma->vm_flags & (VM_IO | VM_PFNMAP)) + * continue;" in mm/gup.c). + * + * - so a process that has called mlockall(MCL_FUTURE) no longer has + * this range pre-faulted inside vm_mmap(). Every other mapping in + * that process keeps being locked and pre-faulted as before; only + * device memory, which is neither pageable nor swappable and gains + * nothing from being pre-faulted, is left out. + * + * - and the allocator's own remap_pfn_range(), a few microseconds + * later, therefore finds an empty range instead of one the kernel + * has just populated, so it no longer trips + * BUG_ON(!pte_none(ptep_get(pte))) in remap_pte_range(). + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) + vm_flags_set(vma, VM_IO | VM_PFNMAP); +#else + vma->vm_flags |= VM_IO | VM_PFNMAP; +#endif + return 0; } The upstream driver uses a different mechanism which bypasses this issue. Other galcore allocators use the same pattern (calling vm_mmap to get a vma) and thus are likely succeptible to the same BUG(). Could you please look into this and fix the galcore driver? This issue prevents a real use case from working properly, and is affecting our customer directly. Thank you, Rafael Re: Using iMX8MP GPU on a process that call mlockall(MCL_FUTURE) causes kernel BUG() Hi @rbeims  Let me run the test and then check with the GPU team. Best Regards, Zhiming
記事全体を表示
TJA1445 休眠时CANH和CANL为低电平 Hi,     测试TJA1445进入Sleep模式时,唤醒源模式为WUF,VBATVCC默认为0,CPNC配置为1,PNCOK配置为1,为什么进入Sleep模式后,CANH和CANL为低电平0v,不是2.5V,此时CAN state是CAN Offline吗?如何配置可以当TJA1445进入Sleep后,CANH和CANL为2.5V,因为当前环境测试下来,CAN唤醒时,只发一帧CAN报文,是无法唤醒TJA1445的, liugaosong_0-1788782128664.pngliugaosong_0-1788782128664.pngliugaosong_0-1788782128664.png CH1是INH引脚,CH2是CANH,可以看到休眠是低电平。 Re: TJA1445 休眠时CANH和CANL为低电平 如果在掉电前设置好PN相关的寄存器,是可以关掉VCC/VIO,只保留BAT的。  然后总线上如果有满足WUP的报文,可以从CAN Offline进入CAN OfflinBias。再收到符合WUF的报文就可以PN唤醒了, WUP报文的要求正常一般报文都能满足,相当于连续发两帧特定帧报文就能唤醒     Re: TJA1445 休眠时CANH和CANL为低电平 Hi, 板子休眠,VCC是关了的,TJA1445做不到一帧唤醒吗?必须要要经过从CAN Offline进入CAN OfflinBias吗?这时候CANH和CANL能不能是2.5V,还是说TJA1445进入Sleep模式,CAN状态一定是在CAN Offline模式。
記事全体を表示
U盘 目前市面上最好的U盘是哪一款? ## 请告诉我 Re: Flash Drives 你好@ reedjhn9 我不太明白你的问题。您能否更详细地描述一下——具体来说,您正在使用的产品以及您想了解的具体问题?
記事全体を表示
i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case Hi NXP team, We are evaluating ECDSA P-384 black key/blob support on i.MX8DXL CAAM. Observed results P-256 Starting from an externally provided plaintext P-256 private key: Plaintext key → COVER → black key blob Restore black key from black blob ECDSA sign/verify Result: PASS P-384 (CAAM-generated black key) Generate ECDSA private key as KEY_COLOR_BLACK Generate black blob from private key without COVER operation Restore black key from black blob ECDSA sign/verify Result: PASS P-384 (external plaintext private key) Starting from an externally provided plaintext P-384 private key (48 bytes): Plaintext key → COVER → black key blob Restore black key from black blob ECDSA sign/verify Result: FAIL Additional observation We noticed the following comments in the NXP patch: https://github.com/nxp-imx-support/imx_sec_apps/blob/master/caam-ecdsa-blackkey/patch/0002-caam-black-key-blob-feature.patch /* * KEY commands seems limited to 32 bytes, so we should use the load * command instead which can load up to 64 bytes. * * TODO: The KEY command indicate it should be able to load key bigger * than 32bytes but it doesn't work in practice * * TODO: The LOAD command indicate it should be able to load up to 96 * byte keys it doesn't work in practice and is limited to 64 bytes */ We observed similar behavior. Using the LOAD command instead of the KEY command allows us to handle keys larger than 32 bytes, including a 48-byte P-384 private key. However, this does not resolve the issue above. Although the key can be covered and stored in a blob, the restored black key cannot be used successfully for ECDSA sign/verify.   Our questions: Is there any known limitation of the CAAM COVER operation for ECC private keys larger than 32 bytes? Is importing an external P-384 plaintext private key through COVER and then using it as an ECDSA black key a supported use case? Is the observed behavior expected due to a CAAM hardware limitation? Is there a recommended CAAM method to import an externally generated P-384 plaintext private key and use it as a black key for ECDSA operations? Any guidance would be appreciated. Thanks and best regards, hojames. Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case Additional note:   Our concern is not limited to the ECDSA use case.   Even if importing an external P-384 private key through COVER is not a supported ECDSA workflow, we would still like to understand the limitations of the COVER operation itself.   In our application, the COVER operation may also be used to protect general sensitive data, not only ECDSA private keys. Therefore, support for payload sizes larger than 32 bytes is an important consideration. Based on our testing, using the LOAD-command workaround allows handling payloads larger than 32 bytes. Payloads below approximately 80 bytes appear to work, while larger sizes show inconsistent behavior. We would like to understand whether these observations reflect an actual CAAM limitation or an implementation issue. Could NXP also clarify whether there are any documented size limitations for the COVER operation itself, independent of the ECDSA use case?   Thank you. Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case We need to set up the environment to test this CAAM function. We will update you once We have some results.
記事全体を表示
IW416 Wi-Fi 射频测试模式 – PN9 / EN 300 328 有效载荷模式 你好, 我们正在使用 AN14114 Rev.7.0 对IW416进行 EN 300 328 法规测试评估。 我们的认证实验室要求使用 PN9 数据序列进行连续调制传输。 然而,在 Wi-Fi TX 连续命令中,AN14114 仅描述了一种固定的有效载荷模式: echo "tx_continuous= " 并举例如下: echo "tx_continuous=1 0 0xAAA 0 3 0x8" 请您确认一下: 1. IW416 Wi-Fi RF 测试模式是否支持直接生成 PN9/PRBS9? 2. 如果不是,NXP 推荐用于 EN 300 328 测试的有效载荷模式是什么? 3. 0xAAA 能否作为连续分组模式中 PN9 的推荐替代方案? 4. 这些设置对于连续调制传输是否正确? - 传输模式 = 0 -cs模式=0 - 活动子通道 = 3 谢谢!
記事全体を表示
IMXRT1024でヒューズを焼損させずにHABをテストする 署名のないledのblinkyコードを使ってHAB監査API(報告状況と報告イベント情報)を実装しました。EVKボードは開いており、ヒューズも焼けていません 署名なしイメージ(CSF=0) - HABが4イベント情報で失敗 署名画像 - HAB パス0イベント情報 なので、ボードでもオープンHAB認証が実行されているのでイベント情報が見られると仮定しました。 しかし今回は同じIVT(CSF=0)でプロジェクトファームウェアを使い、同じHAB監査を実施しました 署名なし画像 - 0 イベント情報 のHABパス リードされた点滅ログ(署名なし): RVTヘッダー 0x 2002c0: tag=0xdd len=0x 038 par=0x43 HAB:RVTバージョン=0x 40305 居住区:report_status() = 0x33(HAB_FAILURE) HAB: config = 0xf0(HAB_CFG_OPEN) HAB: state = 0x66(HAB_STATE_NONSECURE) HAB: event[0], 8バイト HAB: hdr: tag=0xdb len=0x 0 8 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x22(HAB_INV_ADDRESS) context=0x a(HAB_CTX_AUTHENTICATE) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 8 43 33 22 a 0 HAB: event[1], 20バイト HAB: hdr: tag=0xdb len=0x 014 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x c(HAB_INV_ASSERTION) コンテキスト=0xa0(HAB_CTX_ASSERT) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 14 43 33 c a0 0 0 0 0 0 0 60 0 10 0 0 0 0 20 HAB: event[2], 20バイト HAB: hdr: tag=0xdb len=0x 014 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x c(HAB_INV_ASSERTION) context=0xa0(HAB_CTX_ASSERT) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 14 43 33 c a0 0 0 0 0 0 60 0 10 20 0 0 0 1 HAB: event[3], 20バイト HAB: hdr: tag=0xdb len=0x 014 par=0x43 HAB: status=0x33(HAB_FAILURE) reason=0x c(HAB_INV_ASSERTION) コンテキスト=0xa0(HAB_CTX_ASSERT) engine=0x 0(HAB_ENG_ANY) HAB: raw: db 0 14 43 33 c a0 0 0 0 0 0 0 60 0 20 0 0 0 4 HAB: VERDICT = 4 イベント情報 記録済み -- 上記のデコード済みフィールドを参照 私のプロジェクトファームウェア(署名なし) HAB: RVTヘッダー 0x002002c0 HAB: tag=0xdd len=0x0038 par=0x43 HAB:RVTが確認され有効 居住区:RVTバージョン=0x00040305 居住区:report_status() = 0xf0 HAB: config = 0xf0 HAB: state = 0x66 HAB: 監査イベント情報やクエリなし... HAB: report_event(idx=0) 0x33返されました(イベント情報やクエリなし) HAB: VERDICT = PASS(監査イベント情報なし) なぜ違いがあるのか Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 ご連絡ありがとうございます!LED点滅コードが入っているSDK版と、画像作成に使われているSPT版の両方をいただけますか? ご辛抱いただきありがとうございます! すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses これはSDKバージョンです - SDK_25_06_00_MIMXRT1024xxxxx SPTバージョン - 26.06 MCU xpresso - v25.6.136 MCU Xpressoでコンパイルした場合、LED Blinky用の署名なし画像はSPTとCST 4.0の両方で作成されます Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 情報と詳細なログをありがとうございます。これは素晴らしい観察結果で、違いはIVT内のCSFポインタがゼロかゼロでないかという一点に集約されます。 HABv4が認証を決定する方法 i.MX RT10xxでは、ブートROMは認証を試みるかどうかを判断する前にIVTのCSFフィールドを確認します。 CSF = 0x00000000 (null)の場合、HABは認証を完全にスキップし、イベント情報は記録されず report_status() 0xf0 (HAB_SUCCESS)を返します。これはセキュリティ上の「合格」ではありません。認証は一度も試みられていません。 CSF = non-zero (CSF領域を指す場合):HABは認証を試みます。署名が欠落または無効の場合、失敗イベント情報が記録され、 report_status() は 0x33 (HAB_FAILURE)を返します。オープンボードの場合、これはブートを停止させません。 なぜLED点滅(署名なし)が4つの故障イベント情報を示したのか あなたのLED点滅バイナリはMCUXpresso IDEによって構築され、その後SPT(Secure Provisioning Tool)で処理されてブート可能なイメージが作成されました。「署名なし」ビルドタイプの場合でも、SPTのブートイメージパイプラインは、ゼロ以外のCSFポインタをIVTに書き込み、イメージ内にCSF領域を予約します。Boot ROMは非ゼロポインタを発見し、認証を試みましたが有効な署名データは見つからず、4つのイベントを記録しました。 イベント情報0( HAB_INV_ADDRESS / HAB_CTX_AUTHENTICATE 😞 HABは認証のために画像を探しましたが、無効なアドレスに遭遇しました。これは空のCSF領域と一致します。 イベント情報1–3( HAB_INV_ASSERTION / HAB_CTX_ASSERT 😞 HABによる画像領域に対する内部検証は、実際の脳脊髄液データが存在しないため失敗しました。 なぜプロジェクトのファームウェア(署名なし)にイベント情報が0と表示されたのか あなたのプロジェクトファームウェアは、SPTの起動可能なイメージ生成ステップ を経ずに 、MCUXpresso IDEを通じて直接コンパイルされました。結果として得られるバイナリには、IVT内に真のヌルCSFポインタが含まれています。Boot ROMは CSF = 0 を認識し、認証を完全にスキップし、HABはクリーンな報告をします。ログの report_event(idx=0) からの 0x33 リターンは「このインデックスにイベント情報なし」(つまり、クエリ自体が何も保存されていないため返HAB_FAILURE)を意味しており、HABが故障を検出したわけではありません。 確認の簡単な方法 バイトオフセット +0x18 (CSFフィールド)で、両方のバイナリのIVTを調べます。 SPT製LED点滅:ゼロ以外の値(例: 0x60006xxx または類似のフラッシュアドレス) プロジェクトファームウェア: 0x00000000 プロジェクトのファームウェアで HAB 監査を適切にテストするには 起動可能なイメージはSPT(またはelftosb/nxpimage)でビルドし、CSF領域をイメージに埋め込む必要があります。署名なしビルドでも同様です。これにより、Boot ROMが認証を試み、HABイベント情報が生成されます。そうして初めて、HAB監査コードはテスト目的のための有意義なデータを収集できるようになります。 まとめると、HAB認証はオープンボード上で動作するというあなたの最初の仮定は正しいですが、それはIVTに非ゼロのCSFポインタが存在する場合に限られます。プロジェクトのファームウェアで観察された動作は想定どおりであり、正しいものです。 これで少しでも分かりやすくなれば幸いです!他に質問があればお知らせください。   すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses はい、Kan_Liあなたが言った説明は正しいですが、正しいシナリオは私たちにとってです。 LED点滅(署名なし)-> このバイナリiはMCU Xpresso IDEのみで生成(SPT経由は処理していません)。サイズ - 30KB そして、LED点滅(符号なし)と私のプロジェクト(符号なし)の両方のIVTを比較しても、両方ともまったく同じIVT(CSF=0)でした。サイズ 64KB 16進数比較を参照 左側はLED点滅、右側は私のプロジェクトのファームウェアです また、ヒューズを焼損させずにHABを正しくテストする方法についても教えてください。 Abhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.pngAbhay2080_0-1788931301704.png Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 16進数での比較をありがとうございます。おかげで状況がずっと分かりやすくなりました。おっしゃる通り、両方のバイナリはCSF=0の同一のIVT(初期値変換)を持っています。実際の根本原因は、CSFポインタではなく、ブートデータ size フィールドにあります。 16進ダンプの内容 ファイルオフセット 0x1020 (IVTの boot_data が指す位置)にあるブートデータ構造を見てみましょう。 フィールド LED点滅 プロジェクトファームウェア start (0x1020) 0x60000000 0x60000000 size (0x1024) 0x00004000 = 16 KB 0x00000400 = 1 KB plugin (0x1028) 0x00000000 0x00000000 IVT内の両方のCSFフィールドは 0x00000000 であり、同一であることが確認されました。 HABの挙動が異なる理由 HABライブラリの authenticate_image() は、認証を試みる前に画像スコープを決定するために、Boot Data領域( start から start + size )を使用します。重要なことに、 IVT自体はフラッシュオフセット 0x1000 (ベースから4096バイト)に配置されています。HABは、IVTが宣言されたブートデータ領域内に含まれるかどうかを確認します。 LED点滅— ブートデータは16KB( 0x4000 )を宣言します。オフセット 0x1000 (4096)のIVTは [0x60000000, 0x60004000) の中にあります。HAB は IVT を見つけ、 authenticate_image() を試行し、CSF=0 に遭遇します → ログには HAB_INV_ADDRESS + 3 つのアサーション失敗が記録されます → report_status() = HAB_FAILURE 。 プロジェクトファームウェア- ブートデータは 1 KB ( 0x400 ) のみを宣言しています。オフセット 0x1000 (4096)のIVTは [0x60000000, 0x60000400) 外側です。HABは宣言された領域内で有効なIVTを検出できず→認証は→ report_status() = HAB_SUCCESS , 0イベント情報で完全にスキップされます。 まとめると、プロジェクトファームウェアの1KBブートデータサイズは誤って小さすぎます。IVTはその境界を超えているため、HABはそれに手を出しません。 ブートデータのサイズはどちらも、実際のバイナリファイルのサイズ(それぞれ30KBと64KB)とは一致しないことに注意してください。両方のイメージは、適切なブート可能なイメージビルダーではなく、IDEが直接生成したブートデータを持っています。サイズのずれの程度によって、HABが発生するかどうかが決まります。 根本的な原因 SPTやelftosbを経ずにMCUXpresso IDEから直接コンパイルすると、結果として得られるバイナリはHAB評価のための適切なブートデータ構造を持ちません。 size フィールドは、IVT を包含する場合と包含しない場合がある値に設定され、予測不可能な HAB 監査結果をもたらします。 ヒューズを焼損させずにHABを正しくテストする方法 オープンボードにおける信頼できる手法は以下のとおりです。 SPTまたはelftosbを使用してビルドします。これにより、ブートデータ(ベースからCSF/コードの終わりまでイメージ全体をカバーする start 、 size )、FCB、IVT、およびオプションでCSFブロックが正しく設定されます。生のIDEコンパイル .bin でHABをテストするのは絶対に避けてください。ブートデータは信頼性が低くなります。 署名のないイメージ(CSF=0、正しいブートデータ)でテスト してください — HABは認証を試みますがCSFは検出できず、 HAB_INV_ADDRESS +アサーション失敗を記録します。 report_status() = HAB_FAILURE 。これにより、HABが正しく動作しており、監査コードが正常に機能していることが確認できます。これはまさに、あなたのLED点滅+SPTの結果が示していたことと同じです。 署名付きイメージ(CSFが有効で、ブートデータが正しいもの)を使用してテストします。SPTまたはCST 4.0を使用して、キーで適切に署名されたイメージを作成します。オープンボードでは、HABは埋め込まれたSRK/CSFを使用してイメージを認証します。署名が有効であれば、→ report_status() = HAB_SUCCESS 、0のイベント情報となります。署名が間違っていたり欠如している場合、→失敗のイベント情報。どちらの場合もオープンボード上でブートが続きます。 ヒューズを書き込む前に信頼性を確認してください。署名済みのイメージがオープンボードに表示され、HAB_SUCCESS が表示された後でのみ、SRK ハッシュヒューズを書き込んでください。これにより認証チェーン全体が安全に検証されます。 推奨されるテスト手順(すべてオープンボードで実施): Step 1: SPT -> Build unsigned image -> Flash -> Run HAB audit Expected: HAB_FAILURE, 4 events (HAB is running, audit code is correct) Step 2: SPT/CST -> Build signed image -> Flash -> Run HAB audit Expected: HAB_SUCCESS, 0 events (signing + authentication working end-to-end) Step 3: Corrupt the signed image or swap keys -> Flash -> Run HAB audit Expected: HAB_FAILURE, events logged (confirms rejection logic) Step 4: Burn fuses (SRK hash) -> confirm Step 2 still passes on Closed board これで違いが十分に説明できたでしょうか。重要なポイントは、HABをテストする際は必ずSPT/elftosbを使って起動可能なイメージを構築することです。生のIDEバイナリは使わないでください。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Test HAB on IMXRT1024 without burning fuses @Kan_Li 、Boot データは小さなエンディアン32ビットワードに保存されているため、両方のバイナリのStartは同じなので、誤解されていると思います 始め0x60000000 ブートデータサイズは LED点滅 - 0x00400000(4MB) 私のプロジェクトです - 0x00040000(256KB) つまり、あなたの説明通りIVTは定義されたブートデータ内に含まれます Re: Test HAB on IMXRT1024 without burning fuses こんにちは、 @Abhay2080 さん。 おっしゃる通りです。バイト順序の誤りについてお詫び申し上げます。両方のブートデータサイズ(4MBと256KB)にはIVTが含まれているため、以前の説明は誤りでした。 根本原因:スタートアップコードによってHABイベントログが消去された ブートROMは両方のイメージに対して同じ4つの失敗イベント情報(CSF=0、認証試行)を生成します。違いは、プロジェクトファームウェアのCランタイム起動時が、HABライブラリがイベントログやステータスを保存する領域を含む大きなOCRAM領域をゼロにし、HAB監査コードが実行される 前に ゼロ化することです。そのため、 report_status() は 0xF0 返却し、イベント情報は0でした。HAB状態自体が消去されたのです。 修正方法: HAB監査コールをBSSのゼロイニットループの前に Reset_Handler に移動すると、イベント情報が見えます。 他に何かご質問がありましたら、お気軽にお知らせください。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 -------------------------------------------------------------------------------
記事全体を表示
TJA1410_10Base_T1s こんにちは、NXP S32K5とTJA1410を使用して10BASE-T1Sのテストを行っています。現在、TXピンに波形が見え、RXピンとEDピンにも波形があり、これはMDIで信号が受信できることを示しています。しかし、TXピンはMDIにデータを送信できません。 TX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmpTX_RX_ED-2026-09-10-19-26-50.bmp よろしくお願いいたします。 シアンロン イーサネット PHY Re: TJA1410_10Base_T1s こんにちは@wuxianlongさん MDIはどのように測定しましたか?MDIは差動インターフェースなので、差動オシロスコーププローブを使う必要があります。MDIは適切な差動終端を必要とします。AN14787 - アプリケーションノート10BASE-T1S イーサネットPMDトランシーバ TJA1410、Rev. 1.0、第3.3章を参照してください。 よろしくお願いいたします。 パベル Re: TJA1410_10Base_T1s こんにちは@wuxianlongさん このメールが、あなたがお元気でいらっしゃる時に届くことを願っています。現在お手元にある製品、NPI(新製品紹介)S32K5についてお手伝いしていますが、まだ正式に発売されていません。 これらの製品の早期アクセス権を得たお客様は、現場エンジニアを割り当てていることにご注意ください。指定されたフィールドエンジニアが、この製品に関する問題や懸念、問い合わせの主要なサポートチャネルとなります。 正式リリース後、オンラインサポートチームはより幅広いサポートを展開していきます。それまでは、私たちは必要な支援を提供する体制が整っていません。 この件についてご理解いただき感謝いたします。 ご理解いただきありがとうございます。 よろしくお願いいたします。 パベル Re: TJA1410_10Base_T1s こんにちは、 @PavelL 私は差動プローブを使用しませんでした。私が送信(TX)すると、オシロスコープ上のMDIには変動が見られず、平坦/水平な状態が維持されます。しかし、PCがデータを送信すると、MDIには明確な差動波形が表示される。TJA1410が正しく送信モードに切り替わっておらず、チップは通常モードのままにしているように感じます。PHYの現在のモードを確認する方法はありますか?現在、私たちのTJA1410はSMIインターフェースに接続されていませんが、どのような注意点を取るべきでしょうか? 敬具 仙龍 Re: TJA1410_10Base_T1s こんにちは@wuxianlongさん S32K5はNPIデバイスであるため、現時点では弊社側でS32K5とTJA1410の完全なセットアップを検証することができませんのでご了承ください。   TJA1410動作モードはSMIインターフェースを通じて選択されません。通常モードと送信モード間の遷移は、TXピンで受信したコマンドによって制御されます。したがって、TXでデータアクティビティを観測したとしても、TJA1410が送信モードに入ったことを必ずしも確認できるわけではありません。前述のTRANSMITコマンドとそのタイミングは、TJA1410データシートに指定されているタイミングにも準拠する必要があります。   TJA1410データシートの図10に従って、通常モードから送信モードへの遷移を確認してください。特に、TXコマンドと差動VLINE信号、およびED出力を併せて取得してください。これにより、TJA1410がTRANSMITコマンドを認識し、MDIトランスミッタを起動するかどうかが確認されます。   よろしくお願いいたします。 パベル
記事全体を表示