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.

TMS570LS0914如何增加STACK的大小,并如何验证有效性?

Other Parts Discussed in Thread: TMS570LS0914, HALCOGEN

测试芯片:TMS570LS0914

目前自测方法:定义一个很大的局部变量(数组),在测试时,当把数组定义为 uint8 temp[4080]时(大约4KB),执行程序的时候会进入_dabort,所以此时应该是发生了STACK溢出。(首先想确定这个方法是否有效?)

在上述测试方法前提下,我又将cmd中的STACK改大到10kb(0x2800如下图),并且map文件中也显示stack为10kb(0x2800),但是测试时还是进入了_dabort,所以是该CMD没用吗?(希望有人解释这个问题)

MAP文件:

最后上网查了还可以用如下图方法去改变STACK的大小(也是0x2800,10kb),但是最终测试还是会进入_dabort(这为什么还是不行?)

所以,TMS570LS0914如何增加STACK的大小,并如何验证有效性?

 

 

  • 1 您需要使用图2的方法来修改stack的大小

    在cmd文件(第1张图片)中定义的stack大小应该> =  大于等于在CCS链接器选项中定义的--stack_size (图2)

    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 
    abortSp .word 0x08000000 + 0x00001000 + 0x00000100 + 0x00000100 + 0x00000100 + 0x00000100
    undefSp .word 0x08000000 + 0x00001000 + 0x00000100 + 0x00000100 + 0x00000100 + 0x00000100 + 0x00000100

    4 建议您使用halcogen,您可以在halcogen中为每个模式设置堆栈大小,Halcogen会自动生成所需的链接命令cmd文件。

    5 您可以参考下E2E上的帖子

    https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/243986?Stack-memory-configurations

  • 你好:Susan Yang

    userSp .word 0x08000000 + 0x00001000 
    svcSp .word 0x08000000 + 0x00001000 + 0x00000100 
    fiqSp .word 0x08000000 + 0x00001000 + 0x00000100 + 0x00000100 
    irqSp .word 0x08000000 + 0x00001000 + 0x00000100 + 0x00000100 + 0x00000100 
    abortSp .word 0x08000000 + 0x00001000 + 0x00000100 + 0x00000100 + 0x00000100 + 0x00000100
    undefSp .word 0x08000000 + 0x00001000 + 0x00000100 + 0x00000100 + 0x00000100 + 0x00000100 + 0x00000100

    关于上述6种stack的大小,应该怎么设置,举个例子,比如说对于我们用户来说,是不是只要设置userSp的大小就可以了,另外几个设置的大小是根据什么来定的,

    关于为什么问这个问题是目前我们程序中经常进入_dabort,所以能否有相关资料介绍这个stack应该根据什么来设置大小?

  • 这个并没有相关的具体资料来介绍stack应该根据什么来设置大小,一般是用户自己设定大一点的值,而后慢慢来减少数值,进而选择的。