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

Issues with AT91M55800: init_serial, overlapping execution regions

Hi!
I am using the RealView MDK for a research project. The target device is AT91M55800A.
First, I created a project for it. I confirmed the default startup file and added a .c file to the project. I tried then to compile the program. It failed to do so, because init_serial and init_time were missing. I added these functions with empty bodies inside a .c file. This seemed to fix these errors.
Now, when I try to build it, I get these errors:

rv_project.axf: Error: L6221E: Execution region ER_IROM1 overlaps with Execution region RW_IRAM1.
rv_project.axf: Error: L6221E: Execution region ER_IROM1 overlaps with Execution region RW_IRAM2.
rv_project.axf: Error: L6221E: Execution region ER_IROM2 overlaps with Execution region RW_IRAM2.

It seems to me that the default startup file is not sufficient and something needs to be configured. I am new to this topic and I don't know what are these execution regions. Can you point me to a hint what options need to be set to make the project work. I guess that the memory must be properly divided into ROM and RAM but have no idea how to do it.

  • you probably failed to correctly configure your memory, as expected in uv3's "options for target", "target" tab. consult your hardware documentation for the correct memory ranges.

  • Hi again!
    I still have the problem with the overlapping memory regions.
    Here is the C code I am trying to compile:

    void init_serial(void) {}
    void init_time(void) {}
    
    int main(void)
    {
            while (1);
            return 0;
    }
    
    


    Upon linking I get these errors:

    Build target 'Target 1'
    compiling sample.c...
    sample.c(7): warning:  #111-D: statement is unreachable
    linking...
    ARM_test4.axf: Error: L6221E: Execution region ER_IROM1 overlaps with Execution region RW_IRAM2.
    ARM_test4.axf: Error: L6221E: Execution region ER_IROM2 overlaps with Execution region RW_IRAM2.
    Target not created
    


    I checked the Target tab in the project option - the default setting includes an on-chip RAM starting from 0x0 to 0x2000 - that makes 8K.
    Then I looked at the Linker tab - the option Use memory layout from Target dialog is disabled and I cannot turn it on. Both the R/O and the R/W base there are 0x0.
    It seems to me that the Target tab doesn't affect the error message. When I changed the R/W base in the linker tab, I got different error - namely, that the image is too large (~64K) for this version.
    Now I am literally frustrated, because the default settings do not work for a simple C program. I read the device documentation and it says that AT91M55800A has off-chip RAM starting at 0x00300000 with the size 8K. I have no idea where I could enter this data. I don't understand what is wrong with the default options - it is supposed to work, right?
    Could it be, that the version of Keil I use, might be causing these problems? It is the Evaluation version and the compiler is limited to 16K code. But my code is way less than that.
    I will appreciate any help!

  • the option Use memory layout from Target dialog is disabled and I cannot turn it on. Both the R/O and the R/W base there are 0x0.

    without getting into too much detail - this must be the source of the problem. A few facts:

    R/O Base
    Set the address for constant and code region
    containing the RO output section. The address must be word-aligned. If is not specified,
    the default RO base address is 0x8000. The R/O Base specifies also the initial program entry
     address.
    
    R/W Base
    Set the address for variable region containing
    the RW and ZI output sections. The address must
     be word-aligned
    

  • I have no idea where I could enter this data

    that belong in the "Target" tab, RAM section.

  • I tried there - no effect. As I said, the option in the linker to use the layout in the Target tab does not work (it is gray) and I cannot make it to work. It seems that whatever I write in the Target tab, it has no effect on the compilation? The documentation mentions that the Evaluation version does not work with sophisticated scatter files? Could be this a problem? I am not using a scatter file, the option for it in the Linker tab is disabled, too. I even don't know what a scatter file is. Anyway...
    I set the R/W base from the Linker tab to be 0x00300000 and got this as a result:

    ARM_test4.axf: error: L6047U: The size of this image (67972 bytes) exceeds the maximum allowed for this version of the linker
    

  • Any news about this AT91M55800A issue ?

    I'm having the same problem.

    I don't know you, but I'm working with the demo version, don't know if that's the cause of "use memory layout from target dialog" being disabled.

    I will have soon a full purchased version, meybe this checkbox will be enabled in the full version, and maybe it will work fine, but I expected to evaluate it first with the demo version.

    Thank you.

  • This button is definitely enabled with the full MDK version, it is disabled in the eval version.

  • Does this mean, that the Evaluation version of MDK cannot build projects for AT91M55800?
    If this is the case, what alternative would you recommend me to try?