This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM261-PROFINET:Am261x LP:SOM 器件演示问题。

Guru**** 2870880 points

Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1630582/am261-som-evm-am261x-lp-profinet-device-demo-issues

器件型号: AM261-EVM-EVM SOM
Thread 中讨论的其他器件: UNIFLASHSYSCONFIG

您好!

我尝试在 TI Am261x LaunchPad 版本 A 上从工业通信 SDK (2025.00.00.08) 运行 Profinet 器件演示。我尝试运行该演示时没有进行任何修改、但我在启动后立即收到了 HwiP_PREFIGHT_ABORT_HANDLER 异常、因此 XIP 似乎存在问题。 我更改了(基于 Hello world XIP 示例):

  • sys-cfg->MPU->CONFIG_MPU_FLASH->区域起始地址从 0x60000000 到 0x80000000
  • sys-cfg->Memory Region ->添加了 FLASH_FSS1 区域 — 起始地址 0x80100000
  • SYS-cfg->text_flash 部分的段加载和运行存储器更改为 FLASH_FSS1。

完成这些更改后没有异常、但在第一次 EEPROM 读取期间、应用程序初始化在复位后冻结。 它卡在 I2C 传输中的 Semaphore_pend 中、同时等待传输完成。

我在论坛中看到、我必须修改 PN_APP_IOD_remaInit、使 NVM_APP_init 任务在第一个 NVM_APP_READ () 之后初始化。 在此更改之后、几次 EEPROM 读取通过、然后卡在 APP_HW_Board_INFO_READ 中的 EEPROM 读取中。 它被卡住了相同的方式、但需要注意的是、它卡在第二次调用该函数时、第一次 MAC 读取是可以的 (APP_HW_Board_INFO_READ 被调用两次、一次来自 bsp_init、第二次来自 APP_pruInit)。

之后我就评论了 MAC 读取和硬编码一。 这样一来、堆栈初始化就完成了、我甚至能够在 Proneta 中看到 Profinet 器件。 然而,它是不稳定的,可能是由于我所做的所有改变。

我的问题:

  1. 我对 XIP 的系统配置所做的更改是否正确? 此外、是否可以使用 TCMB 存储器进行 RL2 缓存?
  2. 您是否知道 EEPROM 读取有什么问题? 这不是 I2C 总线问题、因为我有时提到读数可以。 我也在两个单独的 LP 上获得了相同的行为。
  3. PN 示例中是否有其他我必须解决的已知问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的:

    我们的示例应该开箱即用、不做任何修改  

    我们将详细研究此问题、但在此之前、您是否需要澄清您是如何刷写电路板的? 我们建议使用 Uniflash 应用程序 (GUI)。 如果您使用的是 GUI、但仍然遇到这些问题、请向我发送 Uniflash 应用程序所做操作的屏幕截图。

    此外、请确保使用 example.syscfg 文件构建工程(而不是 example-rev-e2.syscfg) 。

    此致、
    Kamil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用的是正确的 example.syscfg、而不是  example-rev-e2.syscfg。

    我正在通过 SBL 和 UartXModemLoader 脚本对闪存进行编程。 我转储闪存、并验证其上写入了正确的数据。 此外、我可以通过调试器看到数据存在于外部闪存中、并且我正在从该闪存和 XIP 执行正确的代码。

    有一个让我困惑的是、当我使用 FSS1(起始地址 0x80000000)时、XIP 才起作用、而我认为 SBL 使用 FSS0(从 0x60000000 开始)。 不过、我无法从使用 0x60000000 开始获取 PN 示例、XIP 仅适用于 0x80000000。 您能澄清一下吗?

    此外、您是否看到过我在上面介绍的 EEPROM 读取存在任何问题? 我也可以在另一位同事的办公桌上看到同样的行为。 我不知道这与我对闪存进行编程的方式有何关系、这部分代码是从 OCRAM 执行的。

    此致!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vasil、

    您报告的 EEPROM 访问存在任何问题、我们都没有。 看看您的失败情景与我们的通过情景之间的差异:
    a.我们使用 Uniflash GUI 刷写映像、而不是脚本(之前由相关团队建议这样做)
    b.我们在 0x60000000 处刷写 SBL、在 0x60081000 处刷写 APP mcefl 映像、在 0xE0000000 处刷写 APP mcelf_XIP 映像。

    因此我们不会将我们的图像转移到 FSS1、但一切都运行正常。 因此、第一步建议您在自己侧执行相同操作(使用 Uniflash GUI)。

    同时、请分享以下内容、以便我可以与负责的团队进一步调查此事吗?

    1. sysconfig 文件
    2.  UartXModemLoader 脚本
    3. SBL 配置文件
    4、您正在执行的命令,用于刷写电路板

    此致、
    Kamil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kamil!

    很抱歉没有回应这么久,我在度假。 我附上了所要求的文件。 关于我用于刷写的命令、首先向 SBL 发送具有 FLASH_ADDRESS 0x100000 的命令、然后 使用 UartXModemLoade 下载二进制文件。 我想强调几个要点、说明为什么这与 XIP、uniflash 等无关...:

    1.如果我不使用 FSS1 并使用 FSS0、我 在启动时会收到 HwiP_PREFIGHT_ABORT_HANDLER 异常。 可能我必须在 SBL 中另外做一些操作。

    2.使用 FSS1 时、XIP 工作正常、我完全能够从闪存执行代码。  

    3.让 XIP 正常工作后、由于 EEPROM 读取问题、无法继续。 以下是它的更多详细信息。

    如果我不更改示例的源代码,它将在 PN_APP_IOD_remaInit() 中第一次读取 EEPROM 时失败。 由于 I2C 传输问题而无法启动。 存在接收溢出 (RSFULL = 1)、 I2C_ISTR 的整个值为 0x00001C18。

    如前所述、如果我 将 PN_APP_IOD_remaInit 修改为在第一个 NVM_APP_READ () 之后初始化 NVM_APP_init 任务、我能够成功读取几次 EEPROM 读取(它正确读取 LP 的修订版 ID)、但最后一次读取失败、出现相同的 I2C 问题。

    e2e.ti.com/.../PN_5F00_files.zip

    请务必注意、在多个 LaunchPad 上会发生相同的行为。 很显然、I2C 连接不是问题、因为我能够使用其他示例读取 EEPROM(到目前为止,我有 EtherCAT、cpsw_enet、XIP、IPC 示例没有问题)。 即使有这一个,我可以从它读,当我重新排列顺序。 我也不知道这与 XIP 有何关系、所有此代码都是从 OCRAM 执行的。 您是否确定以前从未报告过此类问题?

    此致!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vasil:

    感谢您的跟进。

    我 想帮助你提到的要点,但首先,我需要了解为什么你的板不工作开箱. 默认应用程序无需完成所有修改即可成功运行。  

    如果您基于示例文件夹中提供的默认 SysConfig 构建程序、则会生成 linker.cmd 文件并将其用于构建。  我快速查看了您共享的文件、可以看到您共享的 linker.cmd 文件与 SysConfig 文件不对应。 您似乎对该文件进行了许多手动调整。 堆大小大大减小、TCMA 段被移动到 RAM 等 您能解释一下吗?

    此外、我想知道您 从哪里获得 UartXModemLoader.py 文件? 我在 MCU+ SDK 中找不到它。

    此致、
    Kamil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kamil!

    您查看的 linker.cmd 文件是 SBL 中的文件(sbl_syscfg 目录仅包含 SBL 文件、而不是 PN 示例中的文件)。 根据要求、我发送了 SBL sys cfg 文件、还从修改后的 PN 示例发送了 example.cfg。 PN example.syscfg 文件中的唯一调整是我在上面列出的调整。

    让我澄清一下。 我们这边的一些 LP 经过修改、能够使用 j-link 进行调试。 我正在使用 Xmodem 刷写 SBL 和 PN 示例的 XIP 部分、并使用 SEGGER j-link 对 RAM 部分进行调试/编程。 采用这种方法时、我在上一次评论中列出的示例没有任何问题。

    但是、我还有根本不修改的 LP、可以将其用于 CCS。 我可以尝试使用、但在本例中有几个问题。 SBL 进行 OSPI 配置并为 XIP 启用 DAC 模式、对吧?  测试应该使用 SDK 中的哪个版本的 SBL?

    关于  UartXModemLoader.py、它是由构建 SBL 的同事提供给我的。 我明天会和他一起检查他从哪里得到它,我会让你知道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vasil:

    让我们尝试默认方式、看看它是否起作用:
    1.安装 Uniflash 程序
    2.连接 AM261-LP 并运行程序
    3.将引导开关设置为 OSPI 模式
    4.按下图选择文件(SBL 位于 mcu_plus_sdk_am261x_11_00_00_29\tools\boot\sbl_prebuilt\am261x-LP 下)  
    5.加载程序并验证它是否正在运行。  



    P.S.请基于默认演示应用构建应用程序映像 (mcelf 和 mcelf_XIP)、而不对 SysConfig 进行任何更改。

    让我们首先确保这是有效的、然后我们可以讨论更多详细信息。

    谢谢你。
    此致、
    Kamil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kamil!

    我尝试了此操作、但该应用程序甚至没有启动。 我使用了默认 PN 示例、开箱即用 LP 没有任何更改。

    我检查了串行输出、编程后执行似乎仍留在 RBL 中(您可以在随附的屏幕截图中看到输出)。

    是否有办法连接 CCS 以了解未加载应用的原因?

    在 zip 失败中,您将找到 — 串行输出的屏幕截图,uniflash 设置的屏幕截图、LP 设置的图片、包含 uniflash 控制台输出的文本文件。

    此致!e2e.ti.com/.../PN-debug.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    至少 uniflash 中的地址看起来是错误的。 您能告诉我如何更改它们吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vasil:

    您在图片中突出显示的地址不是错误的。 这只是一个预定义值、用于告诉刷写工具 XIP 映像的闪存偏移是在映像本身中指定的。  

    根据您的共享内容、我看到您选择了错误的引导模式。 请选择 OSPI 引导模式 (1100 或 0011) 并重试。 如果仍然不起作用、请刷新串行输出的屏幕截图。

    此致、
    Kamil