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?