AnsweredAssumed Answered

Coldfire debugging but do not erase all memory before writing code..

Question asked by ssinfod on Mar 3, 2016
Latest reply on Mar 9, 2016 by Carlos_Mendoza

Hello,

 

I'm using the Coldfire 52233 MCU with uTasker RTOS and CodeWarrior 10.5.

This MCU has 256K of Flash. I'm using the first 128K for code and the other 128K for webpages and data.

 

Right now, every time I start the debugger in CodeWarrior all the 256K of Flash is erased and I have to reload my webpages separately since they are not part of the code.

 

Is there a way to erase and load only the first 128K of Flash when I use the debugger in CodeWarrior ?

I think I have to change the "MCF52233_utasker.lcf" file but I am not sure how to change it.

 

Here is the content of my file:

MCF52233_utasker.lcf #/* # * File:       M52235EVB_FLASH.lcf # * Purpose:    Linker file for the M52235EVB # * #  NOTE: The debugger uses the Illegal Instruction Vector to stop. #  A small subroutine is written at the location VBR+0x408-VBR+0x40B #  to handle the exception.  The Illegal Instruction Vector in #  the the vector table at VBR+0x10 is then pointed to it.  When the #  debugger encounters an illegal instruction, it jumps to this  #  subroutine, which ends with an RTE, then exits. #  Do not overwrite this area of memory otherwise the debugger may not  #  exit properly. # */   MEMORY {     flash1  (RX)   : ORIGIN = 0x00000000, LENGTH = 0x000400     flashconfig   (RX)   : ORIGIN = 0x00000400, LENGTH = 0x00000018       flash2  (RX)   : ORIGIN = 0x00000420, LENGTH = 0x003FBE0   vectorram(RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000400   sram (RWX)  : ORIGIN = 0x20000400, LENGTH = 0x00007C00   ipsbar  (RWX)  : ORIGIN = 0x40000000, LENGTH = 0x0 }   SECTIONS  {   .ipsbar : {} > ipsbar        .flash1 :   {   startup_s.obj (.text)   .   = ALIGN(0x10);       } > flash1        .flashconfig :   {   flash_config_s.obj (.text)     } > flashconfig             .flash2 :   {   .   = ALIGN(0x10);   *(.text)   .   = ALIGN(0x10);     *(.rodata)   ___DATA_ROM   = .;     } > flash2                 .data : AT(___DATA_ROM)    {   ___DATA_RAM    = . ;           *(.exception)   .              = ALIGN(0x10);   __exception_table_start__ = .;      EXCEPTION   __exception_table_end__   = .;     ___sinit__     = .;      STATICINIT           *(.data)   .              = ALIGN (0x10);   ___DATA_END    = .;     __START_SDATA  = .;         *(.sdata)   .              = ALIGN (0x10);   __END_SDATA    = .;     __SDA_BASE     = .;   .              = ALIGN(0x10);   } > sram     .bss :   {   . = ALIGN(0x10);   __START_SBSS = .;   *(.sbss)   *(SCOMMON)   __END_SBSS   = .;     . = ALIGN(0x10);   __START_BSS  = .;   *(.bss)   *(COMMON)   __END_BSS    = .;         ___BSS_START = __START_SBSS;         ___BSS_END   = __END_BSS;         . = ALIGN(0x10);     } >> sram     ___FLASH = ADDR(.flash1);   ___FLASH_SIZE = 0x00040000;   ___SRAM = 0x20000000;   ___SRAM_SIZE = 0x00008000;     ___VECTOR_RAM = ___SRAM;   ___IPSBAR = ADDR(.ipsbar);       __S_romp        = 0;        ___SP_SIZE      = 0x1000;   ___HEAP_START = .;   ___HEAP_END = ___SRAM + ___SRAM_SIZE - ___SP_SIZE;   ___SP_END = ___HEAP_END;   ___SP_INIT = ___SP_END + ___SP_SIZE;   ___PC_INIT      = ___FLASH + 0x8;     ___heap_addr = ___HEAP_START;   ___heap_size = ___HEAP_END - ___HEAP_START ;   __SP_INIT = ___SP_INIT; }

 

Thanks for your time,

ssinfod

Outcomes