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.

[参考译文] AM6442:EtherCAT xml、EEPROM 闪存

Guru**** 2979400 points

Other Parts Discussed in Thread: AM6442, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1664589/am6442-ethercat-xml-eeprom-flash

器件型号: AM6442
主题: SysConfig 中讨论的其他器件

尊敬的 TI 团队:

我在 R5FSS1_1 (ICSSG1) 上使用 AM6442 EtherCAT 从站示例 、采用 工业通信 SDK 11.00。

您能否说明在启动期间默认如何加载 EtherCAT EEPROM (ESI/SII) 数据?

  • 默认 SDK 是否具有从外部 I2C EEPROM 读取 EEPROM 数据的特性?
  • 堆栈是否使用 EEPROM 仿真 (例如) default_tiesc_eeprom?
  • 哪个源文件/函数负责加载 EEPROM 内容?
  • 如何验证我的应用是使用外部 EEPROM 还是 EEPROM 仿真?
  • 对 EtherCAT EEPROM (SII) 映像进行编程/更新的建议程序是什么? 是否有可用的 TI 实用程序、或者是否应使用外部 EEPROM 编程器或自定义 I2C 应用程序对 EEPROM 二进制文件进行编程?
  • 另请注意、我可以从 TwinCAT 检测从设备、但当我尝试使用 SSC EEPROM 工具加载新的 ESI 文件时、在扫描从设备时 TwinCAT 中不会反映信息

    我们的主要目标是刷写 EEPROM 并通过 TwinCAT 进行确认、我们需要通过动态方式刷写 I2C EEPROM、而不是通过 FOE 方法

谢谢 Ganesh D

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

    尊敬的 Ganesh:

    您在此处使用哪个 EtherCAT 子器件演示进行验证?

    此致、
    Aaron

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

    您好 Aaron、

    我正在使用 EtherCAT_SLAVE_Beckhoff ssc_demo EtherCAT stack。请让我们了解如何刷写 I2C 物理 EEPROM 以及如何使用从设备的更新固件获取 SII 信息。 在哪里需要更改代码  

    谢谢、

    Ganesh D.

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

    尊敬的 Ganesh:

    感谢您提供详细信息。 让我回答每一个问题 ethercat_slave_beckhoff_ssc_demo:

    启动时加载 EEPROM

    该演示使用 EEPROM 仿真:一个eeprom_cache[]由物理存储器支持的 2048 字节 RAM 高速缓存 ()。 中的加载流 bsp_eeprom_emulation_init() 为:

    1. 将 2048 个字节从 I2C EEPROM 读取到 RAM 高速缓存中
    2. 验证前 14 个字节的 CRC(每个 ETG.2000 的 EtherCAT EEPROM 标头 CRC)
    3. 根据编译后的内容检查 SII 偏移 0x0C(修订版号)处的 4 个字节 tiesc_eeprom[]
    4. →任何检查失败、则从 tiesc_eeprom[] 中编译后的默认数组加载 μ A tiesc_eeprom.h
    5.  pEEPROM 将 EtherCAT 协议栈的指针指向 RAM 高速缓存

    负责的文件/功能位于 bsp_eeprom_emulation_init() 中 source/industrial_comms/ethercat_subdevice/icss_fwhal/tiescbsp.c。

    默认 SDK 是否具有从外部 I2C EEPROM 读取 EEPROM 数据的特性?

    也就是说、I2C EEPROM 提供持久存储、但 EtherCAT 栈的所有实时访问都通过 RAM 高速缓存。 启动时、您将看到以下日志行之一 (仅限 SDK 2026.00、SysConfig 可选):

    Application using ESI EEPROM over I2C EEPROM
    Application using ESI EEPROM over SPI Flash
    

    I2C EEPROM 句柄 gEepromHandle[CONFIG_EEPROM0] 由打开 Board_init()。 I2C EEPROM 内的偏移量为 0x8000 (中为 32KB)。

    为什么您的 SSC EEPROM 写入在下电上电后没有反映出来

    SSC EEPROM 工具写入是正确的机制—它通过 ESC 寄存器 0x502 进行写入、FWHAL 会检测到它、更新 RAM 高速缓存、然后在~100ms 后刷写到 I2C EEPROM。 写入本身正常工作。

    下一次引导时可能出现问题:字节偏移 24 处的身份检查(SII 修订版号字段)会将存储的 ESI 与编译后的默认值进行比较。 如果您的新 ESI 具有不同的修订版号、固件会拒绝存储的数据并返回到编译后的默认值。 这就是 TwinCAT 仍然看到原始器件的原因。

    要保留自定义 SII:

    1. 生成自定义 SII 二进制文件(例如从 ETG SSC 工具或 ESI 工作台)
    2.  tiesc_eeprom.h  examples/…/am64x-evm/tiesc_eeprom.h使用新的字节阵列更新您的板级文件夹(例如)
    3. 重建固件(现在是已编译的默认固件,并且存储的 SII 同意)、从而通过身份检查

    TwinCAT 未显示更新后的器件说明

    TwinCAT 从 SII 读取供应商 ID +产品代码以在其本地库中查找匹配的 ESI XML 文件C:\TwinCAT\3.1\Config\Io\EtherCAT\()。 它不直接显示来自 EEPROM 的器件描述字符串。 如需在 TwinCAT 中查看新说明:

    1. 在 TwinCAT 的 ESI 文件夹中安装更新的 ESI XML 文件
    2. 通过重新启动 TwinCAT 应用来在 TwinCAT 中重新加载器件库。
    3. 重新扫描包装盒。

    建议:迁移到 SDK 2026.00

    SDK 2026.00 添加了:

    • SPI 闪存作为替代 ESI 存储后端 — 在 SysConfig 中可选、客户可以使用基于 I2C EEPROM 的 ESI(默认)或 SPO 闪存。
    • 首次引导自动编程:如果存储为空白或身份检查失败、固件现在会自动将编译后的默认值写回存储、因此下一次引导始终从存储器干净地加载
    • 这意味着在 SDK 2026 中、一旦更新 tiesc_eeprom.h 并刷写固件一次、I2C EEPROM(或 SPI 闪存)将在首次引导时自初始化、无需任何单独的编程步骤

    请迁移到 SDK 2026.00 并告诉我们问题是否仍然存在。

    此致、
    Aaron