Other Parts Discussed in Thread: C2000WARE
Hi Champs,
I know Flash data needs to be 64 bit aligned due to ECC generation. So C2000 devices that has ECC feature like F2804x and F2837x used ALIGN(4) in cmd files. However, in the recent C2000Ware, ALIGN(8) is using in F2837x, F2838x and F28002x.
Does this have anything to do with EABI? If not, why ALIGN value was changed from (4) to (8)?
One more odd thing is that "iddk_servo_2838x_flash_lnk_cpu1.cmd" file in MotorControl SDK uses both ALIGN(4) and ALIGN(8) as following. Is there any reason about this different ALIGN value should be used according to sections?
SECTIONS
{
codestart : > BEGIN, ALIGN(4)
.text : >> FLASH1 | FLASH2 | FLASH3 | FLASH4, ALIGN(4)
.cinit : > FLASH5, ALIGN(4)
.switch : > FLASH1, ALIGN(4)
.reset : > RESET, TYPE = DSECT /* not used, */
.stack : > RAMM1
#if defined(__TI_EABI__)
.init_array : > FLASH6, ALIGN(8)
.bss : > RAMLS6 | RAMLS7
.bss:output : > RAMLS6 | RAMLS7
.bss:cio : > RAMLS6 | RAMLS7
.data : > RAMLS6 | RAMLS7
.sysmem : > RAMLS6 | RAMLS7
/* Initalized sections go in Flash */
.const : > FLASH6, ALIGN(8)
#else
.pinit : > FLASH6, ALIGN(8)
.ebss : > RAMLS6 | RAMLS7
.esysmem : > RAMLS6 | RAMLS7
.cio : > RAMLS6 | RAMLS7
/* Initalized sections go in Flash */
.econst : >> FLASH4 | FLASH5, ALIGN(4)
#endif