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.

c6678 stack for Tasks etc

Other Parts Discussed in Thread: SYSBIOS

I have a single task running on a particular core of the c6678 processor and would like to be able to set my stack for my main task to be different than the idle task. Now when I configure through XGCONF within CCSv5 under the TASK section, and set the idle task stack size to be 1024 and the default stack size to be much larger, it resets the idle task stack size to be the same larger value too. Also, in the multicore example project, the stack for the tasks are placed in .far:taskStackSection yet when I look at the memory map file I see only one occurence i.e. Should they not be two - one for the idle task and one for the task I am running.

                  00802910    00000400     multicore_example_pe66e.oe66e (.far:taskStackSection)

 Here is my call in the main() to setup the task before starting the bios.

 Task_create((Task_FuncPtr)&MultiCoreApp, &cpswTaskParams, NULL);

On the c6416 processor that I was using, it would create a stack plus an idle stk and the main stk with each of them being configurable. I want to be able to have the .stack and the idle stk small enough and the main stk used by my main task as much larger.

  • HI Aamir,

    What version of SYS/BIOS are you using?

    With the dynamic Task_create function, you can either provide the stack or have SYS/BIOS allocate it for you. By default, unless you set taskParams.stack to a buffer that you provide (either a global buffer or an allocated buffer), the Task module will allocate a buffer from a heap. In this case, the stack will not show up in the mapfile since the memory is part of a heap. Please refer to the Task module documentation for more details.

    Have you looked at Tools->ROV to see the stack size for the Idle Task?

    Todd

  • I am using 6_33_02_31 of sysbios.

    So if I am not providing a buffer as must be the case, when it allocates a buffer from the heap, it must the HeapMem as that is the only heap I know that is allocated for this example project. I will look into the documentation for the task module some more.

    I tried running Tools->ROV but did not see any info when I ran it. Do I have to download something specific to get this Tools->ROV working?

    Thanks, Aamir

  • It is using the default heap to allocate the stack. Note: you can specify the heap to use via the stackHeap (and defaultStackHeap) configuration parameters.

    For ROV to work, you must load the .out via CCS (or load symbols if you are not loading via CCS). Can you include a screenshot of the ROV window?

    Todd