Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
尝试批量擦除后无法连接到S32K118 大家好,NXP 团队和其他人。 我正在使用 S32k118 CSEc 并尝试了 AN5401 提供的示例 1:配置部件和加载密钥。我在 DebugRAM 配置中运行了该项目,可以对 MCU 进行分区并设置密钥。我没有对密钥设置任何保护,但是当我下次尝试擦除整个芯片时,我收到了保护字节已设置的消息。当我继续时,它不断抛出相同的消息并最终失败。 以下是 JLink 的输出: 正在连接... - 通过 USB 连接到探针/编程器设备 0 - 探针/编程器固件:J-Link Ultra V5 编译于 2024 年 2 月 19 日 15:14:38 探头/编程器序列号:505002010 -选择设备“S32K118(允许安全)”。 - 目标接口速度:4000 kHz(固定) - VTarget = 3.305V - InitTarget() 开始 - 已选择 SWD。执行 JTAG -> SWD 切换序列。 - 设备现在将不再安全。 - 停止 CPU 时超时。 - InitTarget() 结束 - 耗时 4.33 秒 - 找到 ID 为 0x0BC11477 的 SW-DP - DPIDR:0x0BC11477 - CoreSight SoC-400 或更早版本 - 扫描 AP 地图以查找所有可用的 AP - AP[2]: 由于已到达 AP 地图末尾,因此停止 AP 扫描 - AP[0]: AHB-AP (IDR: 0x04770031) - AP[1]: JTAG-AP (IDR: 0x001C0020) - 迭代 AP 映射以找到要使用的 AHB-AP - AP[0]: 已跳过。无法读取 CPUID 寄存器 - AP[1]:已跳过。不是 AHB-AP - 连接到 CPU 失败。重置下执行连接。 - DPIDR:0x0BC11477 - CoreSight SoC-400 或更早版本 - 扫描 AP 地图以查找所有可用的 AP - AP[2]: 由于已到达 AP 地图末尾,因此停止 AP 扫描 - AP[0]: AHB-AP (IDR: 0x04770031) - AP[1]: JTAG-AP (IDR: 0x001C0020) - 迭代 AP 映射以找到要使用的 AHB-AP - AP[0]: 已跳过。无法读取 CPUID 寄存器 - AP[1]:已跳过。不是 AHB-AP - 在 Coresight 设置中找不到核心 我也尝试了这里建议的序列https://community.nxp.com/t5/S32K/Unbricking-S32K146/mp/937227: J-Link>r0 J-Link>swdwritedp 2,0x01000000 写入 DP 寄存器 2 = 0x01000000 J-Link>swdreadap 0 读取 AP 寄存器 0 = 0x00000000 J-Link>swdreadap 0 读取 AP 寄存器 0 = 0x00000037 J-Link>swdreadap 1 读取AP寄存器1 = 0x00000037 J-Link>swdreadap 1 读取 AP 寄存器 1 = 0x00000000 J-Link>解锁 Kinetis 找到 ID 为 0x0BC11477 的 SWD-DP 解锁设备...确定 但我仍然无法连接 我尝试过连接 SEGGER Jlink 和 Onboard Pemicro - 结果是一样的。你能解释一下为什么会发生这种情况以及我该如何克服这个问题并避免将来再发生这种情况吗?谢谢。 回复:尝试批量擦除后无法连接到S32K118 谢谢你的回答。 但是 s32k1-RM rev14.1 中的“36.5.12.2.1 使用后门密钥访问取消保护 MCU”部分又如何呢?有帮助嗎?或者 Jlink 命令“解锁 Kinetis”尝试执行该操作?
記事全体を表示
尝试使用 EGL_image_external 进行渲染时出现 GPU 错误 在 iMX.8QuadMax 上运行,我正在尝试部署一个 Gstreamer 管道,该管道解码 HEVC 帧,然后将其传递给“glupload”,这是一个能够生成 EGL_image 支持的 GL 纹理的 Gstreamer 元素。 根据其调试和日志输出,glupload 在从 DMA 缓冲区创建 EGL 图像时似乎设置了正确的参数。 但是,当我尝试在 GLES 中渲染解码后的帧并从 EGL_image 支持的纹理中进行采样时,出现错误: [ 1] ES30: 验证过程中出现一些绘制错误并被跳过 此外,在从纹理中采样的过程中,偶尔会出现 SEGFAULT。调用堆栈是: #0 0x0000fffff5a48e68 在 ?? () 中来自 /usr/lib/libGAL.so #1 0x0000fffff59edcb4 在 gcoSURF_DisableTileStatus () 中来自 /usr/lib/libGAL.so #2 0x0000fffff5a036e8 在 gco3D_SetTarget () 中来自 /usr/lib/libGAL.so 我可以得到一些帮助来找出问题所在吗? 回复:尝试使用 EGL_image_external 进行渲染时出现 GPU 错误 我解决了这个问题。Gstreamer 插件使用它们自己的 GL 上下文而不是共享我的渲染上下文,因此我获得的纹理 ID 尽管在渲染上下文中是有效的纹理 ID,但实际上并不是相同的对象。因此,尝试将这些纹理采样为 EGLImage 外部支持纹理是错误的。 回复:尝试使用 EGL_image_external 进行渲染时出现 GPU 错误 我真的不认为这是一个内存空间限制。纹理为 200x200 RGBA。我正在播放的视频流中有 3 帧。总共只有 160KB。 我已阅读 Gstreamer 指南。它主要讨论使用 gst-launch 构建管道,但在这里没有帮助。 “验证过程中某些绘制出现错误并被跳过”是什么意思?我如何获得有关实际*错误*的更多详细信息? 我也尝试了 VIV_DEBUG=-MSG_LEVEL:WARNING,但没有打印任何新内容。
記事全体を表示
FXLS93333/FXLS93230AESR2 - PSI5通信 NXP技術チームの皆様 慣性センサの使用方法を理解するためにあなたのサポートが必要です。 自動車用エアバッグ アプリケーションに、NXP の 2 軸/1 軸慣性センサ FXLS93333/FXLS93230AESR2 を使用しようとしています。マスターは PSI5 通信を介してスレーブ センサと通信しています。私たちのアプリケーションに関して、次のような質問があります。 1 - アプリケーションマニュアル AN12776 のセクション 7 には次の内容が記載されています。NXP から部品を注文する場合、入手したセンサが COMTYPE レジスタを 0x01 に設定して追加プログラムされていることを確認する必要があるということですか?ただし、NXP の部品番号はセンサ部品ごとに固有であり、PSI5、SPI、I2C などの複数の通信をサポートします。アプリケーションノートを正しく読んでいますか?もしSOなら、必要な部品をご注文する方法/ご注文の場合の手順。 Sharma_0-1752496779444.png PSI5 通信の部品番号は以下のように固有です。 Sharma_1-1752497000814.png 2- Mouser/Digikey から入手可能なセンサ (事前プログラミングなし) を使用して、デフォルトの設定/構成で PSI5 接続を介してマスターアプリケーションに直接接続できますか。 3 - PSI5通信センサのボーレート/データバイト長/モードなどのデフォルト設定は何ですか? 4- 必要に応じて、Mouser/Digikeyから購入した新しいセンサをプログラムできるEVBはありますか(UM11559 SEN-GEN6-SKT EVBなど) よろしくお願いいたします。 よろしくお願いします。 シャルマ Re: FXLS93333/FXLS93230AESR2 - PSI5 communication 親愛なるトーマスへ NXLS96xx 部品用の FFVT プログラミング ツールとユーザー マニュアルを受け取りました。また、多くのシリコンサプライヤーで在庫切れとなっている SEN-GEN6-SKT HW ボードの入手可能性について、さまざまなサプライヤーに問い合わせています。 First Field Verification Tool は、デバイス レジスタ構成のさまざまな組み合わせを NXLS96xxx (レジスタ マップ RAM 領域) に複数回ダウンロードし、適切に動作するかどうかの実験をサポートします。その後、デバイス レジスタ構成を OTP に永続的にプッシュしたいと考えました。 よろしくお願いします。 シャルマ Re: FXLS93333/FXLS93230AESR2 - PSI5 communication 親愛なるトーマスへ 親切なご助力にSO感謝いたします。NXLS96xxx用のプログラミングツールを入手するための標準サポートチケットを作成します。また、プログラミングマニュアル/ドキュメントを共有していただけますか? よろしくお願いします。 シャルマ Re: FXLS93333/FXLS93230AESR2 - PSI5 communication シャルマ様 ご質問への回答は下記をご覧ください。 1.部品番号を FXLS9xxxx から NXLS96 に更新する必要があります。交換部品番号が記載された下記の更新された表を参照してください。詳細は、こちらCAN: https://www.nxp.com/products/NXLS96 NXLS96xxx 部品番号は、NXP によって PSI5 が有効になっています。これらの部品番号のいずれかを注文すると、PSI5 プログラミング モードを使用して部品をプログラムできます。必ず NXLS96xxx 部品番号を注文してください。 1.png 2. センサは以下の設定に基づいてデータを送信します。これは評価には便利ですが、メモリがロックされず、セーフティメカニズムが無効になるため、アプリケーションでプログラミングせずに使用することはお勧めしません。 3.データシートによると、デフォルトの構成の詳細は次のとおりです (ビットは OTP でプログラムされていないため、SOユーザーがプログラムできることに注意してください)。 • 8 usビット時間(125 kbps)、通常応答電流 • セルフテストを8回繰り返し • 時間スロットに対するデータレイテンシ • チャネル0が有効 • 16ビットデータ、CRC、タイムスロット開始 = 47 us (PSI5-P16C) • 400 Hz、4極 • 最大範囲:高g = 700 g、中g = 233 g • オフセットキャンセルが有効 • チャネル1が有効 • 16ビットデータ、CRC、タイムスロット開始 = 244 us (PSI5-P16C) • 400 Hz、4極 • 最大範囲:高g = 700 g、中g = 233 g • オフセットキャンセルが有効 4. はい、プログラミング用のツールをCAN提供します。そのための標準サポート チケットを作成してください。ツールのCANご注文を担当できる同僚は現在不在ですが、7 月 21 日の月曜日には復帰する予定です。 BRs、トーマス
記事全体を表示
S32G3:RTD MemMap 截面违规(用于 LLCE) 您好, 根据"[S32G3/Valeo] RTD MemMap Sections Violations - NXP Community" 的建议,我创建了此票据,用于为 LLCE 进行 xxx_MemMap 审核,具体如下(完整文档附后)。 请检查使用 GHS 编译后,下列参数/函数是否遗漏包含在适当的内存区域。 ================================================================= (Can_43_LLCE_TS_T40D11M10I8R0) (Llce_Af_TS_T40D11M10I8R0) Can_43_LLCE_AFcfg.c: Llce_Eth2Can_EnabledFormats => CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE(即 bss 部分)中的数据 pLlce_Can_AfBuffer => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED(即 rodata 部分)中的数据 (Can_43_LLCE_TS_T40D11M10I8R0) (Llce_Af_TS_T40D11M10I8R0) Can_43_LLCE_MAIN_SOC_PBcfg.c:// VariantPostBuild 已启用 (MAIN_SOC) Llce_Rx_Filters_List_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 Llce_RxAf_Filters_List_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 Llce_Rx_Filters_Ctrl0_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为啮合数据。 Llce_Rx_Filters_Ctrl2_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,它是啮合数据 Llce_Rx_Filters_Ctrl4_PB_MAIN_SOC=> CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据是啮合数据段 Llce_Rx_Filters_Ctrl9_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据是啮合数据段 Llce_Rx_Filters_Ctrl15_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据是啮合数据段。 Llce_RxAf_Filters_Ctrl0_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据。这是rodata部分 Llce_RxAf_Filters_Ctrl5_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,这是 Llce_RxAf_Filters_Ctrl9_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 Llce_RxAf_Filters_Ctrl15_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 (Can_43_LLCE_TS_T40D11M10I8R0) (Llce_Af_TS_T40D11M10I8R0) Can_Llce: llce_minihif => 未包含在 Can_43_LLCE_MemMap.h 中的静态全局变量 u8Length => 未包含在 Can_43_LLCE_MemMap.h 中的静态局部变量 stringBuf => 未包含在 Can_43_LLCE_MemMap.h 中的静态局部变量 ***************************************************************************************************************************************************************** 答:请通过标签"LLCE" 在恩智浦社区 ***************************************************************************************************************************************************************** 向 LLCE 团队提出此问题。 LLCE Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 你知道修复工作是否有时间表吗?如果有,何时? Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 法雷奥很晚才对您的问题做出反馈: 1.当你说:"Llce_Eth2Can_EnabledFormats => data in CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE which is bss section", 你是说 Llce_Eth2Can_EnabledFormats 应该放在例如 .mcal_bss_no_cacheable 中,但实际上却放在 .bss 部分? 该变量的初始化值为 4,但变量位于 .bss 部分,而不是 .data 部分。部分,因此变量应放在 .mcal_data_x 中。 2. 将全局静态变量llce_minihif加入相应的 MemMap 部分。u8Length/ stringBuf 是函数静态变量,它们不受 MemMap 控制,因为根据 SWS_MemMap_00023,MemMap 不能添加到函数体内部。如果需要通过 MemMap 部分对其进行控制,我们可以遵循 AUTOSAR 建议:"要强制对函数的静态变量进行特殊内存映射,必须将该变量移至文件静态作用域"。 看起来这个变量在 Can_43_LLCE_TS_T40D11M10I10R0 中已被修复。 3.对于 Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ ,您确定将其放在正确的部分吗? 从下图中可以看到,有(static、static const),但它们都被放在同一个部分,即 .mcal_cont_cfg 部分。它是 rodata,而这个文件是生成的,所以我不能把它放在任何部分。 在之前/旧的交易所中,你预计下一个版本中不会有任何软件更新,因为不会有新的软件版本。现在还是这样吗? Re: S32G3: RTD MemMap Sections Violations (For LLCE) Hi Cong、 我已将我方的答复汇总给客户,但至今没有进一步的反馈。 我刚刚向我们的联系人发送了一封电子邮件,就您提出的 LLCE 问题征求进一步的反馈意见。 如果客户有任何回复,我们将在此更新。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) HiRichard, 感谢您的更新! 我们将在 2025 年 3 月在 S32G 上发行一张光盘,计划于 2025 年 5 月发行。此后没有发布下一个版本的计划。因此,我想收集有关该主题的信息,然后我们可以将这些实现纳入即将发布的2025年5月版本中。 请就我最初答复中的问题提供反馈意见: 1.我是否正确理解了他们所说的话?当他们说"Llce_Eth2Can_EnabledFormats => data in CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE which is bss section", 他们是否说 Llce_Eth2Can_EnabledFormats 应放在 .mcal_bss_no_cacheable 等位置,但实际上却放在 .bss 部分? 2. 将全局静态变量llce_minihif加入相应的 MemMap 部分。u8Length/ stringBuf 是函数静态变量,它们不受 MemMap 控制,因为根据 SWS_MemMap_00023,MemMap 不能添加到函数体内部。如果需要通过 MemMap 部分来控制它们,我们可以遵循 AUTOSAR 的建议:"要强制对函数的静态变量进行特殊内存映射,必须将该变量移至文件静态作用域"。 您能否确认这是一个强烈要求? 3. 对于 Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ , 您是否检查过为什么客户认为它被放在了错误的部分? Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 根据原始票据上关于修复期望的更新,客户将在 6 月冻结代码。 尽管涉及许多元器件并且需要补丁,但要在6月之前组装起来会很困难。 因此,除非客户进一步强调,否则请根据现有假设/资源进行规划。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) Hi Cong、 很抱歉迟迟没有更新,但正如您在原始票据上看到的,客户完全没有反馈。 我将再次推动这项工作,但看起来您可以根据您对当前形势的评估来制定计划。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 嗨,理查德、 你有关于这个话题的最新消息吗? 我们需要尽快在 S32G 上的三月光盘中实施。 此致, Cong Re: S32G3: RTD MemMap Sections Violations (For LLCE) 对于 2.是的,我们创建了AF-4950票来记录这些详细信息。正在等待上述问题的确认,以便最终确定机票细节。 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 感谢您的更新。 1.对于Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ ,我将进一步检查为什么客户认为它被放在了错误的部分。 2.至于其他部分,既然您提到我们将进行修订,以确保包含适当的部分,那么我们是否已经制定了解决这些问题的方案/计划,以便与客户分享? 3.如原始票据"[S32G3/Valeo] RTD MemMap Sections Violations - NXP Community" 所述,FAE 正在与客户核实他们对此问题修正的期望,如有进一步信息,将在此更新。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 你好, 首先,我需要了解报告的内容。当他们说"Llce_Eth2Can_EnabledFormats => CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE 中的数据,这是 bss 部分 "时, ,他们是否说 Llce_Eth2Can_EnabledFormats 应位于例如.mcal_bss_no_cacheable、但实际上它被放入 .bss部分? 根据上述假定的理解,反馈意见是: NXP 将: - 将全局静态变量 llce_minihif 纳入相应的 MemMap 部分。u8Length/ stringBuf 是函数静态变量,它们不受 MemMap 控制,因为根据 SWS_MemMap_00023,MemMap 不能添加到函数体内部。如果需要通过 MemMap 部分对其进行控制,我们可以遵循 AUTOSAR 建议:"要强制对函数的静态变量进行特殊内存映射,必须将该变量移至文件静态作用域"。您能确认这是一个强烈要求吗? - 将全局静态变量 llce_minihif 定义纳入相应的 MemMap 部分 - 将 Llce_Eth2Can_EnabledFormats 的声明纳入相应的 MemMap 部分。这很可能就是放错位置的原因。 - 将 pLlce_Can_AfBuffer 的声明纳入相应的 MemMap 部分,并仔细检查当前 MemMap 部分是否合适。 - Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ 已被放入相应的 MemMap 部分,因此需要进行额外分析以确定变量错放的原因。 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 是否有任何更新? 此致, 理查德-钟
記事全体を表示
I2S 缓冲区处理 是否有关于 I2S 驱动程序缓冲区处理和状态回调的说明?我正在将一个音频处理项目从 Kinetis 移植到 LPC55S69,在 Kinetis 上我使用的是自己的 I2S DMA 驱动程序,我需要弄清楚我的驱动程序中哪些部分可以用 MCUX SDK 驱动程序替代,或者我是否应该跳过它,将自己的驱动程序调整到新硬件上。 根据我从稀少的 SDK 文档中了解到的情况,驱动程序似乎有一个队列,可以接收 I2S_NUM_BUFFERS (4) 条目。它没有提到任何大小限制,所以我假设队列只接受四个指针。 所有提供的示例项目都只使用一个固定的缓冲区。它们会将同一个缓冲区连续排队两次,以避免播放中出现间隙,但并没有说明如何管理多个缓冲区。环回示例中,发送方和接收方使用的是同一个缓冲区,因此内容在不断变化,但没有任何同步机制--它们只是依赖于两个缓冲区的时钟是一致的,不会出现暂停或不同步的情况。演示只改变内容,而不是发送的缓冲区,这对大多数实际应用来说并不安全。 有一个 i2s_transfer_callback_t 的回调,它提供了一个 status_t 类型的参数"completionStatus" ,但 status_t 只是被类型化为 int32_t,没有关于它可以返回值的文档。 有一个包含 BufferComplete、Done 和 Busy 值的匿名枚举,但没有明确说明这些值会在回调中使用。我假设这些是 status_t 的值,BufferComplete 表示发送了一个缓冲区,Done 表示所有缓冲区都已发送完毕。如果能提前知道最终缓冲区是同时生成 BufferComplete和Done,还是只生成 Done 就更好了。 基本 I2S 驱动程序中提供了这一功能。在 I2S_DMA 驱动程序中,有一个单独的 I2S_DMAC回调。手册中似乎完全没有记录。从代码来看,这只是 ISR 使用的一个内部函数。是这样吗?是否有办法在 SDK 文档中区分哪些是导出函数,哪些仅在内部使用?或者,如果不相关,可以完全排除内部内容? 我是否认为完成回调会在 DMA 传输完成时发生?或者在 I2S FIFO 清空时是否有回调?我的应用程序通常无法连续发送音频,因此我需要知道何时在不中断最后一次传输的情况下关闭 I2S 发射器。(感谢硬件设计师允许你选择空闲的 I2S 发射器是发送零还是重复最后一个值——这是真正让事情变得更容易的小动作之一。我有一些应用软件需要双管齐下)。 编辑:我现在最关心的是确定哪个缓冲区刚刚完成。回调似乎没有指定,用户数据与句柄而不是单个传输相关联,而且 DMA 句柄数据是私有的。先进先出是一个显而易见的假设,但我想避免在传输中止或其他情况下出现缓冲区不同步的可能性。 谢谢! Scott Re: I2S buffer handling 我重新提起这个话题,是因为我还真的需要一个合适的答案。我去查看 SDK 在过去两年中是否有所改进,但现在 MCUX 面板(https://ui01.prod-mcuxsd.nxp.com/mcuxsdk/latest/html/index.html)上的文档链接已经失效,而且没有下载离线副本的选项。我在网上搜索了 MCUX SDK 文档,并按照我在那里找到的内容进行了编写。 目前看来,情况没有任何改善。双缓冲演示不仅不会尝试确定发送的是哪个缓冲区,甚至根本不重要,因为它总是在发送同一个缓冲区的更多副本。在这个例子中,没有任何内容能为实际使用该驱动程序提供参考。 我的主要问题仍然是:如何可靠地确定 I2S DMA 驱动程序刚刚发送完哪个缓冲区,从而保证以正确的顺序加载非活动缓冲区?我只是在每次回调时跟踪一个标记,但如果错过一次中断,系统就会失去同步,所有音频都会出现乱码,而且无法判断是否出了问题。 谢谢! Scott Re: I2S buffer handling 卡洛斯,开什么玩笑?对不对? Re: I2S buffer handling 对不起,快速阅读造成了困惑,工作突然加载,快速回答让我感到困惑,我评论说,每个代码都是由相应领域的专家开发的,因此每个代码都不是由一个人编写的,而是由一群具有不同知识的人编写的,因此,尽管可能会有一些错误(我们都有错误),但我相信,如果您可以信任这些代码的话。   另一方面,我们没有太多关于该代码的文档,我目前正在寻找你的信息,但由于缺乏关于该代码的信息,我想我无法快速给你答复,至于你告诉我的,好吧,我不是提供空缺职位的人,尽管如果你是这方面的专家,我们也不介意 I2S 和其他相关主题的专家,所以如果你想成为我们团队的一员,你可以寻找空缺职位并申请。 https://www.nxp.com/company/about-nxp/careers:CAREERS Re: I2S buffer handling 卡洛斯 请重新阅读我的问题。你会看到我的帖子是关于 I2S 的,这是一个同步串行音频接口,与 I2C 协议无关。你提供的链接都与 I2S 或我的问题无关。 我试图使用 MCUX SDK 驱动程序,因为据说这是恩智浦推荐的解决方案。我为 Kinetis 编写了自己的驱动程序,但我想 利用恩智浦已经为此提供的代码,而不是从头开始为 LPC 编写驱动程序。 听起来你是在告诉我,获得所需信息的唯一方法就是逆向工程 MCUX 代码。设置断点并不能告诉我有哪些值是可能的。我刚才做了,完成回调得到的值是 0xa8c。这究竟说明了什么?如果不通过驱动程序进行回溯,就无法查询,也无法了解其他可能的值及其含义。 回读 I2S_DMACallback(),似乎没有提供用于确定刚刚发送哪个缓冲区的机制。这些信息被保存在标有"成员的私人句柄中,不得在驱动程序之外访问或修改。" 别误会我的意思,如果恩智浦愿意支付适当的薪水,我很乐意整天阅读、测试、记录和改进 MCUX SDK 驱动程序代码。 我提出的问题是在实际应用中可靠使用 I2S 驱动程序时需要回答的问题。如果恩智浦不能提供答案,那么我只能认为这些代码从未在实际应用中进行过测试,因此不应该被认为是完整或安全的。是这样吗? Scott Re: I2S buffer handling 我建议您阅读 i2c 手册(https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/nxp-designs/931/1/UM10204.pdf),并在代码中使用断点和观察变量来确定您需要的所有信息   这些链接也很有趣 https://mcuoneclipse.com/2020/06/29/mcuxpresso-sdk-tutorial-using-i2c-driver-on-okdo-e1-board/ https://mcuoneclipse.com/2012/12/04/a-generic-i2c-high-level-driver/ Re: I2S buffer handling 好吧,那我剩下的问题呢? 如何确定刚才发送的是哪个缓冲区?我担心的是,如果应用程序错过了为完成回调提供服务的最后期限,它就会被去同步。在四个缓冲区轮流运行的情况下,它可以漏掉一两个缓冲区而不中断传输,但前提是必须有办法知道哪些缓冲区已经发送。 何时生成回调?最终缓冲区是否会同时生成"缓冲区发送的" 和"完成的" 回调? status_t 可能有哪些值? 以及如何获得完成整个 I2S 传输的回调,这样你才能关闭发射器? 我已经实现了基本功能,但在不了解细节的情况下,很难保证实现的完整和强大。 谢谢! Scott Re: I2S buffer handling 嗨 @scottm 你可以在 sdk_x.x.x_lpcxpresso55s69\ boards\ lpcxpresso55s69\ boards\ lpcxpresso55s69\ driver_examples\ i2s 中找到我们的例子,我们没有更多关于 i2s 的例子了
記事全体を表示
S32K144ボード間SPI通信における異常な動作 こんにちは、S32K144 ボードで SPI 割り込み通信を設定するときに問題が発生しています。このプロジェクトは PC33771B デバイスとの通信を目的としていますが、現時点では 33664EVB によって提供される一種のループバックになっています。 大部分は機能しているように見えますが、データが実際にバッファー内に保存される方法は奇妙です。5 バイトのメッセージがあり、一般的に次の順序に従います。 B5 0 0 0 B1 B2 B3 B4 LPSPI は単語単位で動作するので、これは正しいはずだと私は思います。しかし、何らかの理由で、常にその順序になるわけではありません。ボードを開始するとき、順序は次のようになる場合があります。 B1 B2 B3 B4 B5 0 0 0 そして時にはそれはただ: B1 B2 B3 B4 0 0 0 0 5番目のバイトが完全に失われます。 CAN を使用してデバッグできるように、小さなテスト コードを作成しました。必要なメッセージを SPI_1 に送信し、SPI_0 のバッファで終わるメッセージを受信します。何が起こっているかを確認するためにロジック アナライザーも使用しています。 最初のメッセージ: rchust_1-1756882155720.png まず、 spi メッセージは S32K144 規則に従っているSO、5 番目のバイトは CRC になります。また、cmd で 4 番目のバイトにステップインしているので、都合よく 4 に設定しました。SPI_0 が再び準備完了するまで待っても、常にゼロが返されます。これは最初の場合にのみ発生します。 2番目のメッセージ: rchust_2-1756882331448.png 最後のバイトはまったく表示されません。何らかの理由で失われたのかもしれませんが、その場合でも、MSB 順に並べられている場合、他の 4 バイトは最初のワードには含まれないはずです。 3番目のメッセージ: rchust_3-1756882533429.png これは意図したとおりに機能しているようで、すべてのデータが取得され、予想どおりの順序で実行されます。落ち着いた後にすべてのメッセージで一貫して受け取るものなので、これは予想される順序だと思います。 これに関する問題は、必ずしも 3 番目のメッセージが適切であるとは限らず、5 番目または 6 番目のメッセージが適切である場合もあれば、5 番目のバイトがまったく表示されない場合や、2 番目のワードに表示される場合もあることです。一度正しく実行し始めると、一貫して動作します。この問題の原因について何かアイデアはありますか?コードと構成は以下の通りです。 void response420 ( zc_can_packet * パケット){ zc_spi_transfer(&spi_rx, &spi_to_can_packet); transfer_E2E_spi_packet(&E2E_spi, & can_to_spi_packet , &packet-> temp_data [0]); memcpy (&can_response. temp_data , spi_to_can_packet. rx_buffer , 8); zc_can_send(&can, &can_response, MAILBOX_0); } void zc_spi_transfer ( zc_spi_hw * hw_config, zc_spi_packet * パケット){ hw_config->転送されたパケット= パケット; hw_config-> hw_mode == MASTER の場合{ SPI_MasterTransfer (hw_config-> inst 、packet-> tx_buffer 、packet-> rx_buffer 、(packet-> message_bytes_length *NUMBER_OF_BITS_IN_BYTE)/hw_config-> master_config -> frameSize ); }それ以外{ SPI_SlaveTransfer (hw_config-> inst 、packet-> tx_buffer 、packet-> rx_buffer 、(packet-> message_bytes_length *NUMBER_OF_BITS_IN_BYTE)/hw_config-> slave_config -> frameSize ); } } void transfer_E2E_spi_packet ( E2E_spi_handler * E2E_spi, E2E_spi_packet * パケット, uint8_t * データ){ E2E_spi-> protector_handler -> protect_package (E2E_spi-> protector_handler 、データ、パケット-> packet_data . data_length_bytes 、 &(packet-> raw_spi_packet . tx_buffer [0]), packet-> packet_data . E2E_packet_id , packet-> packet_data . counter ); zc_spi_transfer(E2E_spi-> spi_handler 、&(packet-> raw_spi_packet )); packet-> packet_data . counter ++; //これは実際にはこのCRC形式では使用されませんが、この関数は複数のCRC形式で動作します if (packet-> packet_data . counter > E2E_spi-> protector_handler -> counter_overflow_number ){packet-> packet_data . counter = 0;} } response420 関数は、CAN コールバック自体によってフラグが立てられたときにメイン内部で呼び出される、CAN パケットを受信するための「コールバック」です。CAN 部分はそれほど重要ではありません。このバグは CAN がなくても発生するため、デバッガーでこのバグが表示された後、より多くの入力をテストできるように CAN を試しました。 一般的に、SPI_SlaveTransfer および SPI_Master 転送関数に見られるように、私は PAL を使用しています。これは PAL 構成です: SPI_1 設定: { .ボーレート = 2000000U、 .frameSize = 40U、 .bitOrder = SPI_TRANSFER_MSB_FIRST 、 .clockPolarity = SPI_ACTIVE_HIGH 、 .ssPolarity = SPI_ACTIVE_LOW 、 .clockPhase = READ_ON_EVEN_EDGE 、 .ssPin = 0, .transferType = SPI_USING_INTERRUPTS 、 .rxDMAChannel = 0U、 .txDMAチャネル = 0U、 .callback = NULL、 .callbackParam = NULL、 .拡張子 = NULL } SPI_0 設定: { .frameSize = 40U、 .bitOrder = SPI_TRANSFER_MSB_FIRST 、 .clockPolarity = SPI_ACTIVE_HIGH 、 .ssPolarity = SPI_ACTIVE_LOW 、 .clockPhase = READ_ON_EVEN_EDGE 、 .transferType = SPI_USING_INTERRUPTS 、 .rxDMAChannel = 0U、 .txDMAチャネル = 0U、 .callback = NULL、 .callbackParam = NULL、 .拡張子 = NULL } 同様の問題を発見した人はいますか? Re: Weird behavior in S32K144 board to board SPI communication わかりました。それはよかったです。@danielmartynekさん、本当にありがとう! Re: Weird behavior in S32K144 board to board SPI communication 素晴らしい。今は期待通りに動作しているようです。 HW はバイトスワッピングをサポートしていますが、SDK ドライバはサポートしていません。 danielmartynek_0-1757591362505.png Re: Weird behavior in S32K144 board to board SPI communication さて、コードを最大限に簡略化しました。 uint8_t送信データ[8] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8}; uint8_t受信データ[8]; lpspi_state_t lpspiState; int main (){ zc_clock_init(); zc_start_scheduler(); const clock_names_tクロック名[LPSPI_INSTANCE_COUNT] = FEATURE_LPSPI_CLOCKS_NAMES; clock_names_tクロック名 = クロック名[1]; lpspi_master_config_t spiConfig = { .bitcount = 8U、 .bitsPerSec = 20000000, .callback = NULL、 .callbackParam = NULL、 .clkPhase = 1, .clkPolarity = 0, .isPcsContinuous = true 、 .lpspiSrcClk = クロック名、 .lsbFirst = false、 .pcsPolarity = 0, .rxDMAチャネル = 0, .transferType = LPSPI_USING_INTERRUPTS、 .txDMAチャネル = 0, .whichPcs = 0, }; LPSPI_DRV_MasterInit(1, &lpspiState, &spiConfig); config_spi_pinout(spi_pinoutconfigs[1] .pinout ); 一方、 (1){ LPSPI_DRV_MasterTransfer(1, &送信データ[0], &受信データ[0], 8); zc_delay_milliseconds(1000); } 0を返します。 } これを実行してビットカウントを 8 にすると、結果は次のようになります。 rchust_0-1757584304367.png 間隔が問題だが、少なくともほぼ期待通りに動作する。 ビットカウント32の場合も同様です。 rchust_1-1757584408075.png 各ワード内のバイトは逆順にされます... 最後に、bitcount 64 で同じことを実行して何が起こるかを確認します。 rchust_2-1757584507750.png 同じことです。 これを uint8_t 配列ではなく word 配列に配置するとどうなるでしょうか? uint32_t送信データ[2] = {0x01020304, 0x05060708}; uint8_t受信データ[8]; lpspi_state_t lpspiState; int main (){ zc_clock_init(); zc_start_scheduler(); const clock_names_tクロック名[LPSPI_INSTANCE_COUNT] = FEATURE_LPSPI_CLOCKS_NAMES; clock_names_tクロック名 = クロック名[1]; lpspi_master_config_t spiConfig = { .bitcount = 64U、 .bitsPerSec = 20000000, .callback = NULL、 .callbackParam = NULL、 .clkPhase = 1, .clkPolarity = 0, .isPcsContinuous = true、 .lpspiSrcClk = クロック名、 .lsbFirst = false、 .pcsPolarity = 0, .rxDMAチャネル = 0, .transferType = LPSPI_USING_INTERRUPTS、 .txDMAチャネル = 0, .whichPcs = 0, }; LPSPI_DRV_MasterInit(1, &lpspiState, &spiConfig); config_spi_pinout(spi_pinoutconfigs[1] .pinout ); 一方、 (1){ LPSPI_DRV_MasterTransfer(1, ( uint8_t *) &送信データ[0], &受信データ[0], 8); zc_delay_milliseconds(1000); } 0を返します。 } rchust_3-1757584645130.png 実際に動作します... SO、フレーム サイズ 8 で作業していない場合は、リトルエンディアンのワード単位で送信されるようです。エンディアンを変更する方法はありますか? Re: Weird behavior in S32K144 board to board SPI communication こんにちは@danielmartynek 私はすでにuint8_t配列を使用しています Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 tx_buffer をどのように定義しますか? ドライバは、8 ビット配列への 8 ビット ポインターを必要とします (LPSPI_DRV_MasterTransfer() 内)。 SO、CANそこに単語を渡す代わりにuint8_t[5] tx_bufferを使用できますか? よろしくお願い申し上げます。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@danielmartynek 、 8 ビット フレームでテストしたところ、バイトを順番に送信して正常に動作しました。しかし、問題が 2 つあります。 1 つ目は、8 ビット フレームの場合、ハードウェアがデータをバイト単位で分割することです。これはフレームの定義なので当然のことですが、FUTURE に問題が発生する可能性があります。PC33771 がそのような間隔のメッセージを受け入れるかどうかはまだテストしていません。そうなるはずですが、期待通りのものではありません。 2 番目 (まだ PC33771 でテストしていない理由) は、PAL ライブラリでは連続モードを true に設定できないことです。PAL ライブラリの「方法」Master_init は、それをLPSPI_DRV_MasterInit に渡す前に、これを false に設定します。 status_t SPI_MasterInit ( const spi_instance_t * constインスタンス、 const spi_master_t *config) { status_tステータス = STATUS_ERROR ; uint8_tインデックス = 0; /* LPSPI 上で SPI PAL を定義する */ #if (定義済み (SPI_OVER_LPSPI)) /*! @brief LPSPIのクロック名 */ const clock_names_t g_lpspiClock[LPSPI_INSTANCE_COUNT] = FEATURE_LPSPI_CLOCKS_NAMES if (インスタンス-> instType == SPI_INST_TYPE_LPSPI ) { lpspi_master_config_t lpspiConfig; lpspiConfig. bitsPerSec = config-> baudRate ; lpspiConfig.whichPcs = ( lpspi_which_pcs_t )config-> ssPin ; lpspiConfig. pcsPolarity = ( lpspi_signal_polarity_t )(!(bool)(config-> ssPolarity )); lpspiConfig. bitcount = config-> frameSize ; ( void )CLOCK_SYS_GetFreq(g_lpspiClock[( uint32_t )instance-> instIdx ] ,&lpspiConfig.lpspiSrcClk ) ; lpspiConfig. clkPhase = ( lpspi_clock_phase_t )config-> clockPhase ; lpspiConfig. clkPolarity = ( lpspi_sck_polarity_t )config-> clockPolarity ; lpspiConfig. lsbFirst = config-> bitOrder ; lpspiConfig. transferType = ( lpspi_transfer_type )config-> transferType ; lpspiConfig. rxDMAChannel = config-> rxDMAChannel ; lpspiConfig. txDMAChannel = config-> txDMAChannel ; lpspiConfig.callback = config- > callback ; lpspiConfig. callbackParam = config-> callbackParam ; lpspiConfig.isPcsContinuous = false ; /* このインスタンスにLPSPI状態構造体の1つを割り当てます */ インデックス = SpiAllocateState (LpspiStateIsAllocated、LpspiStateInstanceMapping、インスタンス-> instIdx 、NO_OF_LPSPI_INSTS_FOR_SPI); ステータス = LPSPI_DRV_MasterInit(インスタンス-> instIdx 、( lpspi_state_t *)(&LpspiState[index])、&lpspiConfig); } そうでない場合、 #endif 連続モードでテストする前に、すべてのライブラリを変更して、PAL の使用を停止し、DRV の方法の使用を開始する必要があります。SOて結果を更新しますが、8 ビット フレームで正しい順序で送信されるようです。ただし、40 ビット フレームではそれが実現されないのはまだイライラします。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 更新ありがとうございます。 tx_buffer に 8 ビット配列を CAN 使用しますか? Re: Weird behavior in S32K144 board to board SPI communication はい、いくつかテストした後、問題の根本を見つけることができました。 どうやら、CAN を使用していないときでもピンを設定していたようで、1 つのピンがマスターの CS と衝突したようです。どうして 1 つのことが別のことに終わるのかはわかりませんが、CAN 構成を削除した後、ほとんどの問題は解消されましたが、1 つだけ問題がありました。 何らかの理由で、8 ビットを超えるフレームでデータを送信すると、各ワード内のバイトが入れ替わります。0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 というデータを含む 64 ビット フレームを配置すると、0x04 0x03 0x02 0x01 0x8 0x07 0x06 0x05 になります。これは、SPI が内部的にワードで動作し、データをバイトごとに入力しているためと思われます。あるいはそれはパルライブラリかもしれません。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@danielmartynek 、 まずおっしゃる通り、私の IDE バージョン、SDK は 4.0.2 です。申し訳ありません。 私が示しているコードは CAN コールバックであり、CAN データを SPI バッファにコピーします。このコードは、カスタム ライブラリに組み込もうとしているためこのようになっていますが、実際には、CAN から読み取った内容を SPI (SPI1) に送信し、スレーブ (SPI0) が読み取った内容を CAN に送信するだけです。 CAN は 4 バイトを送信し、次に保護によって CRC である最後のバイトが追加されます。SO SPI は 5 を送信し、次に 5 を読み取り、その後 CAN はバッファの最初の 8 バイト内にあるものをそのまま送信します。バッファ自体は実際にはもっと大きいのですが、 SPI_MasterTransfer はバッファの最初の 5 バイトだけを送信します。 デバッグモードで確認したところ、 SPI_MasterTransfer 内では送信中の SPI は常に期待通りの順序で、ギャップなくバイトが送信されています。常に正しく(少なくとも一貫性を持って)送信されているように見える、SO 問題はスレーブの受信にあるようです。 マスター ブロッキングでも同じ問題が発生するようです。スレーブをブロックするとマスターの送信がブロックされるため、スレーブをブロックして確認することはできません。また、マスターとスレーブの両方のクロック極性を低く設定すると、多くの上位ビットが失われることもわかりましたが、まずは最初のメッセージの受信が機能しない問題に取り組みましょう。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 SDKs ではなく IDEs (3.6.2) を指定したようです。 リリース番号がわかれば、報告されたバグを確認CANます。 非ブロッキング方法を使用しているようですが、ブロッキング転送関数でテストできますか? コードはあまり読みやすくありません。 伝達関数の引数としてどのような値を置きますか? バッファをどうやって埋めるのですか? SPI 通信で観察されるギャップは、ドライバのオーバーヘッドによって発生します。ドライバは送信 FIFO に十分な速さでデータを入れることができません。8 ビット モードでは、ドライバは FIFO にデータを 1 バイトずつ書き込むため、連続した書き込みの間にレイテンシが発生します。この遅延は、SPI クロック速度が高くなると顕著になります。この問題を軽減するには、DMA を使用することをお勧めします。 よろしくお願いいたします。 ダニエル Re: Weird behavior in S32K144 board to board SPI communication こんにちは、ダニエル。 私のSDKは3.6.2です。私は 33664EVB ボードとその TPL を介して SPI を使用しており、チップ セレクトは使用していません。チャネルはそれぞれ SPI1_clock、SPI1_tx、TPL1_data、TPL1_clock です。混乱を避けるために、FUTUREの画像では名前を付けます。後者の 2 つを SPI0_rx と SPI0_clock に直接入力してテストしたところ、同じ結果が示されたことを指摘しておきます。 8 ビット モードでテストしたところ、次の結果が得られました。 最初のメッセージ: rchust_0-1756888805291.png 4番目のメッセージ: rchust_1-1756888893698.png 最初に気づくのは、最初の単語と 2 番目の単語の間にある大きなギャップです。より大きなメッセージでもテストしましたが、8 ビットを使用すると各単語間にギャップが生じます。周波数を下げてみると、ギャップは減少し、500kHz あたりで消えます。それでも、33664EVB および 3771 のアプリケーション ノートでは 2MHz の使用が推奨されており、一般的に速度が低いことは望ましくありません。 まったく同じではありませんが、問題は依然として似ています。最初は最後のバイトはまったく表示されませんが、次にそれが最初に表示され、その後に他のバイトが正しい順序で表示されます。また、8 ビットではデータが入力した順序で送信されますが、40 ビット モードでは信号内のデータが交換され、その後スレーブによって再度交換されることも指摘しておく価値があります。 ワード間の大きなギャップがなければ 8 ビットの方が望ましいのですが、それでも問題は発生します。8ビット500kHzの場合: 最初のメッセージ: rchust_2-1756889381283.png 2番目のメッセージ: rchust_3-1756889458503.png 3 番目のメッセージSO: rchust_4-1756889521919.png これは 2 つの問題を示しています。1 つ目は私が言及しているスレーブによって読み取られたデータの不一致に関する問題であり、次に TPL のクロックを見ると 2 つ目の問題がわかります。TPL はパルス幅を 2MHz のように維持します。それがそのスピードが必要な理由の一つです。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 ドライバのバージョンを指定できますか? どのようなプロトコルを使用していますか?チップセレクト信号を使用していますか? ロジック アナライザのキャプチャでチャネルにラベルを付けることはできますか? LPSPI ハードウェアは 8 ビット フレームの連続送信をサポートしており、当社のソフトウェア ドライバーはこれと互換性があります。 8 ビットのデータを FIFO に配置することで、40 ビットのフレームを連続モードで送信CAN。 また、タイミングや信号の整合性に関連する潜在的な問題を排除するために、より低いボー レートで SPI 通信をテストしてみてください。 よろしくお願いいたします。 ダニエル
記事全体を表示
DCP レジスタにアクセスすると i.MX6 プロセッサがクラッシュ、ハードウェア デザインの欠陥が疑われる?助けを求める i.MX6 プロセッサで重大な問題が発生しており、コミュニティからの支援を期待しています。私たちが製造した一連の回路基板のうち、サンプルの約 20% が DCP レジスタにアクセスした後にプロセッサのクラッシュを引き起こします。詳細な背景と情報は以下の通りです。     # 問題の説明 一連の回路基板を製造したところ、サンプルの 20% に同じ欠陥があることが判明しました。 コードが DCP レジスタ (アドレス 0x02284000) にアクセスしようとすると、プロセッサは完全にクラッシュし、JTAG デバッガーでもコアにCANアクセスできなくなります。JTAG は次のエラーを報告します: 「エラー: 0x02284000 でデータが中止されました、dfsr = 0x00000008」。 このエラーが発生すると、プロセッサは実行を再開できません (続行するために「c」が入力されても)。 基板3番と6番に不良があります。これらのボードでは、他のボードと比較して VDD_SNVS_IN 電圧がわずかに高いことが一時的に観察されました。   Error data abortエラーデータ中止 can accessCAN アクセス # ハードウェア環境 回路の電圧ポイントの設計に違いがあるかどうかわからないSO、故障したボードと他のボードの電圧差を測定しました。 -プロセッサ: i.MX6ULL (MCIMX6Y2) -故障ボード番号: 3番と5番 (故障率約20%) -通常のボード番号: 残りの80%のボード   2025-09-03_15-01.png 2025-09-03_14-36.png   # コード複製 問題を再現するには次のコードを使用します。DCP アクセス部分のコメントが解除されると、LED の点滅が停止します (プロセッサがクラッシュします)。 JTAG 経由で DCP に手動でアクセスすると、次のエラーも発生します。   >>> set $R = 0x2284000 >>> p/x *$R     #include "MCIMX6Y2.h" #include "fsl_iomuxc.h" #include "pad_config.h" #define LED_PAD_CONFIG_DATA 0x13008 int main() { CCM_CCGR1_CG13(0x3); CCM_CCGR3_CG6(0x3); IOMUXC_SetPinMux(RGB_RED_LED_IOMUXC,0); IOMUXC_SetPinConfig(RGB_RED_LED_IOMUXC, LED_PAD_CONFIG_DATA); GPIO1->GDIR |= (1<<4); GPIO1->DR |= (1<<4); while(1) { GPIO1->DR &= ~(1<<4); // led on delay(0xFFFFF); GPIO1->DR |= (1<<4); // led off delay(0xFFFFF); #if 0 // Turn on the code, MCU will be crash int *ptr = 0x2284000; // This is DCP address UART1_PrintHex32(*(ptr)); #endif } return 0; }   # その他の発見 -通常のボードは、0x2284000 にアクセスすると 0x10000281 を返します (予想どおり)。 -マニュアルIMX6ULLRM.pdfによると、他のすべてのペリフェラルレジスタをテストしましたが、データアボートは発生しませんでした。問題はDCP領域に限定されています。   well (ADC1_HC0) set $R = 0x2198000 p/x *$R well (AIPSTZ1_MPR) set $R = 0x207C000 p/x *$R ...... well (TEMPMON_TEMPSENSE0) set $R = 0x20C8180 p/x *$R well (TSC_BASIC_SETTING) set $R = 0x2040000 p/x *$R ヘルプの要求 - DCPとクロックツリーの関係:DCPモジュールはどのクロックに依存していますか?特別なクロック設定は必要ですか? -ハードウェア設計上の欠陥:VDD_SNVS_IN 電圧がわずかに高いことが原因でしょうか?他に確認が必要な電圧や信号はありますか? -ソフトウェア構成: 特別な DCP 初期化手順や保護メカニズムはありますか? - JTAG デバッグ: DCP アクセス障害後に JTAG 接続を復元する方法はありますか?     Re: Accessing DCP Register Causes i.MX6 Processor Crash, Suspected Hardware Design Defect? Seeking H 私たちのガイドに記載されている必要性に従っていますか: Rita_Wang_0-1757578277906.png Re: Accessing DCP Register Causes i.MX6 Processor Crash, Suspected Hardware Design Defect? Seeking H 1. タイミング要件 (2ms) が満たされます。 2. コイン型電池で電源を供給している場合でも、DCP レジスタにアクセスした後にクラッシュが発生します。 a4-vcc-snvs-in-vdd-high-in-unc35-r3_51k_001.png a4-vcc-snvs-in-vdd-arm-soc-in-unc35-r3_51k_000.png Re: Accessing DCP Register Causes i.MX6 Processor Crash, Suspected Hardware Design Defect? Seeking H 1. IMX6ULLIEC.pdf 表 10 の動作範囲は、VDD_SNVS_IN の動作範囲を 2.8 ~ 3.6 V で説明しています。 標準3.0V。 2. ただし手册并未说明,提前多长時間? 原理図では、VDD_SNVS_IN は VDD_HIGH_IN および VDD_SOC_IN よりも先に電圧がかかります。 ディスプレイの観測結果はこのように、1ms ほど前に、十分ですか? 上電流シーケンスの起動状態が一致していないためかどうか、次の手順を検討してください。 2025-09-08_20-59.png 2025-09-08_20-59_1.png     電源树 2025-09-08_21-48.png 3. 合計 10 枚のパネルを共用したところ、2 枚に同様の障害が発生しました。 4. パネル子 uboot+linux 卡死。 uboot/arch/arm/mach-imx/mx6/soc.c 実験では、DCP モジュールからシーケンス番号として数値を取得すると、SOC がクラッシュします。 以降、试编写裸机LED程序、代価里读写DCP寄存器、同クラッシュ int arch_misc_init(void) { if (IS_ENABLED(CONFIG_FSL_DCP_RNG)) { struct udevice *dev; int ret; ret = uclass_get_device_by_driver(UCLASS_RNG, DM_DRIVER_GET(dcp_rng), &dev); if (ret) printf("Failed to initialize dcp rng: %d\n", ret); } setup_serial_number(); return 0; } 次来尝试: 1. すべてのパネルのタイムシーケンスが一致するかどうかを同時にテストし、VDD_SNVS_IN がどの程度動作するかをテストします。 2. パネルは、時系列の影響を避けるために、VDD_SNVS_IN を常に最後の電圧に保って、バッテリー 3.0V に接続します。 上記完了その後再回帖 Re: Accessing DCP Register Causes i.MX6 Processor Crash, Suspected Hardware Design Defect? Seeking H VDD_SNVS_IN電源は通常3.0Vを必要とします。回路基板を設計する際には、この電源をCPUに電力を供給する最初の出力にする必要があります。 ピンP12(VDD_SNVS_INピン)。これも要件を満たしています。 マニュアルでもご確認いただけます。 VDD_SNVS_INが直接供給される場合 コイン電池の場合、VDD_HIGH_INとVDD_SNVS_INの間にショットキーダイオードが必要です。 設計は要件を満たしていますか?また、合計10枚のボードを製作したのですが、そのうち2枚は正常に動作していませんか? ボード上ではどのようなソフトウェアが実行されていますか?
記事全体を表示
如何在 K82 微控制器中使用 QSPI 别名区 尊敬的各位, 我目前正在研究 FRDM-K82F 评估板上的 led_demo_qspi_alias 演示项目,以更好地了解如何利用 K82 微控制器上的 QSPI 别名区域进行调试。 我仔细地按照 MBOOTQSPIUG 文档中概述的步骤进行了操作,但遗憾的是,我无法实现预期的结果。 作为参考,我还在恩智浦社区论坛的主题下描述了我的问题 " frdmk82 使用 led_demo_qspi_alias 示例项目 " 时的疑难解答 现在,我决定尝试通过 J-Link 调试器和 MCUXpresso 加载项目,并观察到以下行为: 启动时,程序计数器似乎卡在引导程序区。 immagine (2).png 但是,如果我手动将程序计数器设置为 main() 的地址(从 .map文件),调试会话就会成功启动。 能否请您说明一下导致这种行为的原因?特别是考虑到 MBOOTQSPIUG 文件中的程序在我的情况下似乎不起作用,是否有建议的方法绕过这个启动问题? 提前感谢您的支持。 亲切的问候, Vladimir Zitoli Re: How use QSPI Alias region in K82 microcontroller 你好@Vladimir_Zitoli 感谢您与我们联系。 - 您是否参考过"第 8 章 在 QuadSPI 别名区" 的MBOOTQSPIUG 文档? 本章介绍如何从别名内存区下载和运行应用程序。请注意,说明步骤基于 IAR IDE。如果使用 MCUXpresso IDE,在配置链接器文件时要特别注意。 例如: Alice_Yang_1-1760171548226.png -如果你的目标只是在 MCUXpresso IDE 上调试 “led_demo_qspi_alias_a000” 演示,请将 “RESET 处理” 设置更改为 SOFT,如下所示。 将板载调试探针更改为 CMSIS-DAP。 Alice_Yang_0-1760171495668.png BR 爱丽丝
記事全体を表示
imx8mPlus-安卓 BSP 你好 我是 i.MX 平台和安卓电路板支持包的新手。 我正在将i.MX8M Plus与恩智浦安卓电路板支持包一起使用,我正在开发一个与CAN总线通信的显示系统(数字集群)。 我想确认一下我对流程的理解是否正确:--------。 -> 我从恩智浦下载并刷新安卓电路板支持包镜像(包括 Linux 内核和 CAN 驱动程序)。 ->电路板支持包已经支持 SocketCan 了,所以我不需要修改 CAN HAL 或内核代码。 -> 在 Android Studio 中,我可以版本一个应用程序,它能够: -通过 NDK/JNI 使用 C/C++ 打开 SocketCAN 接口(如 can0 -从总线接收 CAN 帧 -解码它们并更新安卓应用程序(Java/Kotlin 层)中的界面变量(如速度、RPM 等) ->未来,我计划添加照相机和导航功能,我也计划在同一个 Android Studio 应用程序中实现这些功能。 请您确认一下: -> 这种总体方法是否适合在安卓 电路板支持包 环境中使用 CAN 通信? -> 使用 Android Studio(通过 JNI)从应用程序打开和读取 SocketCAN 数据的方法正确吗? -> 对于摄像头和导航集成,直接在 Android Studio(应用层)中开发它们也行吗? ->如果这个过程不正确,能否请您解释一下我应该遵循的正确方法或架构? 我对这个平台很陌生,所以如果能有明确的解释或参考官方文档,这些文档描述了使用CAN进行Android 电路板支持包开发的正确流程,我将不胜感激。 Re: iMX8MPLUS - ANDROID BSP 您好, 大部分是的,如果您想使用 Android studio 创建 Android 应用程序,您的想法是正确的,为此您需要查看 Android 文档,没有比 Android 开发人员网页更好的地方了: https://developer.android.com/studio/intro 另外,我建议先在 Linux 上进行几次测试,这样你就可以习惯板和 CAN 接口,然后切换到安卓世界。 致以最崇高的敬意/问候, Aldo。
記事全体を表示
S32ZE MBDT mTopR52_SPF_multiCPU 示例问题 您好, 我在尝试编译和生成示例项目的代码时遇到了问题,"mTopR52_SPF_multiCPU" 。 这是我收到的错误信息: Wei_H_0-1760571920372.png 于是我试着运行脚本: mbd_s32ze_build_multicore('mTopR52_SPF2_MultiCPU') 但我发现了以下错误 未识别字段名"Core_type". 在 mbd_s32ze_build_multicore>@(x)mbd_s32ze.nxp.target.get_target_core(x.Core_type) 中出错 在 mbd_s32ze_build_multicore 中出错 Re: S32ZE MBDT mTopR52_SPF_multiCPU example issue 你好 您使用的是哪个版本的 MATLAB?您可以尝试在命令行中运行 mbd_s32ze_path 脚本,然后运行 sl_refresh_customization,并重新启动 MATLAB。 此外,验证是否已从 Hw Settings-> 硬件实现-> 多核中启用多核,然后尝试使用 “版本选定节点” 按钮进行构建。 需要注意的是,使用 SPF2 内核需要高级许可证和启用 DSP/ML 选项的处理器。如果您没有此类许可证,请联系恩智浦销售团队。 vladmitroi_0-1761222446769.png
記事全体を表示
HSEをインストールした後にアプリケーションファームウェアが壊れた ファームウェアS32K3_HSE_DemoExamples_1_0_0を使用してHSEをインストールした後、メモリをフルにインストールしました。 アプリケーション コードが動作しなくなりました。デバッグ モードでは、フラッシュにアクセスしようとすると致命的なエラーが発生する可能性があります。 HSE と連携するには、アプリケーションで何かを変更する必要がありますか? HSE に乱数を生成させたいだけです。 Re: application firmware broke after installing HSE こんにちは@ggreguer HSE が稼働している場合、まだ CUST_DEL ライフサイクルであれば、サービス HSE_SRV_ID_ERASE_FW を使用できます。これにより、HSE ファームウェアと SYS_IMG が消去されるSO、HSE の観点からはほぼ「工場出荷時設定へのリセット」と同じになります。ほとんどと言うのは、OTP メモリである UTEST フラッシュにプログラムされたデータには影響しないからです。つまり、UTEST の HSE 機能フラグがプログラムされ、FULL_MEM ファームウェアがインストールされている場合、HSE 用に予約された領域は引き続き予約されます。AB_SWAP がインストールされている場合、UTEST の OTA フラグがプログラムされるSO、HSE FW 消去後も AB_SWAP ファームウェアの領域は予約されたままになります。SO、100% 工場出荷時の状態にリセットされるわけではありません。 HSE ファームウェアに問題があり起動できない場合は、ファームウェアを回復するか、SBAF でファームウェアを消去する必要があります。これは、ハンドシェイク メカニズムによって実行できます。残念ながら、この状況では他に方法はありません。 よろしくお願いいたします。 ルーカス Re: application firmware broke after installing HSE こんにちは@lukaszadrapa 、お元気ですか?これらのフラグをチェックして、何が起こっているのかさらに調査します。 一方、ロックしているこれらの MCU でマスター リセットを実行する方法はありますか?HSE からすべてを削除し、再び正常に動作させるには、工場出荷時設定にリセットする必要があります。ロックされているボードがいくつかあるのですが、本当に必要です。 Re: application firmware broke after installing HSE HSE に何らかの問題がある場合 (間違ったクロック構成による致命的なエラー、HSE メモリ リソースの ECC エラーなど)、フラッシュが HSE に対してロックされているが、何らかのエラーのために操作が完了していない可能性があります。HSE GPR レジスタは 0x4039_C028、ビット 16 ~ 29 で確認できます (HSE ファームウェア リファレンス・マニュアル v2.6、表 143 を参照)。HSE_CONFIG_GPR3 のステータス ビット)。リセット後約 1 秒経過しても一部のビットが永続的に設定されている場合、HSE はシャットダウン モードになっている可能性があり、ハンドシェイク手順を開始する必要があります。HSE FWリファレンスマニュアルの「14.6.7 HSEファームウェアハンドシェイク」を参照してください。こちらにも説明を書きました: https://community.nxp.com/t5/S32K/S32K3-HSE-ERR-GENERAL/mp/2072826/highlight/true#M47407 それでも解決しない場合は、具体的に何が問題なのかを詳しく教えていただく必要があります。 よろしくお願いいたします。 ルーカス Re: application firmware broke after installing HSE もう 1 つ質問があります。MCU をハード リセットして、エラーなしですべてのメモリを消去できる以前の状態に復元する方法はありますか? 送信された画像に示すように、HSE が初期化されるのを待ってアプリケーション ファームウェアをすでにテストしましたが、まだ動作しません。次を使用してフラッシュに書き込もうとすると、 C40_Ip_pFlashBaseAddress->DATA[0] = 0x00U; Re: application firmware broke after installing HSE こんにちは@ggreguer 1. HSE がインストールされると、フラッシュの一部が HSE ファームウェア専用に割り当てられます。リファレンス・マニュアルの次の表を参照してください。 表199.HSE_Bファームウェア使用機能フラグが有効になっている場合の構成の詳細 表200。ABスワップ構成 https://www.nxp.com/webapp/Download?colCode=S32K3XXRM 表 199 は、実際には FULL_MEM がインストールされている場合のメモリの状態です。 たとえば、Pemicro デバッガーを使用する場合、インストールされているファームウェアに応じて適切なフラッシュ アルゴリズムを選択するのはユーザー次第です。このようなフラッシュ アルゴリズムは、予約済み領域へのアクセスを回避します。 Segger のツールはステータス レジスタに基づいてこれを自動的に実行すると思います。詳細については、Segger に直接お問い合わせください。 https://kb.segger.com/NXP_S32K3xx#HSE_activated https://www.segger.com/support/technical-support/ 2. HSE ファームウェアをインストールしたら、次の 2 つが必要になります。 - MU_0 の FSR レジスタの HSE_STATUS_INIT_OK フラグが設定されるまで待機する必要があります。その前に、HSE サービスをトリガーすることはCANません。たとえば、HSE DemoExamples には次のようなものがあります。 lukaszadrapa_0-1761287124700.png または、RTD の例では次のようになります。 lukaszadrapa_1-1761287139514.png - リセット後にクロックが初期化されている場合、PRTN0_CORE2_STAT レジスタの WFI ビットを待つ必要があります。このビットは、SBAF/HSE がアイドル状態であり、クロックを変更CANことを示します。HSE の実行中に HSE_CLK を変更することはできません。これにより、予期しない動作が発生する可能性があります。これは RTD ドライバの以前のバージョンでは行われず、ユーザーが行う必要がありました。現在、この問題は修正され、RTD 5.0.0 以降のクロック初期化関数に実装されています。 よろしくお願いいたします。 ルーカス Re: application firmware broke after installing HSE また、HSE をインストールした後、J-Flash を使用してメモリを消去することもできません。 Re: application firmware broke after installing HSE #こんにちは@lukaszadrapa 私はS32K3X4EVB-T172ボードで作業しており、HSEファームウェアをインストールしようとしています。 HSE ファームウェアのフラッシュは成功しましたが、アプリケーションは常に次の場所で停止します。 if (FALSE == checkHseFwFeatureFlagEnabled()) { /* ここで止まります */ } SO、HSE FW の初期化は続行されません。 UTEST領域(0x1B000080)をチェックしたところ、値0XFFFFFFFFが返されました。 私たちのプロジェクトとイメージを確認して、この問題の解決にご協力ください。 ありがとう
記事全体を表示
在 i.MX RT 双图像设置中,HAB 身份验证成功,但出现警告(不支持的引擎 - DCP)1050 你好, 我正在为 i.MX RT1050 MCU 开发安全启动实现,并希望实现双映像身份验证 ——一个用于第二阶段引导加载程序,另一个用于应用程序映像,两者都位于外部闪存中。 设置概述 SRK、IMG 和 CSF 证书使用恩智浦安全配置工具 (SPT) 生成。 第二阶段引导加载程序由 ROM 使用 HAB 进行签名和验证。 应用程序映像在启动加载程序后存储在外部闪存中,可独立更新(如通过 USB 或 OTA)。 第二态引导加载程序会调用ROM HAB 应用程序接口(API),以在执行前验证应用程序映像。 实施细节 两个镜像(引导加载程序 + 应用程序)都使用相同的 SRK/CSF 密钥集签名。 在第二阶段引导加载程序中,我调用了 HAB 身份验证,如下所示: load_addr = (uint32_t) hab_authenticate_image_no_dcd(1,ivt_offset,image_start,字节); hab_image_entry_f hab_authenticate_image_no_dcd (uint8_t cid、uint32_t ivt_t 起始、大小_t 字节) { 返回 g_habrvtTree-> authenticate_image_no_dcd (cid、ivt_offset、(void **) & 开始,(size_t *) & 字节,空值);} 身份验证有效 — 该函数返回有效的重置处理程序地址,以确认图像已成功验证。 问题:HAB 警告(不支持的引擎 - DCP) 验证成功后,我使用 hab_rvt_report_status() 和 hab_rvt_report_event() 查询 HAB 状态和事件日志。 虽然身份验证通过了,但我始终收到HAB 警告,而不是 HAB_SUCCESS。 输出示例: Hab rvt 报告状态 = 0x69,配置 = 0xcc,状态 = 0x99 报告事件 #0-> 0xf0 [HAB EVENT #0](44 字节): DB 00 2C 43 69 0A C0 00 CA 00 24 00 02 C5 1B 00... 根据HAB4 文档对这一事件进行解码时,它表示 0x69 → 警告 0x0A → 不支持的引擎 0xC0 → 在 hab_rvt.run_csf() 中记录的事件 序列 02 C5 1B 00 映射到 图像密钥验证索引 协议:HAB_PCL_CMS 发动机DCP 默认配置 由此我明白,ROM 报告 "警告 "是因为它试图在 CSF 执行期间使用 DCP 引擎,但 DCP 在我的第二阶段引导加载器上下文中没有正确初始化或可用。 我的尝试 我使用 SDK 驱动程序手动初始化了 DCP:   DCP_Init(DCP,&config); (启用所有通道和默认设置) 但是,警告仍然存在 - 验证成功,但事件日志仍然报告 "不支持引擎 (DCP)"。 问题 在初级 HAB 验证SSB 过程中,ROM 如何初始化和使用 DCP? 手动调用 HAB ROM 应用程序接口时,会出现这种警告吗? 是否有可能从自定义引导加载程序调用 ROM HAB 身份验证 API 并实现 HAB_SUCCES S(无警告),还是在初始启动环境之外使用 ROM HAB API 时会出现此警告? Re: HAB authentication succeeds with WARNING (Unsupported Engine – DCP) on i.MX RT dual image setup1 你好@BiHDeveloper 感谢您的联系! 在深入研究之前,您能否手动修改 BD 文件,将 Header_Engine 设为 "any"?然后把结果告诉我 diego_charles_2-1762816138764.png 编辑:更新bd文件后,如上所示,再次版本镜像,注意SPT在版本映像时自动生成BD文件按钮。为了避免这种情况,您可以在项目工作区手动运行 build_image 脚本。然后将新图像写入处理器。 如果您发现任何变化,请告诉我。 迪亚戈
記事全体を表示
iMXRT1165でSDPを使用したQSPIフラッシュのプログラミング 私は、iMX RT 1165を使用しているカードで生産のためのセットアップを試みています。USB経由のシリアルダウンロードを利用したいのですが。SDKのフラッシュローダーの例を使用し、古いプロセッサ(1060など)でsdphostとblhostを使用するプロセスを説明するいくつかのドキュメントを見つけました。私は、指示は同等であると思っていました。しかし、私はそれを機能させることができませんでした。私はsdphostとblhost用のspsdk pythonツールを使用しています。 それで私の質問はこれらの指示の更新版がありますか?または、これらの指示が同じである場合、私は何が間違っていますか? これが私の試みからの出力です: $ sdphost -v -u 0x1fc9:0x013d write-file 0x20202000 evkmimxrt1160_flashloader_cm7.bin INFO:spsdk.sdp.sdp:Connect: identifier='usb', device=SE Blank RT Family (0x1FC9, 0x013D)path=b'/dev/hidraw1' sn='' INFO:spsdk.sdp.sdp:TX-CMD: WriteFile(address=0x20202000, length=83432) Status (HAB mode) = 2 (0x2) NO DESCRIPTION. Response status = 32 (0x20) NO DESCRIPTION. $ sdphost -v -u 0x1fc9:0x013d jump-address 0x20202400 INFO:spsdk.sdp.sdp:Connect: identifier='usb', device=SE Blank RT Family (0x1FC9, 0x013D)path=b'/dev/hidraw1' sn='' INFO:spsdk.sdp.sdp:TX-CMD: Jump To Address: 0x20202400 INFO:spsdk.sdp.sdp:RX-PACKET: Response: 0x00000020 Status (HAB mode) = 32 (0x20) NO DESCRIPTION. $ blhost -v -u 0x1fc9:0x013d flash-image program.bin erase INFO:spsdk.mboot.mcuboot:Connect: identifier='usb', device=SE Blank RT Family (0x1FC9, 0x013D)path=b'/dev/hidraw1' sn='' INFO:spsdk.mboot.mcuboot:CMD: FlashEraseRegion(address=0x00000000, length=90112, mem_id=0) INFO:spsdk.mboot.mcuboot:CMD: Status: 10000 (0x2710) Unknown Command. Response status = 10000 (0x2710) Unknown Command.
記事全体を表示
代码在紧耦合(ITC)内存中执行速度较慢 作为实验,我标记了一个相当昂贵的函数 __RAMFUNC(SRAM_ITC) 令我惊讶的是,它的运行速度慢了约 10%。有人可以分享一下为什么会发生这种情况吗? 这是在 iMXRT1062 上,如果不是从 ITC 运行,则从闪存 (XIP) 运行。 i.MXRT 106x 回复:代码在紧耦合(ITC)内存中执行速度较慢 你好@expertsleepers , iMXRT 系列所有 M7 内核的 FPU 设置应为 FPv5-D16。唯一的例外是 iMXRT1011,这里必须是 FPv5-SP-D16。 对于 M4 和 M33 核心,它也是 FPv5-SP-D16。 在 ITCM 中执行速度不如从闪存执行速度快的原因是,该函数可能太小,以至于完全可以放入缓存中。 然而,如果代码库规模增加,就会发生缓存破坏。这意味着函数执行的速度不再确定。 此致 回复:代码在紧耦合(ITC)内存中执行速度较慢 你好@expertsleepers , 如果要调用的函数在地址范围内最多“远离”四兆字节,则可以使用直接跳转“BL”,而无需任何修饰。 此致 回复:代码在紧耦合(ITC)内存中执行速度较慢 确实如此。 完整的情况是: 该代码使用了大量双精度数学。 该项目设置为使用单精度浮点 ABI,因此充满了函数调用,而不是 .f64运营。 当代码放入 ITCM 时,每个函数调用都经过了一层修饰。 选择双精度 ABI 后,该功能现在的速度提高了一倍,并且在 ITCM 中不会减慢速度。它也没有变得更快,但我确信这其中有更多平凡的原因。 🙂 我发现奇怪的是,该项目是使用错误的 ABI 创建的 - 它是从 iMXRT1062 模板创建的。 对于 FP ABI 来说,这个线程很有用: https://community.nxp.com/t5/i-MX-RT/FPU-Type-options-for-MCUXpresso-for-double-precision-floating/mp/1231125/highlight/true#M12674 回复:代码在紧耦合(ITC)内存中执行速度较慢 啊,是的,可能是这样。 只是为了清楚起见,从 ITC 到其他 ITC 函数的函数调用是否仍然很快? 回复:代码在紧耦合(ITC)内存中执行速度较慢 你好@expertsleepers , 您从 ITCM 执行的代码是否调用位于闪存或 SDRAM/OCRAM 中的函数?由于编译器插入了饰面函数,因此这些现在更加昂贵。 当调用 Std-Lib 函数时,它们的位置也不太明显。 此致 回复:代码在紧耦合(ITC)内存中执行速度较慢 但如果该函数是从闪存执行的,那么情况不也是如此吗? 该函数访问 OC SRAM 和外部 DRAM。我确信两者都会导致等待,但我不明白这怎么会使 ITC 比 XIP 慢。 回复:代码在紧耦合(ITC)内存中执行速度较慢 该函数可能有一些例程需要另一个内存中包含的数据,从而导致执行时出现一些等待状态。 此致, 奥马尔 回复:代码在紧耦合(ITC)内存中执行速度较慢 我明白。关注这个话题。 回复:代码在紧耦合(ITC)内存中执行速度较慢 不幸的是,有问题的代码是一个非常大的项目的一部分。我必须尝试将其隔离到一个新的项目中 - 当然它可能不会表现出相同的行为。如果我设法创建一个小测试用例,我会发布。 回复:代码在紧耦合(ITC)内存中执行速度较慢 有趣的。您能提供一个测试用例吗?我想重现这种行为。
記事全体を表示
Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settings We are looking to include multiple MIMXRT105x chips along with other devices in a 5 pin JTAG chain (TMS, TCK, TDI, TDO and nTRST). We have found AN4826, AN12419 and the MCU-LINK-PRO UM11673-2940346 documents. Are there any other application notes or other documentation that could contain useful guidelines and instructions for PCB layout and how to write an appropriate custom MCU-LINK-PRO connection scripts. Thank you for your help, Richard Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Thank you for you help Sam. +1 My take away is that there is no additional NXP documentation to find detailed NCU-LINK-Pro configuration comparable to e.g. Segger's more expensive debug probe and it's documentation; no worries and thank you once again. Best regards, Richard  Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Hi @RidiculousRichard  Thanks for your questions, it seems you want to know how to find dedicated documentaion about JTAG or MCU-LINK-pro for program or debug when you use MIMXRT105X, e.g useful guidelines and instructions for PCB layout. There are some comments from my side, please help clarify more if my understanding is wrong. 1. MIMXRT1050 EVKB Board Hardware User’s Guide to find JTAG connetor (J21 is a standard 20-pin/2.54 mm Box Header Connector for JTAG) Sam_Gao_0-1717490334065.png 2. MIMXRT1050-EVK Design Resouces to download the schematics, layout files, and gerber files (including Silkscreen) for layout reference 3. AN4826 published by 2014 is still good guidelines for Schematic and PCB Layout, also please refer MCU-LINK-Pro User Manual to find more details, or other from MCU-LINK-Pro Documentation, it works well with our MCUXpresso or 3rd part IDE. Sam_Gao_1-1717490780729.png Have a nice day. Sam Hi @Masmiseim  Thanks for your information and input. Have a nice day, Sam Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Thank you for the link and good experience report. +1 I'm hoping someone who knows of MCUXpresso & MCU-LINK-Pro configuration documents will post some links to them. Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Hello, We did this with the 1170. The whole thing was very unspectacular and runs without any problems. If you want to achieve good performance, you should just follow the usual layout rules. Microchip has also created a nice summary on chaining: https://onlinedocs.microchip.com/pr/GUID-73C92233-8EC5-497C-92C3-D52ED257761E-en-US-1/index.html?GUID-31B03AFD-1033-4EF9-A937-872192990AE9 How you have to adapt the connect script depends on the development environment you are using. In principle, you only have to configure the bits before and after the device to be addressed, in each case for the instruction and data register. Unfortunately, I cannot say how this works with MCUXpresso. We use Rowley Crossworks, which makes this very easy. Regards
記事全体を表示
S32G399A M7原子力開発環境 開発にS32G399Aを使用しており、MCU開発環境のセットアップ中にいくつかの問題が発生しました。詳細は次のとおりです。 ソフトウェアバージョン IDE: S32 Design Studio for S32 Platform 3.5、アップデートバージョン3 測温抵抗体(RTD): SW32G_RTD_4.4_4.0.2_D2306 問題 関連する環境をインストールした後、MEX 構成インターフェイスでピン機能が無効になりました。手動で強制的に有効にしたとき、エラーが発生しました:エラー:Siul2_Port_Ip_Types.h:そのようなファイルやディレクトリはありません。 ピン機能が無効になるのはなぜですか、また、ファイルが見つからないというエラーの原因は何でしょうか? 考えられる原因と解決策 Re:S32G399A M7核開発環境 ありがとうございました : )
記事全体を表示
FS26 TRK2 UV故障 我正在使用带有 s32k344 的 FS26,并且 FS_OVUV_REG_STATUS 寄存器通过 SPI 显示 TRK2 上欠压。但是我在 TRK2 上没有任何负载,只有两个电容器:2.2uF/50V 和 100nF/100V。我用万用表和示波器测量了TRK2电压,它等于5V,也就是说,它是正确的。有人能帮我解决这个问题吗? 回复:FS26 TRK2 UV 故障 我正在开始处理您的案子,我会尽快与您联系。
記事全体を表示
写入fip、kernal、rootfs到S32G的emmc 当我使用 s32g399ardb3 时,我可以将 fip、Image、dtb 和 rootfs 写入 SD 并成功启动。但我想将它们写入 emmc。我该怎么办?在规范中,我只找到如何将 fip 或整个 yocto 图像写入 emmc,而不是单独写入。谢谢。 回复:将fip、kernal、rootfs写入S32G的emmc 谢谢你的提问 有关 BSP UM 的可用信息,请参阅第 4.1.3 节介绍了将fip和整个二进制文件写入mmc的方法。 对于单独的kenel,dts和rootfs,UM中没有正式的描述,在我看来,您可以按照以下方式尝试。 首先按照 UM 中介绍的方式将整个预先构建的图像刷入 MMC。 通过 QSPI 闪存将开发板启动到 Linux,然后将 mmc 挂载到 rootfs,应该存在两个分区,将您自己的内核/dts 复制到分区 1。 清理分区2的内容,复制您的特定fsl-image-auto-s32xxxx.tar.gz(可以您将需要将 Ubuntu 16.04 中的 rootfs 复制到分区 2,然后在那里解压,最后您将获得部署自己的 rootfs。 最后,通过 MMC 启动开发板。 希望有帮助。 顺祝商祺! 陈银
記事全体を表示
s32k3 flash swap requirements? Hi Nxp,     for S32K3 flash swap function, i don't know is there any limitation for it, 1.  is it MUST need hse fw? if not ,is there any simple code example available? 2. if hse fw is MUST, is ab-swap fw needed, or full-mem also works? thanks. Re: s32k3 flash swap requirements? thanks your explanation. Re: s32k3 flash swap requirements? Hi @victory  to be able to perform AB swap, it is necessary to install HSE AB Swap firmware and then call HSE service HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK. It won't work with Full Mem version of the firmware and it won't work without the firmware. You can take a look at HSE examples here: https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples Search for function HSE_ActivatePassiveBlock. Or absolute minimalist code without any drivers is to: Write value 0x00000051 (that the ID of HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK service) somewhere to non-cacheable (this is important because Messaging Unit does not see cached data) SRAM memory (not DTCM). And then write address of this value to Messaging Unit MU0, TR1 register. That's all. If you receive response 0x55A5AA33 (that's HSE_SRV_RSP_OK) in RR1 register, the operation was successful. Regards, Lukas
記事全体を表示
PCA9544APW,118のテープの向きについて こんにちは、皆さん PCA9544APW,118のピン1の位置を持つテープ(フィーダー)の向きを探しています。 どうもありがとうございます。 Re:PCA9544APW,118のテープの向きについて ありがとうございました! Re:PCA9544APW,118のテープの向きについて SOT360-1 TSSOP20;リールパック;SMD、13インチQ1 / T1標準製品の向き注文可能な部品番号の末尾、118またはJ注文コード(12NC)の末尾118(nxp.com)
記事全体を表示