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.

[参考译文] 编译器:闪存刻录实用程序的内部工作

Guru**** 2601965 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/627358/compiler-inner-working-of-flash-burn-utility-ies

工具/软件:TI C/C++编译器

您好,

此问题与 我之前的主题相关联。 我无法找到正确的解决方案来编程ROM板外,然后将其组装到板上,即给定的螺纹连接。 我来这里是为了详细了解闪存实用程序读取. hex文件的确切程度? 他们是否考虑嵌入在.hex文件中的地址信息(例如 :www.elproducts.com/understanding-hex-files.html ) 并将信息放在ROM中的相应地址? 我指的是闪存刻录软件的内在工作?

2-如何重新映射.hex文件中各个部分的地址,以解决在e2e-thread链接中提到的刻录ROM外板的问题。

此致,

Kowalski

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

    您需要从hex6x输出什么格式?

    谢谢,此致,

    -George

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

    您需要使用十六进制实用程序命令文件。  此命令文件需要包含一个使用paddr功能设置输出中每个部分的地址的sections指令。  我将用一个非常简单的例子来说明。

    这是一个装配体文件...

    ; file.asm
    
    数据
    
    ;此指令防止链接程序删除该部分
    ;通常,这仅用于中断向量表
    保留
    
    Word 0x1111.1111万
    Word 0x2222.2222万
    Word 0x3333.3333万
    Word 0x4444.4444万 

    下面是个链接程序命令文件...

    /* link.cmd */
    
    内存
    {
    内部:o = 0x1000万,l = 0x1000万
    外部: o = 0x9000万,l = 0x1000万
    }
    
    节
    {
    .data:run = internal,load = external }(运行=内部,加载=外部
    ) 

    下面是一个命令,用于从这些输入中创建名为file.out的可执行文件。

    C:\work\dir>cl6x file.asm -z -o file.out -m file.map link.cmd
    <linking>
    警告:找不到合适的入口点;设置为0 

    下面是一种使用可执行文件中的地址将其转换为ASCII十六进制的方法。

    C:\work\dir>hex6x -a file.out --romwidth=32
    正在转换为ASCII十六进制格式...
    "file.out .data ==>.data 

    十六进制文件是另一个文本文件。  您可以使用您喜爱的文本编辑器查看它。  在这种情况下创建的文件名为file.a0。  以下是来自该文件的键行...

    $A9000万,
    11 11 11 11 22 22 22 22 33 33 33 33 44 44 44 44. 

    第1行显示地址。  第2行是原始数据。   

    您可以使用包含类似以下内容的十六进制实用程序命令文件来控制十六进制实用程序输出中的地址...

    /* roms.cmd */
    
    节
    {
    .data:paddr = 0x2000
    } 

    paddr = 0x2000表示.data输出部分在十六进制输出中具有地址0x2000。  不使用可执行文件中的地址。

    因此,使用该命令文件创建十六进制文件...

    C:\work\dir>hex6x -a file.out --romwidth=32 roms.cmd
    正在转换为ASCII十六进制格式...
    "file.out .data ==>.data 

    下面是十六进制实用程序输出中的相同行...

    A2000,
    11 11 11 11 22 22 22 22 33 33 33 33 33 44 44 44 44 44 

    请注意地址的更改方式。  您需要执行类似的操作。

    请在  C6000汇编语言工具手册中标题为"控制ROM设备地址"的章节中阅读更多信息。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哇哦。 我的意思是说这很好。 让我来试试...很快就会回复给您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先,很抱歉我迟到了回复...我正在测试您的soultion。 谢谢George,这对我来说很有用。