We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
It is a bank code project, total 16 banks and 512K byte extern rom. there are two large size of const arrays which both are larger than 10KByte. Using LX51 linker. I definded these two arrays as below:
code const unsigned char font_data_1[] ={......}; code const unsigned char font_data_2[] ={......};
("......" is standing for initialization code) the linking information is: *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: CONST SEGMENT: ?CO?FONT LENGTH: 002800H *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: CONST SEGMENT: ?CO?FONT_4C LENGTH: 002774H *** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?CO?FONT *** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMENT SEGMENT: ?CO?FONT_4C Program Size: data=82.0 xdata=2555 const=26092 code=43755 Target not created How to specify these two arrays in rom? by enlarge the const area or someway else?
You should use the far memory type.
See: http://www.keil.com/support/man/docs/c51/c51_le_farmem.htm
Example: C:\Keil\c51\Examples\FarMemory\1MB Constants on Classic 8051