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.

[参考译文] TMS320F28075:具有引导表生成规则的 HEX2000 ASCII 十六进制?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1319361/tms320f28075-hex2000-ascii-hex-with-boot-table-generation-rules

器件型号:TMS320F28075

大家好!

我的客户想知道具有引导表的 ASCII 十六进制的生成规则。

从文档 TMS320C28x 汇编语言工具 v22.6.0.LTS 用户指南(修订版 Z)(TI.com)中、我们知道存储器是逐块分开的。

我们观察到一些连续存储器仍被分为两个块、而不是一个块。

客户希望了解块的划分规则。

在后台、客户正在开发自己的工具、以将不具有引导表的 Intel 十六进制格式转换为具有引导表的 ASCII 十六进制、并稍后将其用于 SCI 引导。 这个块分频会影响 SCI 引导吗?

谢谢。

挂起。

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

    尊敬的 Hang:

    据我所知、块除法 与1) 生成工程时的--boot_block_size 参数以及2)使用的引导加载程序源表(例如--- sci8)相关。  SCI bootloader 期望这些块 遵循 bootloader 数据流结构。 例如、SCI bootloader 将接收十六进制引导格式的.txt 文件、并计算块大小的校验和、将该块存储在缓冲区中 并擦除存储器扇区、然后根据需要将其编程至 RAM 中。

    我假设、由于给定的块大小参数、您看到拆分的块是以这种方式构建的。 如果 连续存储器超出预期块大小、则可能会拆分成两个或更多块以容纳自身。 我需要一些似乎与 hex2000编译器本身相关的更多信息。

    谢谢。此致、

    查尔斯

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

    尊敬的 Charles:

    这里是一个分频块的示例。

    如图所示、第一个块从地址0x000B8000开始、长度为0x0B50。

    第二个块从地址0x000B8B50开始。 第一个和第二个块中的存储器 从 0x000B8000 + 0x0B50 = 0x000B8B50开始连续存储。 该 txt 是使用 hex2000生成的、我们未指定任何块长度参数。  0x0B50是否为默认的最大块长度?

    此致、

    挂起。

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

    尊敬的 Hang:

    Bootloader 针对串行通信用途可以处理一个块的时长存在限制。 复制此行为的一种方法是使用。 填充非常大的段(例如0xFFFE)。 客户是否可以限制段的长度/大小并将其除以?

    谢谢。此致、

    查尔斯

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

    尊敬的 Charles:

    客户是否可以限制节长度/大小并将其除以?

    有点像。 他们可以在 txt 中分割块,因为他们使这个工具成为自己的工具。

    引导加载程序对于出于串行通信目的可以处理的块的时长存在限制。 [/报价]

    对限制的建议有什么想法吗? 如果客户要分割块、他们需要知道 从哪里切割块。

    谢谢。

    挂起。

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

    尊敬的 Hang:

    它们是否能够通过将使用的段一分为二来限制块大小?  我首先尝试它(例如 RAMGS_01、RAMGS_02。 如果不知道他们的代码,我就不能肯定的说限制分配。 关于.text 段、您知道它映射到了什么 RAM 组合吗? 默认 F2807x_sci_flash_kernel 的.text默认映射至 RAMGS0、RAMGS1_CODE 或 RAMGS4 (分配至第0页)。 如果能够 、您可以在.text 段中添加更多 RAM 段

    谢谢。

    查尔斯

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

    尊敬的 Charles:

    很抱歉、我忘了提及他们的用例。 客户计划 将 这种十六进制到 txt 转换工具集成到他们的生产流程中)可能会替代 C2PROG (__LW_AT__、这意味着此工具需要处理许多旧项目的编程。 这些项目已经投入生产。

    他们是否能够通过将使用的段分成两半来限制块大小?  我会先尝试此操作(例如、RAMGS_01、RAMGS_02.[/报价]

    我明白了拆分段的意思。 但是、如果他们在 cmd 文件中执行此操作、他们将必须修改每个旧工程、这会花费很多 时间。

    这就是他们希望在将 hex 转换为 txt 时拆分它的原因。 此时、他们正在 以模仿 hex2000的方式拆分块、并成功地将其应用程序编程到产品中。 但他们仍然不知道 背后的原因、这就是为什么他们会问这些块是如何分割的。

    此致、

    挂起。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    客户正在开发自己的工具、以便将不带引导表的 Intel hex 格式转换为带引导表的 ASCII hex 格式、并稍后将其用于 SCI 引导。

    该实用程序 Hex2000 可以将链接的可执行文件作为输入并生成 ASCII 十六进制格式的文件、其中已初始化的段按照 SCI 引导的指定方式排列。  因此、您似乎可以避免开发此自定义工具。   

    如果由于某种原因这是不实用的... 最好的事情是遵循相同的规格 Hex2000 在按 SCI 引导指定的方式排列初始化段时用到。  请搜索 TMS320F2807x 实时微控制器技术参考手册 以查看标题为" 引导数据流结构"的子章节。  该规范包含两个要点、但并不明确。  第一、块的最大大小为16位0xFFfe 字。  第二、所有块的地址必须与第一个块具有相同的对齐方式。  在我所看到的每种情况下、该对齐方式都是8个16位字(128位)。  但在理论上、其他对齐是可能的。  有关这些要点的更多动机、请参阅 此论坛主题帖

    谢谢。此致、

    -乔治

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

    您好、George、

    非常有帮助、感谢您提供的信息!

    此致、

    挂起。