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:CCS LoadSymbolWithOffset

Guru**** 2595140 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/619121/ccs-ccs-loadsymbolwithoffset

工具/软件:Code Composer Studio

您好,

LoadWithOffset

Public void loadWithOffset(JAVA.lang.String 文件名,
Long codeStart,
长 数据开始)
抛出 ScriptingException
将指定程序的符号加载到调试器的符号管理器中。 将卸载目标上的任何现有符号。 与程序代码段相关的符号将从codeStart开始添加,而程序的数据段将从dataStart开始添加。

参数:
fileName-(字符串)要从中加载符号的文件的名称。 允许使用相对路径ScripingEnvironment.setCurrentDirectory(String),用于更改当前工作目录。
codeStart-(长)开始添加程序符号的起始地址
dataStart-(长)开始添加数据符号的起始地址
抛出:
ScriptingException

LoadWithRelativeOffset

Public void loadWithRelativeOffset(JAVA.lang.String 文件名,
Long codeOffset,
长 数据偏移)
抛出 ScriptingException
将指定程序的符号添加到调试器的符号管理器中。 将卸载目标上的任何现有符号。 与程序的代码段相关的符号将由codeOffset移动,而程序的数据段将由dataOffset移动。

参数:
fileName-(字符串)要从中加载符号的文件的名称。 允许使用相对路径ScripingEnvironment.setCurrentDirectory(String),用于更改当前工作目录。
codeOffset-(长)移动程序代码段的偏移量
dataOffset-(长)移动程序数据部分的偏移量
抛出:
ScriptingException

我们能否具体举例说明如何使用这两个加载函数? "address"和"offset"是指.elf文件中还是处理器的物理内存中的地址? 并且缺少fread等"长度"规范,那么我们加载多少个符号,或者一直到".out "文件的末尾? 这里缺乏精细的控制。

戴夫

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

    地址/偏移是指目标中的地址。

    第1节 文本 0x8000

    第2节文本 0x9000

    第3节数据 0x2000

    第4节数据0x1500

    loadWithOffset ("a.out,0x6000,0x1000)将按如下方式将书帖加载到目标:

    第1节 文本 0x6000   //第1节的地址在所有文本节中最小。

    第2部分文本 0x7000   // 0x7000 = 0x6000 +(0x9000 - 0x8000)

    第3部分数据 0x1500   // 0x1500 = 0x1000 +(0x2000 - 0x1500)

    第4节数据0x1000   //第4节的地址在所有数据节中最小。

    loadWithRelativeOffset ("a.out,0x1000,0x500)将按如下方式将书帖加载到目标:

    第1部分 文本 0x9000   // 0x9000 = 0x8000 + 0x1000。

    第2节文本 0xA000   // 0xA000 = 0x9000 + 0x1000。

    第3部分数据 0x2000   // 0x2000 = 0x1500 + 0x500

    第4部分数据0x1500   // 0x1.5万 = 0x1000 + 0x500

    要获得更精细的控件,请使用showSection。

    -Raymond

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

    但我们看到通常有几十个符号,包括Extra .bss,.stack,dwarf .debug_info,.debug_line和.symtab等。
    如果这两个函数仅加载.text和.data节,则
    (1)好的方面:它们保持不变,就像.stack一样,因此它们不会破坏运行时环境
    (2)缺点:它们可能会导致节重叠,例如,如果新的.text或.data更长;调试信息可能会因新加载的节而过时。

    我打算放弃这种做法。 但在此之前,请确认这些疑虑。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    loadwithoffset/loadwithrelative offset不仅重新定位.text/.data节,还重新定位.debug_*信息。
    因此调试信息已正确修复。