56F807, CW8.3, LCF starts xRAM @ 0x0030 \ 0x0040, Why?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

56F807, CW8.3, LCF starts xRAM @ 0x0030 \ 0x0040, Why?

504 Views
j___
Contributor IV

I created two 56F807 projects using CW 8.3 stationary, one with Project Expert, one without.

The project made with PE, starts xRAM at 0x0040.

The project made without PE, start xRAM at 0x0030.

Why is the RAM not started at 0x0000?

Also, what are the compiler regs shown in the non-PE memory definitions?

Processor Expert LCF

MEMORY {
        # I/O registers area for on-chip peripherals
        .x_Peripherals (RW)   : ORIGIN = 0x1000, LENGTH = 0
        .x_CoreRegs    (RW)   : ORIGIN = 0xFF80, LENGTH = 0

        # List of all sections specified in the "Build options" tab
        #Internal vector boot area.
        .p_Interruptsboot  (RWX) : ORIGIN = 0x0000F800, LENGTH = 0x0004
        .p_Interrupts  (RWX) : ORIGIN = 0x00000000, LENGTH = 0x00000080
        .p_Code  (RWX) : ORIGIN = 0x00000080, LENGTH = 0x0000EF80
        .x_Data  (RW) : ORIGIN = 0x00000040, LENGTH = 0x00000FC0  #<<<---- Starts at 0x40
        .x_CWRegisters  (RW) : ORIGIN = 0x00000030, LENGTH = 0x00000010

        #Other memory segments
        .x_internal_ROM  (RW)  : ORIGIN = 0x00002000, LENGTH = 0x2000
        .p_internal_RAM  (RWX) : ORIGIN = 0x0000F000, LENGTH = 0x0800
}

Non-PE LCF

MEMORY
{
    .p_boot_flash_1       (RX)  : ORIGIN = 0x0000, LENGTH = 0x0004
    .p_interrupts_ROM     (RX)  : ORIGIN = 0x0004, LENGTH = 0x007C
#   .p_flash_ROM_A        (RX)  : ORIGIN = 0x0080, LENGTH = 0x7F80
#   .p_flash_ROM_B        (RX)  : ORIGIN = 0x8000, LENGTH = 0x7000
    .p_flash_ROM          (RX)  : ORIGIN = 0x0080, LENGTH = 0xEF80
    .p_internal_RAM       (RWX) : ORIGIN = 0xF000, LENGTH = 0x0800
    .p_boot_flash_2       (RX)  : ORIGIN = 0xF800, LENGTH = 0x0000
    .x_compiler_regs_iRAM (RW)  : ORIGIN = 0x0030, LENGTH = 0x0010  <<<---- Starts at 0x30  
    .x_internal_RAM       (RW)  : ORIGIN = 0x0040, LENGTH = 0x0FC0
    .x_peripherals        (RW)  : ORIGIN = 0x1000, LENGTH = 0x0800
#   .x_reserved                 : ORIGIN = 0x1800, LENGTH = 0x0800
    .x_flash_ROM          (R)   : ORIGIN = 0x2000, LENGTH = 0x2000
    .x_external_RAM       (RW)  : ORIGIN = 0x4000, LENGTH = 0xBF80
    .x_core_regs          (RW)  : ORIGIN = 0xFF80, LENGTH = 0x0000
}

0 Kudos
1 Reply

393 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi, Jim,

Regarding your question about the X:0x0000 to X:0x002F, I am sure that the space from X:0x0000 to X:0x002F are internal RAM space, and is available and can be used by customer in Mode 0A.

But the CW compiler supports register variable, it uses the   .x_compiler_regs_iRAM (RW)  : ORIGIN = 0x0030, LENGTH = 0x0010 as register variables. Pls refer to the following figure from Targeting_56800cd.pdf located at:.......\Freescale\CodeWarrior for DSC56800E v8.3\Help\PDF

Because the space X:0x0030 to 0x003F are used for special utilization, the space from x:0x0000 to 0x2F is too small to be used, so we start from X:0x0040.

Hope  it can help you

BR

Xiangjun Rong

pastedImage_358.png

0 Kudos