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.

[参考译文] TMS320F28388D:如何查找全局结构成员的存储器地址

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1502101/tms320f28388d-how-to-find-the-memory-address-of-a-global-structure-member

器件型号:TMS320F28388D

工具/软件:

您好、

CPU1工程中定义了一个全局结构、我们的用例是 从 CPU2获取结构成员的存储器地址、访问这些成员并读取其中存储的值。

结构声明如下所示、相关成员如下  RawAdcData.w[0] 而这又是指向的  stRawAdcData.RecRPhaseLegBCur

typedef struct {
    float RecRPhaseLegBCur;                 
    float BatLegAVolt;                      
    /**snipped**/
} stRawAdcData;

#define RAW_ADC_SIZE    sizeof( stRawAdcData ) / sizeof( float )

typedef union
{
    stRawAdcData    st;
    float           w[ RAW_ADC_SIZE ];
} uRawAdcData;

uRawAdcData RawAdcData;

根据链接器文件、此变量存储在全局共享 RAM (.bss)中。

我 使用了以下 信息  从  输出文件中获取 数据:从.out-file - Code Composer Studio 论坛- Code Composer StudioTm︎- TI E2E 支持论坛

但我无法在映射文件中找到此成员变量。

下面是我做的:

从 ofd2000的输出中获得:

使用的命令: "c:/ti/ccs1270/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/bin/ofd2000.exe --obj_display=none、sections -v cpu1.out

    <8> ".bss"
       Load Address:        0x0000f800  Run Address:        0x0000f800
       Size:                0x1a8e      Alignment:          2         
       Loaded Onto Device:  Yes         Address Unit Size:  16 bits   
       File Offset:         0x1034      # Relocs:           0         
       Section Type:        SHT_NOBITS  ELF sh_flags:       0x3       
       ELF sh_flag:         SHF_WRITE   ELF sh_flag:        SHF_ALLOC 
       TI ext_flags:        0x0         (null)              (null) 

sect_file_ptr = 0x1034
sect_base = 0x0000f800

查看 nm2000的输出、无法获取的成员变量的位置 RawAdcData 。 下面是我得到的:

使用的命令: "c:/ti/ccs1270/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/bin/nm2000.exe -l cpu1.out

[5234]  |0x00011140|304|GLOB |OBJT |HIDN |8     |RawAdcData

没有关于" .w[0] "工会成员或  RecRPhaseLegBCur

如果我遗漏了任何信息、或者您需要其他信息、请告诉我。

谢谢、

Rohit

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

    任何人都请对此作出回应。

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

    您好、

    对延迟回复表示歉意。

    您只能使用此方法获取全局变量/符号的基地址。

    如果您获得了结构体的基地址、则可以通过添加偏移量来计算 w[0]的地址。 在您的 case 地址+ 4。

    此致、

    Veena