AnsweredAssumed Answered

MPC5605B sdata issue

Question asked by 陈 金怀 on Jun 22, 2017

Hi all,

 

      I create two project. one run in flash, the other run in ram.

 

and copy the ram prj .bin file  to flash prj uint16_t array, and running it

(lcf : internal_ram  org = 0x40000000, len = 0x2000

         stack               org = 0x40004000, len = 0x1000)

main(void)

{

  

   (* function)()   /* jump to ram prj mian addr 0x40006382 */

 

//would not come back here

   while(1)

   {

         

    }

}

in ram prj

(lcf: internal_ram: org = 0x40006000, len = 0x8000

        stack:              org = 0x4000E000, len = 0x1000)

main(void)

{

uint16_t uiDummyRead;

const uint16_t uiDataSize = sizeof( A ) / sizeof( B );

 

while (1)

{

   uiDummyRead = uiDataSize ;

}

 

}

 

download flash prj and running,  found that the uiDataSize is wrong, and the @uiDataSize is 0x400003bc

this addr is the flash prj's sdata addr

.sdata2 400003bc 00000000 00002800 00005000 00005000  0

the ram flash prj's sdata addr

.sdata2 40006854 00000000 00000710 0               00000000

 

so i change the type of uiDataSize to rodata, then the problem solved.

const uint16_t __attribute__((section(".rodata")))uiDataSize = sizeof( A ) / sizeof( B );

 

what is the cause of the problem????

Original Attachment has been moved to: Test_Prj.rar

Outcomes