This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Using external ram for RW

Hello Sir,

I am using LPC2214 on which external ram is configured. In my program i have used internal ram(16K) for only .data section and used external ram (128K)for the .bss section. I am not able to configure the startup.s. I am getting warnings like below.

test.sct(27): warning: L6314W: No section matches pattern eeprom.o(ZI).
test.sct(27): warning: L6314W: No section matches pattern eeprom.o(RW).
test.sct(31): warning: L6314W: No section matches pattern init_Mar2014.o(ZI).
test.sct(31): warning: L6314W: No section matches pattern init_Mar2014.o(RW).
Program Size: Code=146904 RO-data=52 RW-data=224 ZI-data=92872

  • As it's complaining about the scatter file, perhaps you can paste that between some PRE tags for review?

    Did you create the file yourself, or use the setting's user interface? What settings do you have check/enabled/set?

    My guess is that you don't have the right object/section associativity, but assume we're not all empaths, and you need to provide more specific context.

  • No i have not created the scatter file, it is generated by the compiler itself. Should I create it? Then what is the procedure and what changes i should make?

    In the options for target dialog default start size startup
    IROM1 Enabled 0x0 - 0x40000 Enabled

    default start size Noinit
    IRAM1 Enabled 0x40000000 0x4000 Enabled
    RAM1 Enabled 0x81000000 0x20000 Disabled

    In linker dialog box

    Use memory form target dialog box is enabled Report 'might fail' conditions as errors enabled

    ; *************************************************************
    ; *** Scatter-Loading Description File generated by uVision ***
    ; *************************************************************

    LR_IROM1 0x00000000 0x00040000 { ; load region size_region ER_IROM1 0x00000000 0x00040000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) Startup.o (+RO) config_data_GLE.o (+RO) config_FSU_data_26May2014.o (+RO) eeprom.o (+RO) general_function.o (+RO) GUI_interface.o (+RO) i2c.o (+RO) init_Mar2014.o (+RO) main.o (+RO) relay.o (+RO) supporting_functions.o (+RO) timer.o (+RO) .ANY (+RO) } RW_RAM1 0x81000000 0x0001F400 { ; RW data Startup.o (+ZI +RW) config_data_GLE.o (+ZI +RW) config_FSU_data_26May2014.o (+ZI +RW) eeprom.o (+ZI +RW) general_function.o (+ZI +RW) GUI_interface.o (+ZI +RW) i2c.o (+ZI +RW) init_Mar2014.o (+ZI +RW) main.o (+ZI +RW) relay.o (+ZI +RW) supporting_functions.o (+ZI +RW) timer.o (+ZI +RW) .ANY (+RW +ZI) } RW_IRAM1 0x40000000 UNINIT 0x00004000 { .ANY (+RW +ZI) }
    }

  • Did you remember the PRE tags, as specified in the description directly above the message input box?

  • No i have not created the scatter file, it is generated by the compiler itself. Should I create it? Then what is the procedure and what changes i should make?

    In the options for target dialog default start size startup
    IROM1 Enabled 0x0 - 0x40000 Enabled

    default start size Noinit
    IRAM1 Enabled 0x40000000 0x4000 Enabled
    RAM1 Enabled 0x81000000 0x20000 Disabled

    In linker dialog box

    Use memory form target dialog box is enabled Report 'might fail' conditions as errors enabled

    ; *************************************************************
    ; *** Scatter-Loading Description File generated by uVision ***
    ; *************************************************************

    LR_IROM1 0x00000000 0x00040000 { ; load region size_region ER_IROM1 0x00000000 0x00040000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) Startup.o (+RO) config_data_GLE.o (+RO) config_FSU_data_26May2014.o (+RO) eeprom.o (+RO) general_function.o (+RO) GUI_interface.o (+RO) i2c.o (+RO) init_Mar2014.o (+RO) main.o (+RO) relay.o (+RO) supporting_functions.o (+RO) timer.o (+RO) .ANY (+RO) } RW_RAM1 0x81000000 0x0001F400 { ; RW data Startup.o (+ZI +RW) config_data_GLE.o (+ZI +RW) config_FSU_data_26May2014.o (+ZI +RW) eeprom.o (+ZI +RW) general_function.o (+ZI +RW) GUI_interface.o (+ZI +RW) i2c.o (+ZI +RW) init_Mar2014.o (+ZI +RW) main.o (+ZI +RW) relay.o (+ZI +RW) supporting_functions.o (+ZI +RW) timer.o (+ZI +RW) .ANY (+RW +ZI) } RW_IRAM1 0x40000000 UNINIT 0x00004000 { .ANY (+RW +ZI) }
    }

  • You have read the instructions directly above the message input box, haven't you? The information about the PRE tags are there for a reason.

    Or do you avoid the tags of ethical, political or religious reasons?

  • No i have not created the scatter file, it is generated by the compiler itself. Should I create it? Then what is the procedure and what changes i should make?

    In the options for target dialog default start size startup
    IROM1 Enabled 0x0 - 0x40000 Enabled

    default start size Noinit
    IRAM1 Enabled 0x40000000 0x4000 Enabled
    RAM1 Enabled 0x81000000 0x20000 Disabled

    In linker dialog box

    Use memory form target dialog box is enabled Report 'might fail' conditions as errors enabled

    ; *************************************************************
    ; *** Scatter-Loading Description File generated by uVision ***
    ; *************************************************************

    LR_IROM1 0x00000000 0x00040000 { ; load region size_region ER_IROM1 0x00000000 0x00040000
    {
                                     ; load address = execution address
    *.o (RESET, +First)
    *(InRoot$$Sections)
    Startup.o (+RO)
    config_data_GLE.o (+RO)
    config_FSU_data_26May2014.o (+RO)
    eeprom.o (+RO)
    general_function.o (+RO)
    GUI_interface.o (+RO)
    i2c.o (+RO)
    init_Mar2014.o (+RO)
    main.o (+RO)
    relay.o (+RO)
    supporting_functions.o (+RO)
    timer.o (+RO) .ANY (+RO)
    }
    
     RW_RAM1 0x81000000 0x0001F400 { ;RW data
    
    Startup.o (+ZI +RW)
    config_data_GLE.o (+ZI +RW)
    config_FSU_data_26May2014.o (+ZI +RW) e
    eprom.o (+ZI +RW)
    general_function.o (+ZI +RW)
    GUI_interface.o (+ZI +RW)
    i2c.o (+ZI +RW)
    init_Mar2014.o (+ZI +RW)
    main.o (+ZI +RW)
    relay.o (+ZI +RW)
    supporting_functions.o (+ZI +RW)
    timer.o (+ZI +RW)
    .ANY (+RW +ZI)
    }
    
    RW_IRAM1 0x40000000 UNINIT 0x00004000 {
    .ANY (+RW +ZI)
    }
    }
    

  • Did your real scatter file really look like this - with no identation?

    Reposting the same text after the web server have already muched on the text doesn't give the same result as if you are careful and post the data directly from the scatter file - and look at the preview.

    For example:

    config_FSU_data_26May2014.o (+ZI +RW) e   <=== this e shouldn't be here
    eprom.o (+ZI +RW)    <=== and this file should be eeprom.o, shouldn't it?
    

    Remember that if you don't post the verbatime, and exact, contents of your scatter file, then the line numbers you mention in your first post does not make sense.

    One thing I'm a bit confused about is if Keil has changed their tools. You say you didn't modify the scatter file. But it contains a huge list of files. They normally manage almost everything with just the rules

        *.o (RESET, +First)
        * (InRoot$$Sections)
        .ANY (+RO)
    


    and

        .ANY (+RW +ZI)
    


    without listing any actual object file names. Explicit object file names is what you need to list when you want to force a specific order or force a specific file to have the content in a specific memory region.