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.

[参考译文] TMS320F28388D:有关固件升级文件传输数据格式的问题

Guru**** 2543190 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1326581/tms320f28388d-issue-about-the-firmware-upgrade-file-transfer-data-format

器件型号:TMS320F28388D
主题中讨论的其他器件:UNIFLASH

大家好、

以下是客户可能需要您的帮助的问题:

我当前正在实现基于以太网的固件升级功能。 我通过 hexc2000.exe 将工程的.out 文件转换为 txt 格式。
在对闪存扇区编程时、我发现 ANSI 编码格式已经编程、但 ASCII 编码格式实际上是通过编程器编程的、因此当我完成编程时、我在运行时输入了一个非法中断。
我想询问是否需要将目标文件转换为 ASCII 编码以进行编程、但我没有在 TI 例程中基于 SCI 串行端口固件升级执行格式转换。
因此我有一个问题、为什么以 txt 格式编程后的数据格式与程序员编程的数据格式不一致。

--

谢谢、此致

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

    耶鲁大学

    我正在寻找合适的 SME 来帮助解决您的问题。

    谢谢。

    Sira

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

    你好,耶鲁,

    请要求客户澄清以下问题、以便我们可以更好地分析此问题、并向相应的专家咨询以帮助他们:

    客户提到他们参考了 TI 的 SCI 串行端口固件升级解决方案。  客户可能已经注意到、ROM SCI bootloader 需要主机按特定顺序发送目标地址、数据长度和数据- TRM 的5.8.1.1节" 引导加载程序"数据流结构对此进行了说明。  这种特定结构 对地址和数据字节使用 ASCII 十六进制对象格式-它只不过是"四个地址字节后跟数据字节"。  所有其他信息、如键值、保留字、块长度等、也应该是此结构的一部分、以字节为单位、如上面提到的 TRM 部分所述。   用户可以使用 hex2000实用程序、  通过串行闪存编程应用手册(http://www.ti.com/lit/pdf/sprabv4)中提到的以下命令、从目标文件(file.out)生成该特定的引导加载程序数据流结构格式文件(file.txt)

    SCI 主机编程器解析 hex2000实用程序(file.txt)的输出、并将以字节为单位的信息发送到目标器件上的 ROM SCI 引导加载程序。   

    问题:客户说"当对闪存扇区进行编程时、我发现 ANSI 编码格式已编程、但 ASCII 编码格式实际上是通过编程器编程的"。

    1) 1)客户在说  "对闪存扇区进行编程时使用的编程器是什么。  是其基于以太网的自定义固件更新解决方案吗?

    2) 2)客户如何确认 ANSI 编码格式是否已编程?  他们能否提供更多关于 ANSI 编码格式含义的详细信息?  他们能否提供一些调试器存储器窗口快照并进行清晰解释?

    3) 3)当客户说"实际上是通过编程器对 ASCII 编码格式进行编程"时、他们指的是哪个编程器?  它们是指 TI 的 CCS 片上闪存插件、Uniflash、串行 SCI 闪存内核、还是某些其他第三方解决方案?  请在此详细说明 ASCII 编码格式的含义。  他们能否提供一些调试器 存储器窗口快照并解释它们的含义?

    4) 4)在他们的自定义闪存编程解决方案中、他们向闪存 API 的编程命令提供了哪些确切数据、API 对闪存进行了哪些编程?  他们能否提供一些内存窗口快照以便我们了解?

    5) 5)据我所知、此器件上没有以太网引导加载程序(我不是以太网或 F28388x ROM 专家-我可能错了。 我可以在一两天内与 BootROM 团队确认)。  客户使用 hex2000实用程序与 以太网模块配合使用时具体使用的命令是什么?

    谢谢。此致、

    瓦姆西

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

    尊敬的  Vamsi:

    感谢您的答复。

    客户正在使用基于以太网的固件升级解决方案。 他们使用 CCS 生成 Intel hex 格式的升级文件、并通过 TFTP 协议将升级文件发送到 C2000以进行升级。

    起初、他们使用主机将 hex 文件直接发送到 C2000。 他们发现 C2000接收到下图红色框中的数据、因此无法正常使用程序。

    之后、他们发现在将 hex 文件发送到 C2000之前、他们需要将其转换为右侧的数据。 因为他们发现例程没有此转换过程、所以他们认为使用 sci 解决方案进行升级可以直接将 hex 文件发送到 C2000。

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    另一个问题是它们使用 CCS 生成 Intel hex 文件。 在检查数据后、用户发现闪存地址之外有数据、但无法通过闪存 API 对这些数据进行编程。 应如何对这些数据进行编程?

    红色框表示地址0x00001500处的数据

    红色框之外的数据表示闪存地址0x00080000之后的数据

    同样、CM 也存在类似情况:

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

    你好,耶鲁,

    所有闪存工具(TI 或第三方)均为完全嵌入式应用而开发。  这意味着、链接器命令文件中所有已初始化的部分都应映射到闪存。  如果有任何需要复制到 RAM 以供执行的函数(代码)(由于性能或 IP 初始化原因)、则应在运行时将该代码复制到 RAM、然后再调用这些函数。

    谢谢。此致、

    瓦姆西

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

    尊敬的  Vamsi:

    生成的 Intel 十六进制文件中闪存地址之外的数据是否表示需要复制到 RAM 的数据? 在对 hex 文件进行编程时、我们是否需要忽略这部分数据?

    --

    谢谢、此致

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

    你好,耶鲁,

    客户是否将任何已初始化的段映射到链接器命令文件中的 RAM 地址范围?

    谢谢。此致、

    瓦姆西

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

    尊敬的  Vamsi:

    这是客户的连接器命令文件。 请看一下。

    e2e.ti.com/.../2838x_5F00_FLASH_5F00_CLA_5F00_lnk_5F00_cpu1_5F00_1.zip

    --

    谢谢、此致

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

    你好,耶鲁,

    我会回顾并明天回复您。

    谢谢。此致、
    瓦姆西

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

    你好,耶鲁,

    我没有看到任何已初始化的段映射到 RAM。  链接器 cmd 没有问题。

    我将要求我们的编译器团队查看您的问题"生成的 Intel 十六进制文件中闪存地址之外的数据是否代表需要复制到 RAM 的数据? 在对 hex 文件进行编程时、我们是否需要忽略这部分数据? "

    谢谢。此致、
    瓦姆西

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

    您好!

    指定闪存存储体以上的数据应属于之前的存储器范围。 之前存储器范围的起始地址是什么? 如果超出存储器范围的数据超出目标存储器范围、则不能对器件进行编程。

    此致、

    小津野市