|ARM Technical Support Knowledge Articles|
Applies to: C51 C Compiler
Information in this article applies to:
I need many constants in my project and for this reason I initialize them as follows (This is just and example, the real initialization is a lot more complex and longer):
const char far * text1= "Text1"; const char far * text2= "Text2";
However, it appears that these constants are still in the CODE space. During linkage I get the following error:
*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: CODE SEGMENT: ?CO?MAIN
How can I put the constants into the 'const far' memory type?
There are two solutions to this problem. The STRING compiler directive locates strings into various memory classes. At the beginning of your source file, specify:
#pragma STRING (far) // locate string constants into 'far const' memory
You may define the explicit memory type of the constants by using another variable as shown below:
const char far text1a= "Text1"; const char far text2a= "Text2"; const char far * far text1= text1a; const char far * far text2= text2a;
You may also look to the example ConstFar in the folder Keilc51ExamplesFarMemory1MB Constants on Classic 8051. This shows you some techniques that might be useful for you.
Article last edited on: 2005-07-15 09:53:35
Did you find this article helpful? Yes No
How can we improve this article?