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

errormsg A108

Hi all,
here comes a question of a beginner with an ARM cpu and the
Keil ide:

I am using uVision 3 v3.21 ARM evaluation
This is my sourcecode, a single assembly file, the only file
in the project. The target is a generic ARM7 cpu, little endian mode.
Plain ARM code, no thumb instructions. (***)

AREA MY_CODE, CODE, AT 0x02003cb8
// strange looking adress, but i have to use it, because this is the
// address in RAM, where a monitor resides and this particular address
// is normally used by a function of the monitor, that i have chosen
// as a hook to bring in my own code-snippets

mov R1, #0x2100000 // beginn 2nd MB of RAM (not used, not protected)
mov R2, #0x2100010 // end of range to fill <<<--- gives errormsg

fill_loop:
str R1, [R1], #4 // store current value of R1, incr R1 by 4
cmp R1, R2 // check if end of range to be filled
blt fill_loop // if not, write another word
nop // done.

the error msg is:
ramfill.s(27): error A108: VALUE OUT OF RANGE

strange enough, but it comes even better:
the error msg is glued to the loading of R2.
When i change the lines loading R1 and R2,
the errormsg blames line 26 instead of line 27..

Does the assembler think, that R2 is some kind of an 8bit register?

Please give some advice.


(***)
One of the demo projects (hello for LPC2100) does compile in the unchanged
mode of the project (thumb mode), but gives an error when switching to plain
ARM instruction set in project settings.
The error msg in this case is
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: putchar?A
MODULE: F:\KEIL_ARM\ARM\LIB\CAL.LIB (putchar)
DEFINED: .\Obj\Serial.obj (Serial)
*** WARNING L23: UNRESOLVED EXTERNAL SYMBOLS
Program Size: data=1168 const=20 code=270
Target not created

Any idea?