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.

[参考译文] LAUNCHXL2-RM57L:.CMD 文件中计算出的 RAM 大小错误

Guru**** 2615645 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/773523/launchxl2-rm57l-ram-size-being-calculated-wrong-in-cmd-file

器件型号:LAUNCHXL2-RM57L
主题中讨论的其他器件:HALCOGEN

大家好、

我当前正在调试 FreeRTOS 项目中发生的一些预取中止、发现 HALCoGen 生成的 HL_SYS_LINK_cmd 文件包含 错误的 RAM 大小计算:

查看 HALCoGen 生成的上述代码、RAM 段边界为:

 

START:origin=(0x08004500+0x00000800)= 0x08004D00

结束:origin + length = 0x08004D00 +(0x0007F800 - 0x00000800)= 0x08083D00

通过查看下面的 Hercules RM57存储器映射、我们可以看到计算出的 RAM 上限(0x08083D00)超出了存储器的 RAM 部分范围(从0x080000到0x0807FFFFF)。 请忽略黄色。 突出显示 的区域是为其创建 MPU 区域的存储器部件(与此特定帖子无关)。

我想我的第一个问题是、在本例中、如何计算0x0007F800数字? 为了错误地计算这个数字、我必须配置错误的其他内容。

第二个问题: 在 CCS 中更改堆栈大小(Properties > ARM Linker > Basic Options)与在 HALCoGen 中更改堆栈大小有何区别? 我知道、在 HALCoGen 中、您可以更改分配给每个堆栈部分的空间、但如果您在 CCS 中更改了整体堆栈大小、但它 与 HALCoGen 中设置的整体堆栈大小不匹配、该怎么办? 还是 viceversa?

感谢您提供的任何帮助。

谢谢、

Surialic

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

    您将会更轻松一些。 我将要求 SW 团队纠正它。 正确的长度应为0x80000 (SRAM 大小)-0x4500 (堆栈)-0x800 (Kram)=0x7B300。 0x7F800为0x80000 (SRAM 大小)- 0x800 (Kram 大小)。

    1.--stack_size=0x800在 CCS 链接器选项中定义(您的第二张图片)
    2.用于堆栈的内存部分在 cmd 文件中定义(您的第一张图片)。 此区域应>=--stack_size、在 CCS 链接器选项中定义。 STACK_SIZE 应大于所有模式(用户、SVC、IRQ、中止、...)使用的大小
    cmd 文件中栈的起始地址应该与 sys_core.asm 中定义的起始地址一致:

    userSp .word 0x08000000+0x00001000
    svcSp .word 0x08000000+0x00001000+0x00000100
    fiqSp .word 0x08000000+0x00001000+0x00000100+0x00000100
    irqSp .word 0x08000000+0x00001000+0x00000100+0x00000100+0x00000100
    中止 Sp .word 0x08000000+0x00001000+0x00000100+0x00000100+0x00000100+0x00000100+0x00000100
    undefSp .word 0x08000000 + 0x00001000+0x00000100+0x00000100+0x00000100+0x00000100+0x00000100+0x00000100
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、QJ Wang、

    感谢您的回复。 非常有帮助。 我还注意到、每当我使用 HALCoGen 重新生成代码时、.sysmem 段条目(来自 hL_sys_link.cmd)就会消失、我必须手动重新添加它。 我不记得必须用我使用的另一个板执行该操作。 如果这也是一个错误、只需指出它。

    谢谢、

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

    您好 Surialic、

    请将您的代码添加到用户代码部分: