Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
S32K344 AB-Swap 在 HSE_ActivatePassiveBlock 后自动启动失败;固件仅可通过 J-Link Sta 启动 平台:S32K344,采用 AB 互换方案。主动模块和被动模块分别存储不同的固件镜像。观察:执行 HSE_ActivatePassiveBlock() 交换活动/被动分区后,完全断电重启不会触发固件自动启动。只有连接 J-Link 并通过调试器触发启动应用程序时,固件才能成功执行。请问有人能解释一下根本原因并提供建议的解决方案吗? Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 嗨@HQZ 您确定被动分区中存在有效镜像吗?如果在启动目标后不RESET它,而是将调试器连接到正在运行的目标上,你会观察到什么现象?设备是否进入JTAG恢复模式?或者,您也可以直接通过调试器重置设备,然后检查它是否到达了应用程序的入口点。 如果设备在地址 0x2040012C 处陷入无限循环,则表明它已进入 JTAG 恢复模式。这也可能表明 IVT 配置或 IVT 完整性存在问题。 另外,被动分区中的映像是否链接到活动分区地址空间运行,即从 0x00400000 开始运行? 最后,你们是否启用了安全启动? 此致, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好@lukaszadrapa  平台:S32K344,AB-Swap架构。独立固件镜像分别存储在主动块和被动块中。HSE安全启动已禁用。问题描述:调用HSE_ActivatePassiveBlock()完成主动/被动分区切换后,设备在断电后RESET无法自动启动目标固件。但是,如果将J-Link调试器连接到芯片,并在调试器软件中点击“启动应用程序”,则切换后的固件可以正常运行。补充背景:固件同时存在于分区A和分区B中。两个镜像之间的唯一区别是LED闪烁频率。分区A固件的链接起始地址为0x400000,而分区B固件的链接起始地址为0x600000。调用HSE_ActivatePassiveBlock()并RESET后,我使用J-Link转储了闪存内容。分区A和分区B的内容已物理交换,证实HSE_ActivatePassiveBlock()已生效。问题:1. 此行为的根本原因是什么?为什么冷启动和调试器触发的“启动应用程序”的行为不同?2. AB分区交换后,有哪些可行的解决方案可以解决自动启动失败的问题?感谢您的支持。 Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 嗨@HQZ “分区 B 固件链接起始地址为 0x600000”——这就是问题所在。两个映像必须链接才能使用活动分区地址 – 0x400000。应用程序始终在活动分区上运行,而不是在被动分区上运行。 解决方法——对两个项目使用同一个链接器文件。 它之所以能与你的调试器配合使用,是因为调试器会“手动”将程序计数器设置为入口点地址,该地址位于 elf 文件中。 此致, Lukas Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好@lukaszadrapa 我已按照之前的建议尝试了 AB 分区交换,但问题仍然存在。 使用的 HSE 固件版本为 s32k344_hse_fw_1.5.0_2.40。 用于验证 AB 交换的测试设置: 具有基于应用程序的自我更新的单链接器脚本。该应用程序负责将新的固件映像编程到被动分区中。 链接器脚本:只使用一个链接器脚本,固件起始地址始终设置为 0x00400000。 工作流程: 1.在分区 A(逻辑地址 0x00400000)中运行的应用程序通过 CAN 接收新固件。A分区和B分区固件之间的唯一区别在于LED闪烁频率。 2. 该应用程序将新固件直接编程到被动分区的物理地址(0x00600000)中。 3.编程完成后,调用 HSE_ActivatePassiveBlock() 服务。 4. 然后 RESET 芯片。 观察: 固件RESET后无法运行。但是,当连接 J-Link 并从调试器触发“启动应用程序”时,分区 B 中的固件可以正确执行。 还有哪些其他根本原因会导致分区交换失败,相应的解决方法是什么? 问候 Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 很抱歉回复晚了。 以下是一些常见问题: 运行 HSE_ActivatePassiveBlock() 并重置设备后,大约需要 1 秒 HSE 才能准备好接受新的服务请求。这是因为 HSE 会将 HSE 固件备份到被动分区。操作完成后,FSR 寄存器中的 HSE_STATUS_INIT_OK 标志将被置位。所以,在 HSE 完成之前,无法使用它。有时这就是麻烦的根源。 固件版本 0.2.55.0 及更高版本已对此进行了优化,并且仅当固件更新时才会将其复制到被动分区。如果结果仍然相同,HSE 将跳过此操作,交换速度会快得多。 然后我建议阅读 HSE 固件参考手册修订版中的描述。2.7 节: “14.6.5同步 HSE 和应用核心之间的闪存读/写访问: https://www.nxp.com/webapp/sd/collateral/1765990353647716033651?version=2.7 表 149、150 和 151 中提供了典型场景的详细信息。 就您的情况而言:当 HSE 将自身备份到被动分区时,无法访问闪存块 3,因为 HSE 在该块上执行闪存操作。 另外,您不能对块 1 执行刷写操作,因为 HSE 固件正在该块上运行。 还有一点,如果 HSE 正在运行,则无法更改 HSE_CLK。重置后,HSE 运行约 1 秒,此时可能会出现问题。 更改 HSE_CLOCK 时,HSE 必须处于IDLE状态。HSE 运行时无法更改时钟。这可能会导致不可预测的行为。S32K3 参考手册中明确提到了这一点: “在配置 HSE_CLK 之前,必须等待 SBAF 通过读取 HSE CPU 的核心状态寄存器 (PRTN0_CORE2_STAT) 进入 WFI 状态。” 使用旧版本的 RTD 驱动程序时可能会出现问题,因为这些驱动程序不会检查上述状态寄存器。 该检查已在 RTD 版本 5.0.0 及更高版本中实施。如果您使用的是旧版本,则需要在时钟初始化之前轮询 WFI。所以,这可能也是它失败的原因。 回复: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好,兄弟 我也遇到了同样的问题。请问您是如何解决这个问题的? 回复: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link 你好, 很抱歉回复晚了——我刚看到您的消息。问题是否已解决,还是您仍然需要帮助?
查看全文
i.MX93 M33 无法使用系统 TCM RAM 进行分配 我们正在评估 i.MX9352 在物联网设备中的应用。我为 M33 内核创建了一个应用程序,用于执行时间关键型 IO 操作,其中包括从外围设备收集大量样本。为了开发目的,我正在使用 remoteproc 从 Linux 加载和启动 M33 代码。代码是用 C 语言编写的,并使用了 MPUXpresso 26.06.00 SDK。 代码运行良好,但我现在需要一个大的样本缓冲区(约 24 kB)。我尝试过将其添加为静态数组或使用 `malloc` 分配的堆。无论哪种情况,我的内存似乎都会耗尽,即使编译输出表明内存充足。 工作版本: 以下是使用较小缓冲区版本的内存信息,**运行正常**(但缓冲区太小,无法满足我们的要求)。 Memory region Used Size Region Size %age Used m_interrupts: 1140 B 1144 B 99.65% m_text: 78300 B 129928 B 60.26% m_m33_suspend_ram: 0 B 8 KB 0.00% m_a55_suspend_ram: 0 B 4 KB 0.00% m_data: 48016 B 108 KB 43.42% m_rsc_tbl: 0 B 4 KB 0.00% build finished successfully. 以下是ELF文件中的一些信息: readelf -l imx_m33.elf Elf file type is EXEC (Executable file) Entry point 0xffe0595 There are 4 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0ffe0000 0x0ffe0000 0x00474 0x00474 R 0x1000 LOAD 0x001478 0x0ffe0478 0x0ffe0478 0x131dc 0x131dc RWE 0x1000 LOAD 0x015000 0x20003000 0x0fff3654 0x00170 0x00170 RW 0x1000 LOAD 0x000180 0x20003180 0x0fff37e0 0x00000 0x0ba10 RW 0x1000 Section to Segment mapping: Segment Sections... 00 .interrupts 01 .resource_table .text .ARM .init_array .fini_array 02 .data 03 .bss .heap .stack 大型静态分配: 以下是使用 **24 kB 静态分配缓冲区**的编译版本的内存和 ELF 文件信息。 IE。: static uint32_t m_sample_queue[SAMPLE_QUEUE_LENGTH]; // SAMPLE_QUEUE_LENGTH = 6000 Memory region Used Size Region Size %age Used m_interrupts: 1140 B 1144 B 99.65% m_text: 78240 B 129928 B 60.22% m_m33_suspend_ram: 0 B 8 KB 0.00% m_a55_suspend_ram: 0 B 4 KB 0.00% m_data: 72016 B 108 KB 65.12% m_rsc_tbl: 0 B 4 KB 0.00% build finished successfully. ### (As expected, the `m_data` section has increased in size.) ### readelf -l imx_m33.elf Elf file type is EXEC (Executable file) Entry point 0xffe0595 There are 4 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0ffe0000 0x0ffe0000 0x00474 0x00474 R 0x1000 LOAD 0x001478 0x0ffe0478 0x0ffe0478 0x131a0 0x131a0 RWE 0x1000 LOAD 0x015000 0x20003000 0x0fff3618 0x00170 0x00170 RW 0x1000 LOAD 0x000180 0x20003180 0x0fff37a0 0x00000 0x117d0 RW 0x1000 Section to Segment mapping: Segment Sections... 00 .interrupts 01 .resource_table .text .ARM .init_array .fini_array 02 .data 03 .bss .heap .stack 当我在 Linux 系统中尝试使用 remoteproc 启动此版本时,启动失败,dmesg 显示以下错误: [ +0.001258] imx-rproc remoteproc-cm33: Translation failed: da = 0xfff37a0 len = 0x117d0 [ +0.000021] remoteproc remoteproc0: bad phdr da 0xfff37a0 mem 0x117d0 [ +0.000006] remoteproc remoteproc0: Failed to load program segments: -22 [ +0.008868] remoteproc remoteproc0: Boot failed: -22 克劳德告诉我这是.bss .heap .stack的问题。部分,因为 PhysAddr 为 `0x0fff37a0`,大小现在为 `0x117d0`。`0x0fff37a0 + 0x117d0 = 0x10004f70` 超出了 M33 代码 TCM 地址范围0x0ffe0000 .. 0x10000000 。解释令人困惑,但我的理解是静态初始化必须放在“代码”部分,导致它溢出,即使“系统”TCM 范围内有足够的空间(另外 128 kB)。所以,这或许说得通。 动态(堆)分配: 例如。: uint32_t *p_sample_queue = malloc(SAMPLE_QUEUE_LENGTH, sizeof(uint32_t)); C 语言默认可用的堆大小只有 1 kB,因此malloc无法处理我们的大缓冲区。 我修改了项目的 CMake 文件,通过__heap_size__分配了更大的堆内存 (32 kB),该参数会传递给链接器脚本: mcux_add_linker_symbol( SYMBOLS "__stack_size__=0x400 \ __heap_size__=0x8000 \ <---- Added __use_shmem__=1 \ __multicore__=1 \ " ) 版本输出和 ELF 文件信息: Memory region Used Size Region Size %age Used m_interrupts: 1140 B 1144 B 99.65% m_text: 78240 B 129928 B 60.22% m_m33_suspend_ram: 0 B 8 KB 0.00% m_a55_suspend_ram: 0 B 4 KB 0.00% m_data: 103760 B 108 KB 93.82% m_rsc_tbl: 0 B 4 KB 0.00% build finished successfully. #### ELF file info: #### readelf -l imx_m33.elf Elf file type is EXEC (Executable file) Entry point 0xffe0595 There are 4 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0ffe0000 0x0ffe0000 0x00474 0x00474 R 0x1000 LOAD 0x001478 0x0ffe0478 0x0ffe0478 0x131a0 0x131a0 RWE 0x1000 LOAD 0x015000 0x20003000 0x0fff3618 0x00170 0x00170 RW 0x1000 LOAD 0x000180 0x20003180 0x0fff37a0 0x00000 0x193d0 RW 0x1000 Section to Segment mapping: Segment Sections... 00 .interrupts 01 .resource_table .text .ARM .init_array .fini_array 02 .data 03 .bss .heap .stack 这似乎让问题变得更糟,而不是更好(.bss/.heap/.stack)。位于 PhysAddr 0x0fff37a0,大小 0x193d0)。 [ +0.001320] imx-rproc remoteproc-cm33: Translation failed: da = 0xfff37a0 len = 0x193d0 [ +0.000019] remoteproc remoteproc0: bad phdr da 0xfff37a0 mem 0x193d0 [ +0.000006] remoteproc remoteproc0: Failed to load program segments: -22 [ +0.002908] remoteproc remoteproc0: Boot failed: -22 我原以为使用堆分配可以缩小代码段的大小,并从数据段分配内存。上面版本输出中显示的“m_data”部分确实更大。 我不太理解“PhysAddr”,它与参考手册中的“Code TCM”范围相匹配,即使对于应该在“System TCM”区域内的内容也是如此(我认为?)。“VirtAddr”下的地址似乎是正确的。 为什么 ELF 文件仍然尝试放置 .bss/.heap/.stack 文件?PhysAddr 0x0fff37a0 处的数据为什么在使用运行时堆分配时如此之大?有没有办法在“系统 TCM”区域中分配我的大缓冲区? Re: i.MX93 M33 Can't Use System TCM RAM for Allocation 嗨@jcolebaker 您可以选择将数据/bss/堆/堆栈的 LMA 更改为系统 TCM。在 MCUX 链接器脚本中,将数据段的加载地址 (AT) 从代码 TCM 更改为系统 TCM,以便 PhysAddr 也位于 0x2000_0000: .data : { ... } > m_data AT> m_data /* Do not use AT> m_text */ .bss : { ... } > m_data 当 LMA == VMA 且两者都在系统 TCM 中时,PhysAddr 变为 0x2000_xxxx,这与 remoteproc 驱动程序中 {0x20000000, …, 0x00040000} (256 KB) 范围内的条目匹配,从而使 remoteproc 能够正确转换。 此致, 志明 Re: i.MX93 M33 Can't Use System TCM RAM for Allocation 谢谢,搞定了! 注意,为了使用更大的堆,我需要移动的主要部分是“堆”部分: .heap : { ... } > m_data AT> m_data
查看全文
Does NXP has MPU supporting sonic OS ? Hi NXP,       We need a processor which can support SONIC OS.        I can't find the message in NXP website.        Can you help to check again ?        Thanks very much. i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: Does NXP has MPU supporting sonic OS ? Hi Zhiming,      Got it.      Thanks very much. Re: Does NXP has MPU supporting sonic OS ? Hi @jimmyli  NXP does not officially support SONIC OS. Best Regards, Zhiming
查看全文
i.MX93 M33 System TCM RAMを割り当てに使用できません 当社はIoTデバイス向けにi.MX9352を評価しています。私はM33コア用のアプリケーションを作成しました。これにはペリフェラルから大量のサンプルを収集する時間的責任のIO操作が含まれます。開発のために、Linuxからリモートプロックを使ってM33コードを読み込み、起動しています。コードはC言語で書かれ、MPUXpresso 26.06.00 SDKを使用しています。 コードはうまく動作するようになったのですが、今度はサンプル用の大きなバッファ(約24kB)が必要です。私はこれを静的配列として、または`malloc`で割り当てられたヒープとして追加しようと試みました。いずれにせよ、コンパイル出力では十分なRAMがあると示されているのに、私はすぐにRAMが切れてしまうようです。 作業版: こちらは小さなバッファのビルドのメモリ情報で、**問題なく動作します*(ただしバッファは私たちの要件には小さすぎます)。 Memory region Used Size Region Size %age Used m_interrupts: 1140 B 1144 B 99.65% m_text: 78300 B 129928 B 60.26% m_m33_suspend_ram: 0 B 8 KB 0.00% m_a55_suspend_ram: 0 B 4 KB 0.00% m_data: 48016 B 108 KB 43.42% m_rsc_tbl: 0 B 4 KB 0.00% build finished successfully. ELFファイルからの情報は以下のとおりです。 readelf -l imx_m33.elf Elf file type is EXEC (Executable file) Entry point 0xffe0595 There are 4 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0ffe0000 0x0ffe0000 0x00474 0x00474 R 0x1000 LOAD 0x001478 0x0ffe0478 0x0ffe0478 0x131dc 0x131dc RWE 0x1000 LOAD 0x015000 0x20003000 0x0fff3654 0x00170 0x00170 RW 0x1000 LOAD 0x000180 0x20003180 0x0fff37e0 0x00000 0x0ba10 RW 0x1000 Section to Segment mapping: Segment Sections... 00 .interrupts 01 .resource_table .text .ARM .init_array .fini_array 02 .data 03 .bss .heap .stack 大規模な静的割り当て: こちらは**24 kBの静的割り当てバッファ**を持つビルドのメモリとELFファイル情報です。 つまり: static uint32_t m_sample_queue[SAMPLE_QUEUE_LENGTH]; // SAMPLE_QUEUE_LENGTH = 6000 Memory region Used Size Region Size %age Used m_interrupts: 1140 B 1144 B 99.65% m_text: 78240 B 129928 B 60.22% m_m33_suspend_ram: 0 B 8 KB 0.00% m_a55_suspend_ram: 0 B 4 KB 0.00% m_data: 72016 B 108 KB 65.12% m_rsc_tbl: 0 B 4 KB 0.00% build finished successfully. ### (As expected, the `m_data` section has increased in size.) ### readelf -l imx_m33.elf Elf file type is EXEC (Executable file) Entry point 0xffe0595 There are 4 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0ffe0000 0x0ffe0000 0x00474 0x00474 R 0x1000 LOAD 0x001478 0x0ffe0478 0x0ffe0478 0x131a0 0x131a0 RWE 0x1000 LOAD 0x015000 0x20003000 0x0fff3618 0x00170 0x00170 RW 0x1000 LOAD 0x000180 0x20003180 0x0fff37a0 0x00000 0x117d0 RW 0x1000 Section to Segment mapping: Segment Sections... 00 .interrupts 01 .resource_table .text .ARM .init_array .fini_array 02 .data 03 .bss .heap .stack Linuxでremoteprocを使ってこのバージョンを起動しようとすると起動できず、dmesgは以下のエラーを表示します。 [ +0.001258] imx-rproc remoteproc-cm33: Translation failed: da = 0xfff37a0 len = 0x117d0 [ +0.000021] remoteproc remoteproc0: bad phdr da 0xfff37a0 mem 0x117d0 [ +0.000006] remoteproc remoteproc0: Failed to load program segments: -22 [ +0.008868] remoteproc remoteproc0: Boot failed: -22 クロードは、これは.bss .heap .stackの問題だと私に言った。PhysAddr が `0x0fff37a0` で、サイズが `0x117d0` になったため、このセクションが使用不可となります。`0x0fff37a0 + 0x117d0 = 0x10004f70` は、M33 コード TCM アドレス範囲0x0ffe0000 .. 0x10000000を超えています。説明は分かりにくかったのですが、私の解釈では、静的初期化は「code」セクションに記述する必要があり、「system」TCM領域(残りの128kB)には十分な空き容量があるにもかかわらず、オーバーフローが発生してしまうということです。だから、これで納得できるかもしれません。 動的(ヒープ)割り当て: 例えば。: uint32_t *p_sample_queue = malloc(SAMPLE_QUEUE_LENGTH, sizeof(uint32_t)); Cで利用可能なデフォルトのヒープサイズはわずか1 kBなので、 malloc は大きなバッファでは失敗します。 プロジェクトのCMakeを修正し、 __heap_size__を介してより大きなヒープ(32kB)を割り当てるようにしました。この__heap_size__はリンカースクリプトに渡されます。 mcux_add_linker_symbol( SYMBOLS "__stack_size__=0x400 \ __heap_size__=0x8000 \ <---- Added __use_shmem__=1 \ __multicore__=1 \ " ) ビルド出力とELFファイル情報: Memory region Used Size Region Size %age Used m_interrupts: 1140 B 1144 B 99.65% m_text: 78240 B 129928 B 60.22% m_m33_suspend_ram: 0 B 8 KB 0.00% m_a55_suspend_ram: 0 B 4 KB 0.00% m_data: 103760 B 108 KB 93.82% m_rsc_tbl: 0 B 4 KB 0.00% build finished successfully. #### ELF file info: #### readelf -l imx_m33.elf Elf file type is EXEC (Executable file) Entry point 0xffe0595 There are 4 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x001000 0x0ffe0000 0x0ffe0000 0x00474 0x00474 R 0x1000 LOAD 0x001478 0x0ffe0478 0x0ffe0478 0x131a0 0x131a0 RWE 0x1000 LOAD 0x015000 0x20003000 0x0fff3618 0x00170 0x00170 RW 0x1000 LOAD 0x000180 0x20003180 0x0fff37a0 0x00000 0x193d0 RW 0x1000 Section to Segment mapping: Segment Sections... 00 .interrupts 01 .resource_table .text .ARM .init_array .fini_array 02 .data 03 .bss .heap .stack これは問題を改善するどころか悪化させているようだ(.bss/.heap/.stackPhysAddr 0x0fff37a0、サイズ 0x193d0)。 [ +0.001320] imx-rproc remoteproc-cm33: Translation failed: da = 0xfff37a0 len = 0x193d0 [ +0.000019] remoteproc remoteproc0: bad phdr da 0xfff37a0 mem 0x193d0 [ +0.000006] remoteproc remoteproc0: Failed to load program segments: -22 [ +0.002908] remoteproc remoteproc0: Boot failed: -22 ヒープ割り当てを使うことでコードセクションを小さくし、データセクションからメモリを割り当てられると思っていました。上記のビルド出力に示されている「m_data」セクションは確かに大きいです。 リファレンスマニュアルの「Code TCM」の範囲に一致する「PhysAddr」の意味がよく分かりません。本来「System TCM」領域にあるべきもの(だと思うのですが)についてもです。「VirtAddr」の下のアドレスは正しいようです。 ELF ファイルはなぜまだ .bss/.heap/.stack を配置しようとするのかPhysAddr 0x0fff37a0のデータについて、なぜランタイムヒープ割り当てを使うとこんなに大きいのでしょうか?また、「System TCM」領域に大きなバッファを割り当てる方法はありますか? Re: i.MX93 M33 Can't Use System TCM RAM for Allocation こんにちは、 @jcolebakerさん データ/BSS/ヒープ/スタックのLMAをSystem TCMに変更することもできます。MCUXリンカースクリプトでは、データセグメントのロードアドレス(AT)をコードTCMからSystem TCMに変更し、PhysAddrも0x2000_0000に当てはまるようにします。 .data : { ... } > m_data AT> m_data /* Do not use AT> m_text */ .bss : { ... } > m_data LMA == VMAが両方ともSystem TCMにある場合、PhysAddrは0x2000_xxxxとなり、remoteprocドライバーの{0x20000000, ..., 0x00040000}(256 KB)の範囲に一致し、remoteprocが正しく翻訳できるようにします。 よろしくお願いします、 志明 Re: i.MX93 M33 Can't Use System TCM RAM for Allocation ありがとう、うまくいったよ! なお、より大きなヒープを使用するために移動する必要があった主なセグメントは、「heap」セグメントでした。 .heap : { ... } > m_data AT> m_data
查看全文
U4GM NBA 2K27: Turn Challenges Into Better MyTEAM Depth The most interesting part of NBA 2K27 Season 1 is not always the headline reward. Often, it is the way a small challenge changes how a player approaches the next few games. A three-point objective can turn a normal matchup into a shooting laboratory, while a dunk requirement can suddenly make a forgotten athletic wing worth testing. With 2K27 MT available as part of the wider team-building economy, the trick is not simply adding expensive names to a lineup but making sure new resources actually improve how the team plays. Recent Play Now Challenges have leaned into this idea by rotating objectives instead of leaving players with one static checklist. Current Season 1 activities have included winning games, using Holo Parallel cards, completing dunk objectives, adding new player cards, and playing through Triple Threat-related challenges. The rotation gives MyTEAM a more active daily rhythm and makes collection depth more valuable. A useful way to approach these challenges is to build a temporary lineup around the objective rather than forcing the objective into the strongest possible lineup. Suppose the task involves three-pointers. Instead of taking the usual lineup and repeatedly forcing difficult shots with one player, use two players who can create space and one reliable shooter who can punish defensive help. The challenge then becomes part of the game rather than an annoying side task. Dunk-focused objectives work in the opposite direction. Spacing becomes extremely important because an athletic finisher needs a clear lane. If the paint is constantly occupied by another interior scorer, the lineup may technically contain a powerful dunker while making it difficult for that player to do what the challenge requires. A better setup can involve one creator on the perimeter, one player who can stretch the defense, and a finisher who attacks after the defense has been pulled away. Triple Threat makes these experiments even more noticeable. With only three players on the floor, there is nowhere to hide a weakness. If two players cannot shoot, the defense can shrink the court. If nobody can defend on the perimeter, one opposing creator can control the game. That is why complementary skill sets often matter more than simply selecting the three highest-rated cards available. Player XP adds another layer to this process. In NBA 2K27, cards can earn XP through gameplay, giving players another reason to put different cards into real matches. A card being tested for a challenge can therefore provide progression at the same time. This creates a nice feedback loop: the challenge encourages the player to use the card, gameplay develops the card, and the improved card may eventually become useful outside the original challenge. The revamped Exchange makes collection management more flexible as well. Instead of viewing every lower-tier or duplicate card as something that simply occupies space, players can evaluate whether it has future lineup value, challenge value, or Exchange value. That does not mean every card should immediately be exchanged. Keeping a small reserve of useful players is sensible because challenge requirements can change quickly, and a card that looks ordinary today may suddenly become convenient tomorrow. Season 1's shared progression also encourages players to alternate between modes. MyTEAM and The City contribute to the same Season XP progression, so a player who gets tired of one mode can switch activities without completely abandoning seasonal progress. The City includes events such as Midway and Blackout, while MyTEAM has its own challenges and competitive activities. That variety can make a long season feel less repetitive because progress does not depend on playing exactly the same type of game every session. There is also a practical lesson here for roster construction: do not build only for one game mode. A card with excellent half-court defense may be valuable in a slower matchup but less comfortable in a fast Triple Threat environment. A high-level scorer may dominate when given space but become less effective when an opponent constantly switches and pressures the ball. Having several styles available gives a collection more flexibility and reduces the need to rebuild everything whenever the objective changes. This is where resource planning becomes more important than simply chasing the newest card. Before spending, look at the positions that are actually limiting the lineup. A missing ball handler, weak perimeter defense, unreliable shooting, or poor rebounding can each change the team's performance more than a small overall-rating increase. U4GM can provide a convenient option for players who want to add NBA 2K27 resources while keeping an eye on affordability, delivery speed, and account safety, but the purchase makes more sense when it is tied to a specific roster goal. A good Season 1 session can therefore accomplish several things at once. You might enter a challenge with a card that needs Player XP, complete an objective that earns another reward, improve the card through gameplay, and finish the session closer to a seasonal milestone. That is much more satisfying than grinding a checklist without understanding why the pieces matter. As Season 1 continues, the value of a flexible collection should become clearer. New challenges can shift attention toward different player types, while Exchange rewards and Player XP give older cards additional uses. Rather than building one rigid lineup and refusing to change it, players can treat MyTEAM like an evolving roster, keeping a core group while maintaining enough depth to respond to whatever the next objective demands. When extra resources are needed to make those adjustments, buy NBA 2K MT through U4GM can be part of that preparation, giving players a convenient and relatively budget-friendly way to support their next roster experiment. FRDM-Training
查看全文
U4GM NBA 2K27:将挑战转化为更强的MyTEAM阵容深度 NBA 2K27 第一赛季最有趣的部分并不总是最引人注目的奖励。通常情况下,一次小小的挑战就能改变一名球员对待接下来几场比赛的态度。三分球目标可以将一场普通的比赛变成投篮实验室,而扣篮要求则可以突然让一位被遗忘的运动型侧翼球员值得一试。由于 2K27 MT 是更广泛的球队建设经济体系的一部分,所以诀窍不仅仅是给阵容添加昂贵的球员,而是要确保新的资源能够真正改善球队的比赛方式。 最近的“立即畅玩挑战”活动也采用了这种理念,通过轮换目标来代替给玩家留下一个静态的清单。目前第 1 赛季的活动包括赢得比赛、使用全息平行卡、完成扣篮目标、添加新球员卡以及进行与三威胁相关的挑战。轮换机制让MyTEAM拥有更活跃的日常节奏,也让收藏深度更有价值。 应对这些挑战的一个有效方法是围绕目标构建一个临时阵容,而不是强行将目标融入最强阵容。假设这项任务涉及投三分球。不要采用常规阵容,反复让一名球员强行出手高难度投篮,而是使用两名能够创造空间的球员和一名能够惩罚防守协防的可靠射手。这样一来,挑战就变成了游戏的一部分,而不是令人讨厌的附加任务。 以扣篮为目标的策略则适得其反。保持间距至关重要,因为优秀的冲刺选手需要畅通无阻的冲刺路线。如果禁区内始终有另一名内线得分手占据,那么阵容理论上可能包含一名强力扣篮手,但这会使该球员难以完成比赛所需的挑战。更好的阵容可以包括一名外线组织者、一名能够拉开防守的球员,以及一名在防守被吸引后发起进攻的终结者。 三重威胁让这些实验更加引人注目。场上只有三名球员,任何弱点都无处遁形。如果两名球员都无法投篮,防守方可以缩小场地范围。如果外线无人防守,对方一名进攻球员就能掌控比赛。因此,互补的技能组合往往比简单地选择三张评分最高的卡牌更重要。 玩家经验值给这个过程增添了另一层意义。在 NBA 2K27 中,卡片可以通过游戏获得经验值,这给了玩家另一个理由在真实比赛中使用不同的卡片。因此,一张用于挑战的卡牌也可以同时提供进度推进。这形成了一个良好的反馈循环:挑战鼓励玩家使用卡牌,游戏玩法促进卡牌发展,而改进后的卡牌最终可能会在最初的挑战之外发挥作用。 改版后的交易所也使收款管理更加灵活。玩家不再将每张低级或重复的卡牌视为仅仅占据空间的东西,而是可以评估它是否具有未来的阵容价值、挑战价值或交换价值。但这并不意味着每张卡都应该立即更换。保留少量有用的球员储备是明智的,因为挑战要求可能会快速变化,今天看起来很普通的卡牌明天可能突然变得有用。 第一赛季的共享进度也鼓励玩家在不同模式之间交替进行。MyTEAM 和 The City 模式都计入赛季经验值进度,因此玩家如果对某种模式感到厌倦,可以切换活动而不会完全放弃赛季进度。城市活动包括 Midway 和 Blackout 等,而 MyTEAM 则有自己的挑战和竞技活动。这种多样性可以让漫长的赛季感觉不那么重复,因为进步并不取决于每次都玩完全相同类型的游戏。 这里还有一个关于阵容构建的实用经验:不要只针对一种游戏模式进行构建。一张拥有出色半场防守能力的卡牌在节奏较慢的比赛中可能很有价值,但在快节奏的三威胁比赛中则不太适应。高水平得分手在获得空间时可能占据主导地位,但当对手不断转移球并施压时,其效率就会降低。提供多种风格可以使作品集更具灵活性,并减少在目标改变时重新构建所有内容的需要。 这时,资源规划就比单纯追求最新卡片更重要了。在投入资金之前,先看看哪些位置实际上限制了阵容。缺少一名控球后卫、外线防守薄弱、投篮不准或篮板能力差,这些因素对球队表现的影响,都可能比球队整体评分的小幅提升更大。U4GM 可以为想要添加 NBA 2K27 资源的玩家提供一个方便的选择,同时兼顾价格、交付速度和账户安全,但当购买与特定的阵容目标联系起来时,这种购买方式就更有意义了。 因此,一季精彩的剧集可以同时实现几个目标。你可能会带着一张需要玩家经验值的卡牌参加挑战,完成一个目标以获得另一个奖励,通过游戏提升卡牌,并在游戏结束时更接近赛季里程碑。这比漫无目的地完成清单上的任务,却不明白每个步骤的重要性要有意义得多。 随着第一季的进行,灵活系列产品的价值应该会更加明显。新的挑战可能会将注意力转移到不同类型的玩家身上,而兑换奖励和玩家经验值则为旧卡牌提供了额外的用途。玩家与其构建一个固定的阵容并拒绝改变,不如将 MyTEAM 视为一个不断发展的阵容,保留核心阵容的同时保持足够的深度,以应对下一个目标所需的任何情况。当需要额外资源来进行这些调整时,通过 U4GM 购买 NBA 2K MT 可以成为准备工作的一部分,为玩家提供一种方便且相对经济实惠的方式来支持他们的下一个阵容实验。 FRDM 培训
查看全文
U4GM NBA 2K27:チャレンジをMyTEAMの深みを増す NBA 2K27シーズン1で最も興味深い部分は、必ずしも目玉となる報酬ではない。多くの場合、それは小さな困難が選手のその後の数試合への取り組み方を変えるという点にある。3ポイントの目標は普通の対戦をシュート実験室に変え、ダンクの要件が忘れ去られていたアスレチックなウイングを試す価値を突然変えてしまう。2K27 MTがチームビルディング経済の一部として利用可能であることから、単に高額な名前をラインナップに加えるだけでなく、新しいリソースがチームのプレースタイルを実際に向上させることがポイントです。 最近のPlay Now Challengeでは、プレイヤーに一つの固定的なチェックリストを置くのではなく、目標をローテーションで行うというこの考え方が取り入れられています。シーズン1の現在のアクティビティには、ゲームに勝利すること、ホロパラレルカードを使用すること、ダンクの目標を達成すること、新しいプレイヤーカードを追加すること、トリプルスレット関連のチャレンジをプレイすることなどが含まれています。このローテーションにより、MyTEAMはよりアクティブな日々のリズムを手に入れ、コレクションの充実度をより価値あるものにする。 こうした課題に取り組む上で有効な方法は、目標を最強のラインナップに無理やり押し込むのではなく、目標を中心に一時的なラインナップを構築することである。仮に、その課題がスリーポイントシュートに関するものだとしましょう。通常のラインナップで1人で難しいシュートを繰り返すのではなく、スペースを作る2人の選手と、守備の助けを罰せる信頼できるシューター1人を使うのが良いでしょう。そうすれば、その課題は煩わしい付随的な作業ではなく、ゲームの一部となる。 ダンクシュートに特化した目標は、逆の方向で機能します。アスリートがフィニッシュするには明確なレーンが必要なので、間隔が非常に重要になる。ペイントエリアが常に他のインサイドスコアラーによって占められている場合、ラインナップには強力なダンカーが含まれているように見えるかもしれないが、その選手がチャレンジに必要なことを実行するのは困難になるだろう。より良い構成は、外周にクリエイター1人、守備を広げる選手1人、そして守備が崩れた後に攻撃するフィニッシャーがいる形です。 『トリプル・スレット』は、こうした実験をさらに際立たせる作品となっている。コート上に選手が3人しかいない状況では、弱点を隠す場所はない。2人の選手がシュートできない場合、ディフェンス側はコートを縮小させることができます。誰も外周で守れなければ、一方の相手クリエイターが試合を支配できます。だからこそ、補完的なスキルセットの方が、単に3枚の最高評価カードを選ぶよりも重要になることが多いのです。 プレイヤー経験値は、このプロセスにさらに別の要素を加える。NBA 2K27では、カードはゲームプレイを通じてXPを獲得できるため、プレイヤーが実際の試合に異なるカードを配置するもう一つの理由を与えています。チャレンジでテストされるカードは、同時に進行を促すことができます。これは良いフィードバックループを生み出します。チャレンジによってプレイヤーはカードを使うようになり、ゲームプレイによってカードが進化し、改良されたカードは最終的に元のチャレンジ以外でも役立つようになるでしょう。 刷新されたエクスチェンジは、債権回収マネジメントもより柔軟にしています。すべての下位カードや重複カードを単にスペースを占有するものと見るのではなく、プレイヤーはそのカードが将来のラインナップ価値、チャレンジ価値、交換価値があるかどうかを評価できます。それは、すべてのカードをすぐに交換すべきだという意味ではない。チャレンジの条件が急速に変わる可能性があるため、少数の有用なプレイヤーを残しておくのは賢明です。今日は普通に見えるカードが明日には突然便利になるかもしれません。 シーズン1の共有進行システムは、プレイヤーがモードを交互にプレイすることを促します。MyTEAMとThe Cityは同じシーズンXP進行に寄与しているため、あるモードに飽きたプレイヤーはシーズン進行を完全に放棄せずにアクティビティを切り替えることができます。シティにはミッドウェイやブラックアウトなどのイベントがあり、MyTEAMも独自のチャレンジや競技活動を行っています。この多様性のおかげで、毎回同じタイプのゲームをプレイすることが進捗に依存しないため、長いシーズンの単調さが和らぎます。 選手編成に関する実践的な教訓もここにはある。それは、一つのゲームモードだけを基準に選手を編成してはいけないということだ。ハーフコートディフェンスに優れたカードは、スローペースな対戦では有効かもしれないが、スピード重視のトリプルスレット環境ではあまり適していないかもしれない。高レベルのスコアラーはスペースがあれば支配力を発揮しますが、相手が絶えずスイッチしてプレッシャーをかけると効果が低下します。複数のスタイルを用意しておくことで、コレクションの柔軟性が高まり、目的が変わるたびにすべてを再構築する必要性が軽減されます。 こうした状況では、単に最新のカードを追い求めるよりも、リソース計画がより重要になる。支出する前に、実際にラインナップを制限しているポジションを見てください。ボールハンドリングの欠如、外周防御の弱さ、信頼性の低いシュート、リバウンドの不振は、わずかな総合評価の向上以上にチームのパフォーマンスに影響を与えることがあります。U4GMは、手頃な価格、配送速度、アカウントのセーフティに注意を払いながらNBA 2K27のリソースを追加したいプレイヤーにとって便利な選択肢を提供しますが、特定のロースター目標に結びついた方が購入の方が理にかなっています。 したがって、良いシーズン1のセッションは複数のことを同時に達成できます。プレイヤーXPが必要なカードを使ってチャレンジに挑戦したり、別の報酬を獲得できる目標を達成したり、ゲームプレイを通してカードを強化したり、セッションを終える頃にはシーズンのマイルストーンに近づいているかもしれません。なぜピースが重要なのか理解せずにチェックリストを繰り返し練習するよりも、はるかに満足感があります。 シーズン1が進むにつれて、柔軟なコレクションの価値がより明確になるはずだ。新しいチャレンジは異なるプレイヤータイプに注目を向けることができ、交換報酬やプレイヤー経験値は古いカードに追加の使い方を与えます。一つの厳格なラインナップを作り変えないのではなく、プレイヤーはMyTEAMを進化し続けるロースターとして扱い、コアメンバーを維持しつつ次の目標に対応できる層の厚さを保つことができます。調整に必要な追加のリソースが必要な場合は、U4GMを通じてNBA 2K MTを購入することも準備の一部となり、プレイヤーに次のロースター実験を便利かつ比較的予算的にサポートできる方法を提供します。 FRDMトレーニング
查看全文
件名:MPC5605のメモリ読み取りに関する問題(アドレス:0x00100010) こんにちは、 MPC5605を使用しているECUに問題が発生しています。 EOLメモリダンプ操作中、ツールボックスはCPUの直接バイトアクセスを使ってメモリを読み込みます。 *((uint8_t *)address) CANのログより: 「`テキスト」 0x00100008から8バイトを読み込みました -> 成功 0x00100010から8バイトを読み取ると、ECUが応答しなくなりリセットされる。 「`」 MPC5606BKリファレンスマニュアル『16234_MPC5606BRM』、リバノリファレンス2を確認しました: - 表3-1、49ページでは、`0x00100000 - 0x001FFFFF`が**予約済み**と表示されています。 - 871~872ページでは、フラッシュメモリマップとフラッシュエミュレーションマッピングについて説明しています。 もう少し詳しく教えていただけますか: 1. 「0x00100010」はMPC5605にとって有効で読みやすいアドレスか? 2. 予約済みアドレスの場合、ソフトウェアが直接読み取った場合どうなりますか?CANは例外やリセットを引き起こすことはできますか? 3. 正確なMPC5605メモリマップにはどのリファレンス・マニュアルセクションを使うべきか? また、ECUハードウェアからMPC5605の完全な部品番号とシリコンリビジョンも収集しています。 よろしくお願いします、 カシラジャン C 開発ボード Re: Subject: MPC5605 memory-read issue at 0x00100010 こんにちは、 アドレス0x00100010は、MPC560xBメモリマップで予約済みとしてマークされている0x00100000-0x001FFFFFの範囲に属します。予約済み地域はアプリケーションソフトウェアでアクセスしてはなりません。そのような場所へのアクセスはバス関連の例外やデバイス固有の故障応答を引き起こす可能性があり、例外が処理されない場合、通信の喪失やリセットにつながることがあります。 第3章 メモリーマップ petervlna_0-1789455244473.pngpetervlna_0-1789455244473.png よろしくお願いいたします。 ピーター Re: Subject: MPC5605 memory-read issue at 0x00100010 ご返信ありがとうございます
查看全文
主题:MPC5605 内存读取问题,地址为 0x00100010 你好, 我们遇到一个使用 MPC5605 的 ECU 问题。 在执行 EOL 内存转储操作期间,我们的工具箱使用直接 CPU 字节访问来读取内存: *((uint8_t *)地址) 从 CAN 日志中可以看到: ```文本 从 0x00100008 读取 8 个字节 -> 成功 从 0x00100010 读取 8 个字节 -> ECU 停止响应并重置 ``` 我们查阅了 MPC5606BK 参考手册,`16234_MPC5606BRM`,修订版 2: - 表 3-1,第 49 页显示“0x00100000 - 0x001FFFFF”为**保留**。 - 第 871-872 页描述了闪存映射和闪存仿真映射。 请问您能否澄清一下: 1. `0x00100010` 是 MPC5605 的有效/可读地址吗? 2. 如果这是一个保留地址,当软件直接读取它时会发生什么?它会导致异常或 RESET 吗? 3. 我们应该使用哪一参考手册章节来获取准确的 MPC5605 内存映射? 我们还会从 ECU 硬件中收集完整的 MPC5605 零件编号和芯片版本。 此致, 卡西拉詹 C 开发板 Re: Subject: MPC5605 memory-read issue at 0x00100010 你好, 地址 0x00100010 属于 0x00100000-0x001FFFFF 范围,该范围在 MPC560xB 内存映射中标记为保留。应用程序不得访问保留区域。访问此类位置可能会产生与总线相关的异常或其他设备特定的故障响应,如果不处理该异常,可能会导致通信丢失或RESET。 第三章 记忆映射 petervlna_0-1789455244473.pngpetervlna_0-1789455244473.png 顺祝商祺! Peter Re: Subject: MPC5605 memory-read issue at 0x00100010 谢谢你的回复
查看全文
Subject: MPC5605 memory-read issue at 0x00100010 Hello, We have an issue with an ECU using MPC5605. During an EOL memory-dump operation, our toolbox reads memory using a direct CPU byte access: *((uint8_t *)address) From the CAN log: ```text Read 8 bytes from 0x00100008 -> successful Read 8 bytes from 0x00100010 -> ECU stops responding and resets ``` We checked the MPC5606BK Reference Manual, `16234_MPC5606BRM`, Rev. 2: - Table 3-1, page 49, shows `0x00100000 - 0x001FFFFF` as **Reserved**. - Pages 871-872 describe the flash-memory map and flash-emulation mapping. Could you please clarify: 1. Is `0x00100010` a valid/readable address for MPC5605? 2. If it is a reserved address, what happens when software reads it directly? Can it cause an exception or reset? 3. Which reference manual section should we use for the exact MPC5605 memory map? We are also collecting the full MPC5605 part number and silicon revision from the ECU hardware. Best regards, kasirajan C Development Board Re: Subject: MPC5605 memory-read issue at 0x00100010 Hello, Address 0x00100010 belongs to the range 0x00100000-0x001FFFFF, which is marked as Reserved in the MPC560xB memory map. Reserved regions must not be accessed by application software. Accessing such locations may generate a bus-related exception or other device-specific fault response, which can result in loss of communication or a reset if the exception is not handled. Chapter 3 Memory Map petervlna_0-1789455244473.pngpetervlna_0-1789455244473.png Best regards, Peter Re: Subject: MPC5605 memory-read issue at 0x00100010 Thanks for your reply
查看全文
S32K311引导加载程序移植 我目前正在将一个可运行的 Bootloader 项目从 S32K312 移植到 S32K311。我正在使用 S32 Design Studio、NXP RTD 4.9.0 和 GCC 编译器。我遇到了两个与矢量表和复位处理程序相关的严重问题,这些问题似乎是 S32K311 / RTD 4.9 环境特有的。 问题 1:立即使用调试器 RESET 故障 启动 PEMicro 调试器时,内核在 RESET 脚本执行期间立即崩溃,甚至在到达 main() 之前就崩溃了。 重置脚本(……)已完成。 UsageFault:执行指令时使用了无效的 EPSR.T 或 EPSR.IT 字段。 硬故障:故障已升级为硬故障。 我们检查了 startup_cm7.s和 Vector_Table.s。我们注意到 Reset_Handler 缺少 .type。Reset_Handler 的 %function 指令导致 ELF 入口点为偶数地址(例如,0x00402420 而不是 0x00402421),这自然会导致 Cortex-M7 上出现 ARM 模式 UsageFault。 即使在修复了 .type 指令并确保向量表已为 Thumb 模式设置了 LSB 之后,PEMicro 调试器仍然偶尔会在复位后立即抛出此 UsageFault。 问题 2:中断跳转到 0x0(未初始化的 RAM 向量表)当我们成功绕过复位问题并到达 main() 时,一旦硬件中断(如 FlexCAN 或 SWT)触发,系统就会崩溃。PC跳转到0x00000000。 在检查内存时,我们发现 __interrupts_ram_start (0x20000000) 处的 RAM 向量表完全未初始化(填充为零)。我们发现: startup_cm7.s在初始化结束时将 VTOR 设置为 __RAM_INTERRUPT_START,但从未从 ROM 复制该表。 IntCtrl_Ip_Init(&IntCtrlConfig_0)(由平台元器件生成)在启用 INT_CTRL_IP_ENABLE_VTOR_CONFIG 时设置 VTOR,但它也不会将默认向量表从闪存复制到 RAM。 为了解决这个问题,我们不得不在 main.c 中编写一个手动 for 循环,将向量表从 __interrupts_init_start 物理复制到 __interrupts_ram_start,并在调用 IntCtrl_Ip_InstallHandler() 之前更新 S32_SCB->VTOR。 基础代码来自统一引导加载程序演示 有人知道哪里有移植并发布了适用于带 CAN 总线的 S32K311 的引导加载程序吗? Re: S32K311 bootloader porting 你好@ujwal12 对于 Cortex-M7,向量表中的复位处理程序条目必须通过使用 LSB 已设置的地址来指示 Thumb 模式。如果 Reset_Handler 符号没有正确生成为函数符号,链接器可能会在向量表中放置偶数地址,这可能会导致启动期间出现 UsageFault。因此,我们通常不建议修改 startup_cm7.s 文件。或 Vector_Table.s。 S32K3 RTD 采用基于 RAM 的可重定位中断向量表设计。启动时,向量表从闪存复制到 RAM,并且 VTOR 更新为指向基于 RAM 的表。 关于 S32K311 引导加载程序示例的可用性,目前还没有专门针对 S32K311 的官方引导加载程序示例。最接近的参考资料是Example S32K312 Bootloader to Application Jump DS3.5 RTD300和您已经在使用的 Unified Bootloader Demo。 另外请注意,统一引导加载程序是 NXP 的非官方演示程序,仅发布在社区论坛上,因此 NXP 技术支持不提供任何支持。 BR,VaneB
查看全文
LPC55S28 CASPER ECC 乗算実行時間 以下のコードが計測時間内に実行されることが想定されているのか、それとも設定に何か問題があって実行が非常に遅くなっているのかを突き止めようとしています。このコードは、kCASPER_ECC_P256を使用して指定された秘密鍵から公開鍵を生成する関数の一部です。 以下のコードは、GPIOトグルを使用して実行時間を計測します。Set および Clear 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 同じ操作を、150MHzで動作するLPC55S28 EVK上でMCUXpresso SDK CASPER例を用いて測定しました。CASPER_ECC_SECP256R1_Mul() を 1 回呼び出すのに約 2410 万 CPU サイクルが必要で、これは約 160 ミリ秒の実行時間に相当します。 この結果に基づくと、アプリケーションで測定された337msは、特に追加のキーフォーマット、データ変換、初期化、デバッグビルドのオーバーヘッドが含まれれば、不合理とは思えません。 CASPERは、ユーザーが設定可能な別のクロックソースを提供していません。実行時間は主にCASPARアクセラレータを利用したECCソフトウェア実装によって決定されます。 BR ハリー Re: LPC55S28 CASPER ECC Multiply Execution Time 以下のコードが計測時間内に実行されることが想定されているのか、それとも何か設定がされているのかを調べています。 ちょっと、そこ!ハードウェアアクセラレーションによるECC動作での337msは、P256でも148MHzのMCUとしてはやや高く感じます。調べてくれてありがとう。時にはドライバのオーバーヘッドや時計の問題が忍び込むこともあります。CASPERエンジンの特定のクロックソースや、その性能最適化に関する利用可能なドキュメントは確認しましたか? Re: LPC55S28 CASPER ECC Multiply Execution Time できることがいくつかあります。しかし、このMCUでCASPERエンジンのクロック設定オプションは見当たりません。 1. 速度向上のためにO2最適化を使用する 2.フラッシュアクセラレータのプリフェッチと待機状態の最適化を有効にしてください。 SYSCON -> FMCCR |= SYSCON_FMCCR_PREFEN_MASK ;   その後、160ミリ秒まで短縮することができました。  
查看全文
S32K3XXがローカルIPアドレスを自動的に作成できない問題について。 スクリーンショット 2026-09-18 100140.png スクリーンショット 2026-09-18 100315.png スクリーンショット 2026-09-18 100756.png こんにちは: S32DSで独自のローカルIPアドレスを作成し、LWIPプロトコルスタックでローカルIPアドレスを無効にしましたが、上の右下の画像に示すように、シングルステップデバッグ中に接続確立に失敗するエラーが発生します。何が問題なのでしょうか?設定が不足しているのでしょうか?ローカルIPアドレスの作成は許可されておらず、プロトコルスタックで設定する必要があるということでしょうか? お忙しい中、お返事いただき、改めてありがとうございました! Re: 关于S32K3XX无法自己建立本地IP地址的问题 こんにちは、@sunshine88 さん。 IPv4アドレス自体がこのエラーの原因ではありません。lwIPでは、 netif_add() を介して静的IPv4アドレスを直接提供できます。 デバッガのスクリーンショットによると、 netif_add() はネットワークインターフェースの初期化コールバック ETHIF_INIT が ERR_OK 返さないため、 NULL を返します。したがって、エラーはイーサネットインターフェースまたはその下位ドライバの初期化時に発生し、インターフェースがlwIPに追加される前に発生します。 TCP/IPスタック構成のスクリーンショットでは、 「ifaceを有効にする」オプションが選択されていません。ネットワークインターフェースを有効にし、必要な静的IPv4アドレス、サブネットマスク、ゲートウェイを設定してください。次に、設定を再生成し、対応するS32K3 lwIPの例にある初期化シーケンスを使用します。 アプリケーションで住所を割り当てたい場合は、まず成功 netif_add() 確認してください。 これは初期化の失敗を検出しやすくするだけのものであることにご注意ください。GMAC/イーサネットの基礎設定を修正するわけではありません。 まずは、ネットワーク初期化を変更しずに、あなたのS32K3デバイスとソフトウェアパッケージのバージョンに合わせて元のlwIP例をビルドし実行することをお勧めします。元の例が正常に動作したら、静的IPv4アドレスのみを変更して結果を確認してください。 初期化がそれでも失敗する場合は、以下の情報も提供してください。 正確なS32K3デバイスと評価ボード S32 Design Studio版 RTDおよびTCP/IPスタックパッケージのバージョン ETHIF_INIT の定義と、その関数が返すエラー 変更されていないlwIPの例が同じハードウェアで動作するかどうか 同じ質問が3つの別々のコミュニティ投稿で寄せられたようです。トラブルシューティング情報を一箇所にまとめるため、議論はどちらか一方のフォーラムのみで行ってください。 よろしくお願いいたします。 パベル
查看全文
MAYA-W166 WITH IW416 HOW TO BT_WAKE_HOST BT_WAKE_HOSTをトリガにしてOSレジウムする方法を教えてください Re: MAYA-W166 WITH IW416 HOW TO BT_WAKE_HOST こんにちは、 どのOSとホストを使っているのか教えていただけますか? AN12849をご覧ください。 よろしくお願いいたします。 ダニエル。
查看全文
S32K311ブートローダーの移植 現在、S32K312で動作するブートローダープロジェクトをS32K311に移植しています。私はS32 Design StudioとNXP RTD 4.9.0、GCCコンパイラを併用しています。S32K311 / RTD 4.9環境に特有の、ベクターテーブルとリセットハンドラに関連する2つの深刻な問題に遭遇しています。 問題 1: デバッガーのリセット時にすぐに UsageFault が発生します。PEMicro デバッガーを起動すると、main() に到達する前にリセット スクリプト中にコアがすぐにクラッシュします。 スクリプトのリセット(…)が完了しました。 UsageFault: 無効な EPSR.T または EPSR.IT フィールドで実行された命令。 ハードフォールト:障害がハードフォールトにエスカレートしました。 startup_cm7.sを確認しました。および Vector_Table.s。Reset_Handler に .type が欠落していることに気づきましたReset_Handler、%function指令が出され、ELFのエントリポイントが偶数アドレス(例:0x00402421ではなく0x00402420)となり、自然とCortex-M7でARMモードのUsageFaultが発生します。 .type ディレクティブを修正し、ベクター テーブルで LSB が Thumb モードに設定されていることを確認した後でも、PEMicro デバッガーはリセット直後にこの UsageFault を時折スローします。 問題 2: 割り込みが 0x0 (初期化されていない RAM ベクタ テーブル) にジャンプする リセットの問題を正常に回避して main() に到達すると、ハードウェア割り込み (FlexCAN や SWT など) がトリガーされた瞬間にシステムがクラッシュします。PCは0x00000000にジャンプします。 メモリを調査したところ、__interrupts_ram_start (0x20000000) にある RAM ベクタ テーブルが完全に初期化されていない(ゼロで埋められている)ことがわかりました。私たちは以下のことを発見しました。 startup_cm7.s初期化の最後にはVTORを__RAM_INTERRUPT_STARTに設定しますが、ROMからテーブルをコピーすることはありません。 IntCtrl_Ip_Init(&IntCtrlConfig_0)(プラットフォームコンポーネントによって生成)は、INT_CTRL_IP_ENABLE_VTOR_CONFIGが有効であればVTORを設定しますが、デフォルトのベクターテーブルをフラッシュからRAMにコピーしません。 この問題を回避するために、main.c に手動で for ループを記述し、ベクター テーブルを __interrupts_init_start から __interrupts_ram_start に物理的にコピーし、IntCtrl_Ip_InstallHandler() を呼び出す前に S32_SCB->VTOR を更新する必要がありました。 Unified bootloader Demoからベースコードを取得しました CANのS32K311ブートローダーが移植されて投稿された投稿を知っている人はいますか? Re: S32K311 bootloader porting こんにちは、 @ujwal12さん Cortex-M7の場合、ベクターテーブルのリセットハンドラエントリは、LSBが設定されたアドレスを使ってサムモードを示す必要があります。Reset_Handler記号が関数記号として正しく生成されていないと、リンカーがベクトルテーブルに偶数アドレスを配置し、起動時にUsageFaultが発生することがあります。そのため、一般的にはstartup_cm7.sの変更は推奨しません。または Vector_Table.s。 設計上、S32K3 RTDはRAMベースのリロケーション可能な割り込みベクトルテーブルを使用しています。起動時に、ベクターテーブルがフラッシュメモリからRAMにコピーされ、VTORはRAM上のテーブルを指すように更新されます。 S32K311用ブートローダーのサンプルコードの入手可能性に関してですが、現時点ではS32K311を特に対象とした公式のブートローダーのサンプルコードは存在しません。最も近い参考文献は、 Bootloader to アプリケーション Jump DS3.5 RTD300 S32K312 、すでに使っているUnified Bootloaderデモです。 また、Unified Bootloaderは非公式のNXPデモであり、コミュニティフォーラムでのみ公開されているため、NXPの技術サポートからはサポートされていません。 BR、VaneB
查看全文
USB implementation on m7 core for i.MX 8M Nano processor I need some guideance for implementing usb for i.MX 8M Nano processor m7 core, I used the nxp sdk for it. But the drive is not responding back and the signal from the controller is weak. Re: USB implementation on m7 core for i.MX 8M Nano processor Hello, Unfortunately, there is no driver available for USB in the official i.MX SDK release. It may be possible to port it from other devices for example i.MXRT, but the PHY and USB non-core registers are different, and it will not be straightforward to port but, needs to be implemented in your side. Best regards.
查看全文
MAYA-W166 与 IW416 如何使用 BT_WAKE_HOST 唤醒主机 请问如何使用 BT_WAKE_HOST 触发操作系统注册器? Re: MAYA-W166 WITH IW416 HOW TO BT_WAKE_HOST 您好, 请问您使用的是什么操作系统和主机? 请查看AN12849 。 问候, 丹尼尔。
查看全文
8M Nanoプロセッサ向けのm7コア i.MX USB実装 8M NanoプロセッサのM7コア i.MX USBを実装するための指針が欲しいです。NXP SDKを使いました。しかしドライブは応答せず、コントローラからの信号も弱いです。 Re: USB implementation on m7 core for i.MX 8M Nano processor こんにちは、 残念ながら、公式の i.MX SDKリリースにはUSB用のドライバーは提供されていません。 i.MXRTなどの他のデバイスから移植することは可能かもしれませんが、PHYとUSBの非コアレジスタが異なるため、移植は容易ではなく、お客様側で実装する必要があります。 よろしくお願いいたします。
查看全文
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?
查看全文
MAYA-W166 WITH IW416 HOW TO BT_WAKE_HOST Please tell me how to trigger OS Registrar using BT_WAKE_HOST. Re: MAYA-W166 WITH IW416 HOW TO BT_WAKE_HOST Hi, Could you please tell me what OS and host are you using? Please take a look at AN12849. Regards, Daniel.
查看全文