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.

[参考译文] MSP430F5419A:区域 ROM 溢出

Guru**** 2526700 points
Other Parts Discussed in Thread: MSP430F5419A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/711387/msp430f5419a-region-rom-overflow

器件型号:MSP430F5419A

您好!

我们遇到了 MSP430F5419A 的"区域 ROM 溢出"问题。

我们的实际代码大小小于42K、 MSP430F5419A 支持高达128K 的内存。

我们使用的是 GCC 编译器4.6.3.

请提供建议。

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

    您能否添加收到的错误消息? 是在编程还是编译时使用?
    收到此错误代码时、您能否粘贴命令行的屏幕截图?

    您是否在使用 Code Composer Studio、如果是、您使用的是哪个版本?

    感谢您分享这些蜡染。
    此致、
    Britta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们使用的是 GCC 4.3.3。 请查找随附的屏幕截图。

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

    请检查您的链接器命令文件、并查看存储器部分是否与器件数据表中显示的可用存储器实际匹配。
    我看到一些段(.data 和.vector)在存储器中重叠。 确保不会发生这种情况、并且由链接器命令文件来处理。
    在检查是否有足够的可用内存时、您是否可以混合使用 ROM、RAM 和闪存?

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

    您好!

    我已经检查了 ldscript 文件,这些段没有重叠。

    请检查以下文件以了解更多详细信息。 在这里、我的代码大小超过了41K 的 ROM 大小限制、这就是显示重叠消息的原因。

     

    存储器{
    
    SFR :origin = 0x0000、length = 0x0010 /* end=0x0010、size 16 */
    
    peripheral_8bit:origin = 0x0010、length = 0x00f0 /* end=0x0100、size 240 */
    
    peripheral_16bit:origin = 0x0100、length = 0x0100 /* end=0x0200、size 256 *
    
    / BSL :origin = 0x1000、length = 0x0800 /* end=0x1800、size 2K 为4个512字节段*/
    
    信息存储器 :origin = 0x1800、length = 0x0200 // end = 0x1a00、size 512 as 4 128字节数据段*/
    
    infod :origin = 0x1800、length = 0x0080 /* end=0x1880、size 128 *
    
    / infoc :origin = 0x1880、length = 0x0080 /* end=0x1900、size 128 *
    
    / infob :origin = 0x1900、length = 0x0080 //* end=0x1980、size 128 *
    
    / infoa :origin = 0x1980、length = 0x0080 /* end=0x1a00、size 128 */
    
    ram (WX) :origin = 0x1c00,length = 0x4000 /* end=0x5c00,size 16K */
    
    ROM (Rx) :origin = 0x5c00,length = 0xa380 /* end=0x80,size 41852 */
    
    vectors :origin = 0x80、length = 0x0080 /* end=0x10000、大小128为64个2字节段*/
    
    far_rom :origin = 0x00010000、length = 0x00035c00 /* end=0x00045c00、size 215K */
    
    //*其余组不存在*/
    
    RAM2 (WX) :origin = 0x0000、length = 0x0000
    
    ram_mirror (WX):origin = 0x0000、length = 0x0000
    
    usbram (WX) :origin = 0x0000、length = 0x0000
    
    }
    
    region_alias ("region_text"、ROM);
    
    region_alias ("region_data"、ram);
    
    region_alias ("region_FAR_ROM"、 far_rom);
    
    提供(_info_seger_size = 0x80);
    
    提供(_infod = 0x1800);
    
    提供(_infocd = 0x1880);
    
    提供(_infob = 0x1900);
    
    提供(_infoa = 0x1980);
    

     

    以黄色标记的部分表示开始位置、使用长度可以计算结束位置。

    它不会重叠。

    请提供建议。

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

    我已使用代码格式编辑过您的帖子、使其在此处更易于阅读。
    在您共享的屏幕截图中、我看到您的.data 实际上加载在地址0xfee0。 我知道您打算将其加载到0x5c00的 ROM 段中、但在地址0xfee0处、您在溢出到.vectors 段之前只需要存储大约160个字节。

    查看分配到存储器中的段、以查看.data 段实际分配到的位置。

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

    因为我在一段时间内没有收到您的回复、所以我认为您的问题已经解决了。
    请继续验证给定的答案、以帮助可能遇到相同问题的其他用户。

    请注意、如果我没有听到您的反馈、我将在接下来的几天内关闭此主题。 如果有必要、回复该主题帖将在某个时间点重新打开。

    此致、
    Britta