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.

Large Heap blocks the program jump into _c_int00

Hi

My project is created from CCS typical SYS/BIOS example.

In main function, there is nothing to do, I just added one line source code to write specific value at 0x80000004 before calling BIOS_start function.

--------------main.c---------------------

Void main() {

    Task_Handle task;

    Error_Block eb;

    System_printf("enter main()\n");

    Error_init(&eb);

    task = Task_create(taskFxn, NULL, &eb);

    if (task == NULL) {

        System_printf("Task_create() failed!\n");

        BIOS_exit(0);

    }

    *(volatile int *)0x80000004 = 0xace0ace; //Here is Test Code

    BIOS_start();

     /* enable interrupts and start SYS/BIOS */

}

I used default SYS/BIOS configuration to build the project, then loaded the program into slave core, sent IPCGR to slave core, the dsp program works fine (It means I can read the value I expected.)

But when I increase Heap size up to 400000, I found that in slave core the program didn't read the value of boot magic address (the value at 0x87fffc is not 00000000), so the program keep idled untill I write  _c_int00 address into Core register Program Counter by CCS, then the program start working.

I think that large heap size cover some address, so that something blocks the program which in slave core jump into _c_int00, evne I send IPCGR to slave core.

Could you explain why ? Thank you very much.

 

Device: DSPC-8681, EVM6678

Here is the MAP file:

Heap size: 400000
https://drive.google.com/file/d/0B-HUXA_alaLoaFlKVng5eTdkYkk/view?usp=sharing

Backup:3833.chris.zip