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.

[参考译文] CCS/TMS320C6713B:C6000-十六进制转换实用程序(hex6x)

Guru**** 2562120 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/626535/ccs-tms320c6713b-c6000-hex-conversion-utility-hex6x

器件型号:TMS320C6713B

工具/软件:Code Composer Studio

您好!

我正在研究围绕 TMS320C6713 DSP 处理器构建的应用。 我的应用场景如下:

引导模式:8位 ROM 引导。

已连接 ROM:CE-1存储器空间上的 AT29C010A。

工作程序:

启动时,主引导程序(C6713中的内置)将1k 字节从内存空间(CE-1-->上面提到的连接 ROM)复制到 IRAM (0x00000000)中。 此复制的存储器将包含自定义的次级引导加载程序。 在1k 存储器复制操作后、剩余的代码/数据将由次级引导加载程序复制到内部 RAM (IRAM)中。 在此之后、将传递给_c_init00、即应用程序起始点。

如何构建应用程序:

诸如.text、.cinit、.const 等的段在 ROM 中具有加载地址(CE-1)、在 IRAM 中具有运行地址。 在 ccsv3.3中使用运行时自动初始化构建应用程序。 从.map 文件中、段地址从由链接器脚本定义的 CE-1存储器空间开始。

问题所在:

为了将代码刻录到 AT29C010A 中、我必须将.out 文件转换为.hex 文件格式。 现在问题是、对于 ROM 刻录机软件、地址0x90000000 (加载地址)不存在于 AT29C010A 中。 这意味着我必须将加载地址映射到0h (ROM 开始)、在连接到 C6713处理器 CE-1空间后、该地址将类似于地址0x90000000到 C6713。 下面显示了这种情况。

现在、如何在十六进制转换实用程序中将地址从 CE-1 (0x90000000)映射到0x00000000、以便 ROM 刻录机可以将其刻录到 AT29C010A? 我已经在 cmd 文件中尝试了标志-zero。

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Cvetolin Shulev-XID、等待他们的反馈...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kowalski、

    您能不能说明您所指的 ROM Flash 软件是什么?  是 TI 提供的软件还是第三方软件。 闪存编程器是从 DSP 运行还是在将闪存组装到电路板上之前对其进行编程?  

    n`t 您正在对 DSP 的 NOR 进行编程、则不需要更改这些地址。 请检查具有相同 EMIF16接口的 DSP 的 flassh 写入器代码、其中基址为0x30000000、而不是器件上使用的0x90000000。

    e2e.ti.com/.../norwrite.c

    此致、

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果需要有关 hex6x 的其他指导、请在 TI 编译器论坛中发布特定问题、因为该实用程序受 TI 编译器团队的支持。

    示例:
    e2e.ti.com/.../93502
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Rahul,感谢您的友好答复。
    我正在使用 Dataman 编程器、提到的 ROM 在 ROM 中组装之前进行编程。
    链接: http://www.dataman.com

    在这种情况下、我必须重新映射地址、否则地址可能会超出范围。!! 现在、我该怎么做??

    另外一点、我们是否可以在不使用编程器的情况下直接从 DSP 上对 AT29C010A 进行编程!!?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否已向 Dataman 支持部门核实其工具是否可以处理此方案。 十六进制文件只是一个二进制文件、其格式是 DSP 可以理解的。 我不n`t Dataman 工具为何在寻找二进制文件内的编程地址。

    您是否尝试查看使用 Dataman 编程的 NOR 闪存上编程的映像是否在其编程后引导。 一种检查的好方法是让 ROM 运行并设置直接寻址、然后检查 DSP 在并行访问存储器中看到的内容。

    下面介绍了 DSP 的编程闪存:
    processors.wiki.ti.com/.../Flashing_the_C6713_EVM


    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Rahul、我认为闪存编程器应该从.hex 文件中提取地址信息、因为闪存编程器会如何将数据/代码放置在适当的位置? 十六进制文件中有正确的地址编码。 下面的链接介绍了一些相关说明:

    www.elproducts.com/understanding-hex-files.html

    我在这里非常困惑、因为我应该如何准确地处理非板载闪存编程的情形... !!! :-)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kowalski、

    如果 Dataman 是第三方、则他们将如何使用 TI 编译器.hex 格式提取地址。 我认为、实用程序必须从存储器的基址开始对二进制映像进行编程。 您可以从 Dataman 支持团队或他们的技术文档中获得此澄清。 该实用程序应该仅与 TI C67x DSP 配合使用、因为我们的其他 DSP 将其映射到0x3000_0000或其存储器映射中提供的一些不同基址。

    当您将闪存连接到 DSP 时、ROM 引导加载程序会设置 EMIF 外设并设置闪存存储器位置、以便它可以从地址0x90000000直接访问它。

    此致、
    Rahul