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.

[参考译文] 编译器/TMS320C6713B:复制表启动器

Guru**** 2393725 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/629351/compiler-tms320c6713b-copy-table-bootloader

部件号:TMS320C6713B

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

您好,  

我有一些关于C6713 bootloader的问题。  

1.从文件spra999a.pdf,表3。 复制表格式:

=>因此,从上表开始,复印表的第一个.字应该是第一部分的大小。 但在同一个文件中,给定的引导加载程序代码显示:
;************************************************************************
mvkl copy_table, a3   ;加载表指针
mvkh copy_table,A3
LDW * A3++,B1            ;加载入口点

问:最后一个指令如何加载入口点??? “这是不是Shouldñ 复制表格式的第一个指令的大小?”

2.假设我有一个链接器文件:
内存{
BootRam:org=0,len=400
iRAM:org=400,len=xyz
}
部分{
bootloader > BootRam
.text > IRAM
}

从生成的地图文件中,.text将被放置在0x400....如果我们想通过十六进制转换实用程序spru186p.pdf示例11.3 生成复制表,那么Copy表和.text部分是否应该在地址中重叠?? 我的hex6x生成的地图文件如下所示:

复制表设置: −bootorg 0x9000.04万


9000.04万..90000b0b启动9万启动表
  text:btad=9000.04万 dest=400 size=6a0

我的意思是在0x400,复制表或.text处会存在什么?? 或.text将被六倍x下推??

3. 实际上我遇到了这些问题...所以我深入研究十六进制0和1,发现当复制表由十六进制转换实用程序创建时,此引导加载程序工作正常... 但是,如果这些复制表是根据 给定的复制表格式(Table-3)手动或通过链接程序脚本(图A−2,spra999)创建的,那么bootloader不应该工作,或者至少该bootloader不应该用于给定的复制表格式。我对吗?  

此致,

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

    您在之前的主题末尾发布了这些问题。  很抱歉耽误您的时间。

    问题:最后一个指令如何加载入口点??? “这是不是Shouldñ 复印表格式的第一个指令的大小??[/QUOT]

    请参阅SPRU186P中标题为“启动表格式”的部分。  请注意以下句子:  

    有一个包含4字节字段的标头记录,该字段指示引导加载程序在完成数据复制后应分支的位置。

    2. 假设我有一个链接器文件:

    内存{
    BootRam:org=0,len=400
    iRAM:org=400,len=xyz
    }
    部分{
    bootloader > BootRam
    .text > IRAM
    }

    每个部分都有两个分配:加载和运行。  此语法为.text部分提供了相同的加载地址和运行地址:0x400. 您需要创建另一个内存范围(现在将其称为外部)并提供.text加载和运行分配...

    .text > run = IRAM,load = external

    当十六进制转换实用程序创建复制表时,此引导加载程序工作正常... 但是,如果这些是手动或通过链接程序脚本

    创建的复制表

    其他方法都失败了,我对此并不感到惊讶。  可能在细节中有一些错误。  这就是为什么让十六进制实用程序这样的工具处理所有细节更好。

    谢谢,此致,

    -George

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

    George,我同意您的看法...如果您查看2.3 .1.1 通过检查地图文件(spra999a)创建分区复制表一节,

    您会发现似乎存在矛盾。 此处的表格格式不同,而在云杉186中则不同。

    2.如果我遵循的是spru186p...格式正确且工作正常,如何在 每个部分的开头手动放置两个单词? 例如

    文本{

    .字段大小

    word目标地址

    *(.text)

    }

    是否有方法让链接程序将这两个符号词放在每个部分的开头? 甚至load_start等只定义与startin地址等相等的符号,这些符号可以放置在内存中的任何位置。

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

    是否有方法可以告诉链接器将这两个符号字放在每个部分的开头? [/引述]

    我不这么认为。  但您不需要这样做。  请考虑使用复制表。

    复制表将把从某个部分的加载地址复制到该部分的运行地址所需的所有信息收集到一个不同的位置。  编译器RTS库中提供了一个名为copy_in的C例程,该例程使用复制表来执行此类复制。  请在应用手册 Advanced Linker Techniques for Usicient and Efficient Memory Usage中阅读有关复制表的更多信息

    谢谢,此致,

    -George