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:有十六进制文件中的 RAM 数据

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1248631/tms320f28388d-there-have-data-for-ram-from-hex-file

器件型号:TMS320F28388D

您好、专家:

我的客户正在使用 F28388D、在生成十六进制文件时、RAM 地址0x0003A1EE 有数据、

FLASH12:origin = 0x0BC000、length = 0x002000 /*片上闪存*/
FLASH13:origin = 0x0BE000、length = 0x001FF0 /*片上闪存*/
// FLASH13_RSVD:origin = 0x0BFFF0,length = 0x000010 /*根据勘误建议"存储器:预取超出有效存储器"保留代码且不使用*/

CPU1TOCPU2RAM:origin = 0x03A000、length = 0x000800
CPU2TOCPU1RAM:origin = 0x03B000、length = 0x000800

这里出什么问题了吗?  

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

    strong、您好!

    您能否为项目发送链接器命令文件(.cmd)和.map 文件? 此外、您能否澄清 客户提出的问题?

    此致、

    阿米尔·奥马尔

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

    您好、Omer:

    请查看以下文件:

    e2e.ti.com/.../Servo_5F00_Beta.map


    e2e.ti.com/.../Servo_5F00_Beta.hex

    e2e.ti.com/.../2838x_5F00_FLASH_5F00_CLA_5F00_lnk_5F00_cpu2.cmd.txt

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

    strong、您好!

    可以回答我的第二个问题吗? 我对 hex 文件的格式不太熟悉、因此无法判断是否有问题或是否只有问题。 您能给我一些关于用户所问内容的背景信息吗?

    此致、

    阿米尔·奥马尔

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

    Omer:

    根据客户反馈、hex 文件不应包含来自 RAM 地址的数据、但他提供的 hex 文件包含来自 RAM 地址 的数据、即0x0003A1EE。  

    您可以检查 C20000编译器是否有任何问题吗?  

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

    Omer:

    从 cmd 文件来看、 0x0003A1EE 属于 CPU1TOCPU2RAM、它不应显示在十六进制文件中。

    CPU1TOCPU2RAM:origin = 0x03A000、length = 0x000800
    CPU2TOCPU1RAM:origin = 0x03B000、length = 0x000800

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

    链接器映射文件显示以下内容...

    .TI.bound:DriverPowerType 
    *          0    0003a1ee    00000001     
                      0003a1ee    00000001     CLA09_CLAVar.obj (.TI.bound:DriverPowerType)
    
    .TI.bound:MotA_PwmPeriod 
    *          0    0003a1ef    00000001     UNINITIALIZED
                      0003a1ef    00000001     CLA09_CLAVar.obj (.TI.bound:MotA_PwmPeriod)

    每组行描述一个输出段。  这两个输出节的长度均为1字。  第一个对应于问题地址0x0003a1ee。  注意这个词 乌尼特利策德 缺少信号。  将其与第二个输出部分进行比较。  这意味着输出部分 .TI.bound:DriverPowerType 传感器节点。  这就是十六进制实用程序会输出此地址的原因。

    我不知道为什么会初始化这个段。  但我可以看到它来自目标文件、 CLA09_clavar.obj 。  源文件 CLA09_CLAVar.CLA  请按照 如何提交编译器测试用例一文中的说明进行操作

    谢谢。此致、

    -乔治

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

    G·,

    感谢您的支持。 客户使用以下代码导致此问题。

    #pragma RETAIN( DriverPowerType )
    
    uint16_t DriverPowerType = 0; 
    #pragma LOCATION(DriverPowerType, 0x03A1EE)

    如果它们更改为以下代码、这将  未初始化 变量 DriverPowerType、则一切正常  

    #pragma RETAIN( DriverPowerType )
    uint16_t DriverPowerType;              
    #pragma LOCATION(DriverPowerType,  0x03A1EE)
    

    实际上、下面的这个地址到 CPU1TOCPU2RAM、CPU2不能写入、客户的十六进制数由 CPU2工程生成。

    这可能会导致问题。  

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

    strong、您好!

    实际上、下面的这个地址到 CPU1TOCPU2RAM、CPU2不能写入、客户的十六进制数由 CPU2工程生成。

    这可能会导致问题。

    [/报价]

    我不确定这为什么会导致问题、此消息 RAM 特意限制访问、因此 CPU2只能读取或执行调试写入。 您是说由于 CPU2无法写入 CPU1TOCPU2RAM、因此存储器位置不应显示在十六进制文件中吗? 还是因为 RAM 在 CPU 之间共享?

    此致、

    阿米尔·奥马尔