Hello,
I'm programming a F28027F and I'd like to get more ram for global vars, thus I'm playing with the .cmd but I've some questions and problems.
On the original code, the ram funcs are located in L0 :
RAMM0_M1 : origin = 0x000000, length = 0x000800 /* on-chip RAM block M0 + M1 */ DRAML0 : origin = 0x008800, length = 0x000800 /* on-chip RAM block L0 */ FLASHB : origin = 0x3F4000, length = 0x002000 /* on-chip FLASH */ .cinit : > FLASHC_D PAGE = 0 .pinit : > FLASHC_D, PAGE = 0 .text : > FLASHC_D PAGE = 0 codestart : > BEGIN PAGE = 0 ramfuncs : LOAD = FLASHB, RUN = DRAML0, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 1 csmpasswds : > CSM_PWL_P0 PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 0 /* Allocate uninitalized data sections: */ .stack : > RAMM0_M1 PAGE = 1 .ebss : > RAMM0_M1 PAGE = 1 .esysmem : > RAMM0_M1 PAGE = 1
As you can see, 0x8000 to 0x8800 are not used...
I though about 2 ways to use them, the first : make .ebss to be placed in RAMM0_M1 and say DRAML1 (from 8000h to 8800h). But the only things I've found about that is to place the section on RAMM0 XOR DRAML1, but not both.
The Second way was to move the ram functions to RAMM0_M1... but there the code doesn't work, falling in a PIE_illegalIsr
(among the ram func, there are ISR, actually, The code is based on the Motor Ware)
Thus, yet, is this possible ?
then, why shall the code bug moving the ram funcs ? (btw, if _RamfuncsRunStart were not set by the linker, it would be logical, but the symbol point to 0x0...)
Also, why this restriction about not to expand a section on another address range ?
Thank you for reading :)
Léo.