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.
Hello!! I am trying to program a code for my project. But, after building the code in Keil uVision4, I am getting following errors:
*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?GEOFENCE LENGTH: 0066H *** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT SYMBOL: LATITUDE2 SEGMENT: ?DT?GEOFENCE Program Size: data=111.4 xdata=0 code=505 Target not created
Can anybody help me in this problem?
Yes. But first, you have to tell us what makes your project different from the other projects where people have posted here about the data segment overflowing.
Have you spent time checking the datasheet for your processor? Do you know what processor it is? Do you know how much RAM (and of which types) your processor has? How does the amount of RAM in the processor correlate with the amount of RAM you actually need? What would be suitable steps to get a balance between needed amount of RAM and available amount of RAM?
What help, exactly, do you need?
Do you know what the word "overflow" means?
*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?GEOFENCE LENGTH: 0066H
The controller I am using is 89V51RD2. It has got 64kB of code flash & 1kb of RAM. I want to use this controller for the project "Vehicle Security using GPS & GSM" I think this controller has got sufficient memory for storing data from GPS & GSM Modem. Still, I am having this problem.
I am currently using the controller(89V51RD2) which has 64kb of Flash memory & 1kb of RAM. These are sufficient for my application "Vehicle Security using GPS & GSM". But, if I am right, then according to the word "overflow", it means that the controller does not have enough memory for programming.
Since the error message is coming even after giving the device name to the compiler, I am not able to understand what exactly is getting wrong.
You where told what the error means. There is no code posted, so what else do you expect? Do you have @ qualified variables? ASM Modules ect that will cause a problem with the link?
Note you 1K of RAM is most likley part in XData and part in Data
What Andrew has pointed out to you more than once is the fact that you are overflowing your data space. Look at your device user manual for data memory, idata memory, SFR memory and XRAM. Your 1K of RAM probably exist as XRAM, not data memory.
Look at your 'Getting Started Manual' for examples for implicit and explicit memory addressing. Always use XRAM for arrays and large structs. Use the data memory for automatics or small vars that require rapid access.
Bradford
The Linker is clearly telling you otherwise!
It does not matter what you think - you need to check carefuly and verify for sure! The compiler Listing output files give details of the memory usage of your source modules...
As already noted, the 8051 has multiple, distinct memory areas - so you need to pay attention to how you use them.
You need to spend (some more) time in basic study of the 8051 architecture, and the Keil C51 tools:
http://www.8052.com/tutorial http://www.keil.com/books/8051books.asp http://www.keil.com/support/man_c51.htm In particular http://www.keil.com/support/man/docs/c51/c51_le_memareas.htm
In your Keil installation, look for a file named GS51.CHM (was a PDF in older versions); it is the Getting Started Guide - as the name suggests, this is an important document for you to study as a beginner! Be sure to follow through the worked examples!
Note also the Application Notes and Examples at http://www.keil.com/support/ and from your chip manufacturer
Note you 1K of RAM is most likley part in XData and part in Data right for NXP Your 1K of RAM probably exist as XRAM, not data memory. wrong for NXP
the many memory spaces of the '51 has led to many interpretations of how to "sell" the memory size.
Erik
"the many memory spaces of the '51 has led to many interpretations of how to "sell" the memory size."
None of them probably wrong. It's always the users task to read through the datasheets/user manuals and learn what they have, what it can do and what it can not do. Assumption is the mother of all *** ups.
The usual way to sell anything is to quote it so as to give the biggest number possible.
In the case of 8051 RAM, that usually means adding up everything and quoting the sum.
As always, and as has already been noted, it is up to the reader to take care to find out what the number actually means!