Other Parts Discussed in Thread: TMS320F28377S, SYSBIOS
Hi.
I'm building a project with an TMS320F28377s C2000 processor and the ti/rtos stack.
I ran into this problem adding a large task we want to execute:
[C28xx_CPU1] ti.sysbios.family.c28.TaskSupport: line 114: Stack (0x11080) not located on PAGE 0 (stack must be located entirely below 0x10000)
I mapped the .ebss section to dataram 0xc000 -> 0x1bfff and my .map file shows
.ebss.1 1 0000c000 00006afe UNINITIALIZED
0000c000 0000387a DSP28377_RTOS_MScreen.obj (.ebss)
0000f87a 00000004 DSP28377_RTOS_DataConvert.obj (.ebss)
0000f87e 00000002 rts2800_fpu32.lib : _lock.obj (.ebss:__lock)
0000f880 00001400 Board_MControl_RTOS_config_p28FP.o28FP (.ebss)
00010c80 00000f03 Board_MControl_RTOS_config_p28FP.o28FP (.ebss:taskStackSection)
00011b83 00000001 --HOLE--
00011b84 0000003c DSP28377_RTOS_RS485.obj (.ebss)
00011bc0 00000eb2 Board_MControlR12_RTOS.obj (.ebss)
00012a72 0000000d DSP28377_RTOS_Errors.obj (.ebss)
00012a7f 00000001 --HOLE--
00012a80 0000003a DSP28377_RTOS_Scope.obj (.ebss)
00012aba 00000004 rts2800_fpu32.lib : exit.obj (.ebss)
00012abe 00000002 : _lock.obj (.ebss:__unlock)
00012ac0 00000036 DSP28377_RTOS_MotorControl.obj (.ebss)
00012af6 00000008 rts2800_fpu32.lib : trgdrv.obj (.ebss)
.ebss.2 1 00012b00 00000022 UNINITIALIZED
00012b00 00000016 DSP28377_RTOS_Communicatie.obj (.ebss)
00012b16 00000007 DSP28377_RTOS_RGBLED.obj (.ebss)
00012b1d 00000001 --HOLE--
00012b1e 00000004 ti.uia.runtime.a28FP : QueueDescriptor.o28FP (.ebss)
for some reason the .ebss is quite large (above 0x7000) so moving the .ebss somewhere else won't fit. But the new task (RTOS_MScreen.c) gets placed first in the available space...
Is there a way for me to tell the compiler to place the taskStackSection first ?
Or i have some large arrays i use to store data. I suppose this is why the .ebss is this large. Is there a way to link these arrays somewhere outside .ebss?