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.

[参考译文] TMS320F28035:生成符号表和.map 文件时出现问题

Guru**** 2917090 points

Other Parts Discussed in Thread: TMS320F28035, TMS320F2812

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1565441/tms320f28035-trouble-generating-symbol-table-and-map-file

器件型号:TMS320F28035
主题: TMS320F2812 中讨论的其他器件

工具/软件:

团队、

转发客户查询-  

系列:c2000

处理器:TMS320F28035

编译器 — v18.12.3.LTS

输出格式 — COFF 旧版

 

编译器选项:  

-v28 -mt -O4 --opt_for_speed=5 --fp_mode=relaxed --fp_reassoc=off --advice:performance=all --define=BUILDCONFIG_disable_watchdog=0 --define=BUILDCONF_ENABLE_DEBUG_OUTPUTS=0

 

链接器选项:  

-g --c99 --diag_swrap=off --display_error_number --abi=coffabi --asm_define=global_Q=16 -z -m“AmcFirmware.map"--stack_size=0x400“--stack_size=0x400 --warn_sections --reread_libs --disable_auto_rts

 

调试选项:

调试模型:完整符号调试 (--symdebug:dwarf、-g)

DWARF 版本:3.

 

语言选项:

c 方言:--c99

 

符号表生成工具:

COFF2STB

 

我正在处理其中一个利用上述规范生成 (.out) 格式的编译输出的工程。   

 

我们无法生成完整的符号表、.map 文件也会显示有限的变量。 许多变量都是一样的  

  1. 使用“static"声明“声明的全局变量。
  2. 结构体成员不会进入符号表段。 我们只能看到结构基地址。
  3. 符号表段中生成的所有变量的数据类型为“6"表示“表示 int32 - 32 位整数。
  4. 我用于从 (.out) 输出格式生成符号表 (.STB) 文件的工具 (COFF2STB) 无法从中获取正确的符号数据类型。 (.out) 文件中生成的符号表的存储器段没有生成正确的调试信息。

 

请向我们提供以下建议:

 

  1. 我们必须启用哪些选项编译器才能使用所有变量生成正确的符号表信息。
  2. 我们需要使用什么正确的 Dwarf 调试选项。
  3. 如果我们从 COFF 迁移、生成不同输出格式 (.EABI) 的方法是什么。
  4. 如果要保持相同的 COFF 传统输出格式、正确的兼容编译器或 CCS IDE 版本是什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不熟悉实用程序 COFF2STB。  C2000 编译器未进行记录或测试、无法与之配合使用。   

    用“static"声明“声明的全局变量。

    若要在链接器映射文件中查看静态变量、请使用选项  --mapfile_contents=sym_defs 。   

    结构成员不在符号表部分。

    遗憾的是、这不受支持。

    符号表部分中生成的所有变量的数据类型为“6"表示“表示 int32 - 32 位整数。

    不使用 COFF 符号记录中的数据类型。  而是使用在 Dwarf 中编码的数据类型信息。

    我们需要使用的正确 Dwarf 调试选项是什么。

    选项 -- symdebug:dwarf (等效于短整型 -g ) 默认情况下处于打开状态。

    如果我们从 COFF 迁移、生成不同输出格式 (.EABI) 的方法是什么。

    关键变化是添加编译器选项 -- abi=eabi 。  有关更多详细信息、请参阅文章 C2000 从 COFF 迁移到 EABI

    如果要保持相同的 COFF 旧版输出格式、正确的兼容编译器或 CCS IDE 版本是什么。

    截至本文发布时、C2000 编译器的默认 ABI 是您当前使用的较旧的 COFF ABI。  这将在未来发生变化。

    谢谢。此致、

    -乔治

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

    背景:

    在我们上一个采用 TMS320F2812 的程序中、我们使用的是 TI Code Composer Studio 版本 3.3.38 和编译器 CCStusio V3.2。  编译器和链接器选项。

    编译器选项=-gp -q -pdw -pds9 -pds232 -al -as -fr“$(Proj_dir)\Release“

    [“链接器“设置:“RELEASE"]</s>“
    options=-c -f0x0 -heap0x1C00 -m“.\Release\OCU_MON.map"-o".\Release\OCU_MON.out"“-o".\Release\OCU_MON.out"-stack0x4C0“-stack0x4C0 -w“ -w -x

    它提供了 COFF 格式.out 文件、该文件的符号表为 STABS 格式。 我们的内部工具可以解析此输出文件(STABS 格式)并提取符号详细信息以及数据类型。

     

    目前、我们使用的是带编译器版本的 TMS320F28035 处理器 — v18.12.3.LTS。

    问题/提问:

    1. 我们需要使用哪些编译器和链接器选项、以便获得与我们用于 TMS320F2812 处理器及编译器 CCStusio V3.2 相同的 STABS 格式符号表和.out 文件。
    2. 如果编译器版本 — v18.12.3.LTS 不支持 SATBS 格式符号表。 您能否建议一个有效且支持 STABS 格式的编译器版本?
    3. 如果选择保留 TMS320F28035 的编译器版本 — v18.12.3.LTS、我们可以生成最接近的格式是什么? 请提供格式的完整定义,包括符号表和其他需要的 DWARF 段),以提取符号和数据类型。

          请另外提供编译器和链接器选项。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]我们需要使用哪些编译器和链接器选项、以便我们可以获得与 TMS320F2812 处理器编译器 CCStusio V3.2 相同的 STABS 格式符号表和.out 文件。

    对于支持它的编译器、选项是 -- symdebug:coff 。  尽管该选项显示的是 COFF 、 表示使用 STABS 调试格式。

    如果编译器版本 — v18.12.3.LTS 不支持 SATBS 格式符号表。 您能建议一个有效且支持 STABS 格式的编译器版本吗?

    最后一个需要支持的编译器版本 15.12.7.LTS -- symdebug:coff 。  它未激活。

    如果选择继续使用 Compiler vision — 对于 TMS320F28035、为 v18.12.3.LTS、我们可以生成最接近的格式是什么?

    该版本仅支持 Dwarf 调试格式、这与旧的 STABS 格式非常不同。

    请提供格式的完整定义、包括符号表和其他需要的 DWARF 节)、以提取符号和数据类型。

    请参阅文章   TI 目标文件格式和 TI 编译器中的 Dwarf 4 的简要历史

    谢谢。此致、

    -乔治

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

    您好、George、

    1. 客户需要 Dwarf 3、4 和 EABI 的调试信息格式。 看起来此链接是损坏的 https://processors.wiki.ti.com/index.php/DWARF_4 
    2. 此外、您能否分享 COFF(STABB 格式)与 dwarf3 与 dwarf4 变化的比较? (关于符号定义,类型定义)
    3. 全局静态变量是否会进入 Dwarf 的符号表段?
    4. 对于类型结构的变量,我们可以在每个基元结构元素中获得地址和类型的信息
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    客户需要 Dwarf 3、4 和 EABI 的调试信息格式。

    提供的 一个调试协议

     

     在 TI 编译器中 改用 Dwarf 4。

    分享 COFF(STABB 格式)与 dwarf3 与 dwarf4 变化的比较?

    这两种格式用于调试信息。  除此之外,它们是如此不同,比较它们是没有意义的。

    全局静态变量是否会进入 Dwarf 中的符号表部分?

    有关符号的信息位于多个位置。  ELF 目标文件格式包含一个符号表。  而且、关于符号的大量信息包含在 Dwarf 调试信息中。  静态变量在 ELF 符号表和 Dwarf 调试信息中均表示。

    对于类型结构的变量、我们可以在每个原始结构元素
    获取地址和类型信息吗?

    我想你的意思是要求一个实用程序,读在 Dwarf 和转储它编码的结构的布局。  遗憾的是、我们没有任何执行该任务的实用程序。  

    谢谢。此致、

    -乔治

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

    您好 George、我听说 CCS 软件包附带的实用程序中包含“ofd"和“和“nm"实用“实用程序、可用于显示 (.out) 输出文件中的 DWARF 转储。

    ofd6x.exe -xml_indent=0 --obj_display=none --dwarf_display=none、symbols -g AmcFirmware.out > Dwarf.xml

    ofd2000.exe -xml_indent=0 --obj_display=none --dwarf_display=none、symbols -g AmcFirmware.out > Dwarf.xml

    您能否建议我是否可以使用任何 TI 工具/实用程序来转储 Dwarf 调试部分? 这可以帮助我编写一些脚本、可以从中提取符号信息。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请建议我是否可以使用任何 TI 工具/实用程序来转储 Dwarf 调试部分

    您已经找到了我们提供的一个实用程序。  如需了解更多相关信息、请搜索 ofd2000  手册中找到此示例。

    谢谢。此致、

    -乔治