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.

[参考译文] 编译器/TMS320C6748:我的二进制文件在哪里真正输入了我的.text信息?

Guru**** 2539500 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/576390/compiler-tms320c6748-where-is-my-binary-really-putting-my-text-information

部件号:TMS320C6748

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

试图了解加载的数据与我认为的数据不同的原因。

我的项目是在Linux下使用较旧的工具集编译的;典型的文件就是这样编译的;
TI_C6x_v 7.2 .3_linux/bin/cl6x -EO.obj -GQ-ml3-al-s-dCHIP_6748-mv6740
链接程序元素也是如此;
TI_C6x_v 7.2 .3_linux/bin/lnk6x -c...  -o tslave1ctl.out -m tslave1ctl.map

如果我添加一些编译器标志来为我的source.c文件生成列表文件,我可以看到操作代码的相对偏移量
文本部分。

    75万 0000万          _sysjob:
    751;**------------------                    *
    752                           .dwcfi CFA_offset,0
    753                           .dwcfi save_reg_to_reg,228,19
    75.4万00000 01BC54F60万 01BC54F6            STW    .d2T2  B3,*SP--(8)      ,|41|

 如果我使用从链接器生成的映射文件-我可以确定. text部分在各种中的位置
模块已链接。

                 c607.71万   0.0001万dc0    sysreq.obj (.text)

 如果我读取了我认为包含.text数据的存储位置,而我有一个列表文件,
数据值(操作码)不一致。

DM c607.71万
   地址    数据
c607.71万:ac4531f7 18.38428188亿 c068   c0264

因此,使用类似的反汇编程序进行查找(同样在Linux下);
TMS320C6x反汇编                 器版本7.2 .................3.
工具版权所有(c) 1996-2011 Texas2011 Texas Instruments Incorporated

 ./dis6x -mv6740 -o=0xac4531f7
 [ a2] STNDW.D2T2   B25:B24,*--B17 (9)

尝试另一个尾端...作为好奇心。
 ./dis6x -mv6740 -o=0xf7.3145万ac
 Word        0xf7.3145万ac


有人能解释这种分歧吗?
我缺少什么?

谢谢

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

    您可以证明文件sysreq.obj中.text输入部分的最终地址是0xc67.71万。  但这仍不能保证符号_sysjob也在此位置。  符号_sysjob的值是什么?  假设不同,该地址的说明是否与装配体列表匹配?

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在可执行输出文件(tslave1ctl.out)上运行独立的反汇编程序(dis6x),并查看地址c607.71万。 您应该从sysreq.obj中找到.text输入部分的开头,该部分大概以_sysjob开头。 如果不匹配,则与地图文件不匹配,并且发生了一些奇怪的事情。

    如何将程序从可执行的目标文件进入目标内存? 您是否使用CCS或其他装载程序? 您是否正在使用TI十六进制转换实用程序?