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.

what is .taskStackSection for?

Other Parts Discussed in Thread: SYSBIOS

I am developing SYS/BIOS 6.x on a F2808 using CCS 4.x.

I'm trying to regain some of my very critical RAM memory.

I see that common_x28L.o28L (.taskStackSection) is taking up 2307 words of RAM.  What is this for? 

I also have .stack that is taking up 1024 words or RAM, which makes sense to me, but I don't understand what .taskStackSection is for, and why it needs so much space?

Also, there's an item common_x28L.o28L (.ebss) that takes up 1920 words of RAM?  Why so big? for what?

 

------------------------------------------------------------------------------------------------------------------------------

from my memory map

-------------------------------------------------------------------------------------

.taskStackSection * 0 00008000 00000903 UNINITIALIZED

                                         00008000 00000903 common_x28L.o28L (.taskStackSection)

.stack 0 00008904 00000400 UNINITIALIZED

                                          00008904 00000400 --HOLE--

-----------------------------------------------------------------------------------------------------------------------

 

If I can shrink the RAM memory footprint of these items, I think I may be able to use SYS/BIOS with the F2808.  But, as it stands know, it is taking up too much memory space.

 

Thanks-

Jeff

 

.ebss.1 0 0000a000 000008b6 UNINITIALIZED

                                          0000a000 00000780 common_x28L.o28L (.ebss)

                                          0000a780 00000108 rts2800_ml.lib : trgdrv.obj (.ebss)

                                          0000a888 00000018 DSP280x_CpuTimers.obj (.ebss)

                                          0000a8a0 00000008 mutex.obj (.ebss)

                                          0000a8a8 00000004 rts2800_ml.lib : _lock.obj (.ebss)

                                          0000a8ac 00000004 : exit.obj (.ebss)

                                           0000a8b0 00000003 ti.sysbios.family.c28.a28L : Timer.o28L (.ebss)

                                          0000a8b3 00000001 --HOLE--

                                           0000a8b4 00000002 rts2800_ml.lib : sinit.obj (.ebss)

  • Hi Jeff,

    The .taskStackSection contains the system heap and stacks for statically created tasks.

    ".taskStackSection"  =  (Task.defaultStackSize * number of static tasks) + system heap size.

    To reduce this ection you can do tthe following.

    1. Task.defaultStackSize = 0x256 by default. You can set this value to something smaller in your cfg file.

    2. Minimize number of tasks in your application.

    3. Minimize the heap size. You probably have some code in your cfg file that creates the default heap. See code below. Set size of heap to something small.

    /* Create default heap and hook it into Memory */
    var heapMemParams = new HeapMem.Params;

    heapMemParams.size = 0x100;

    heapMemParams.sectionName = ".taskStackSection";

    var heap0 = HeapMem.create(heapMemParams);

    Memory.defaultHeapInstance = heap0;

    4. Question for you. Do you need dynamic mamory allocation?

    5.  The BIOS User Guide includes a section on "Minimizing Appliccation Footprint". Please read through this section.

    I will get back to you on .ebss soon

    Regards

    Nitya

  • The .taskStackSection is the section which contains all of your Task stacks. Because the 28x has only a 16-bit stack pointer, the Task stacks must be placed in memory below 0xFFFF. For this reason, the Task stacks are placed in their own section so that this section can be properly placed.

    You can try decreasing the size of your Task stacks. Also, you can adjust the size of the idle Task's stack with the config parameter Task.idleTaskStackSize.

    It looks like the main component of the .ebss section is the state associated with the BIOS modules in your application.

    The BIOS User's Guide has an appendix titled "Minimizing Application Footprint". I'd recommend going through it and trying some of the suggestions there.

    As you decrease heap and stack sizes, of course, you'll need to be careful of "out of memory" errors from heaps and overrunning your stacks. The ROV tool can be helpful in monitoring your stack and heap usage.

    Thanks,

    Chris