Hi All. Its hard for me to determine where to start asking my question. I understand you wont be able to tell me whats specifically wrong, but if you could help give me some ideas of issues to check, I would greatly appreciate it.
Ok, we have a project which consists of Intel 80c321, RAM, 256Eprom and a memory mapped FPGA. Originally, the project was compiled by Achimedes (bought by Keil). This project is well before my time and all the original engineers are gone.
I compile my code with no problems (other than a few expected compiler warnings). The system starts up which is apparent because I have a serial link to the device.
What does not appear to be happening is the proper interaction with the FPGA. I imagine there is an issue with my XDATA configuration. I was not sure if banking was used although I doubt it. If the banking were used shouldnt I expect HDATA in the map file?
I have not changed any code from the original source yet so that leads me to believe this is a 'setting' issue.
There are definitions like: static unsigned char xdata IOActuatorPort _at_ 0xB000;
Then we access them using:
unsigned char IOReadPort(unsigned int addr) { unsigned char *port; port = (unsigned char *) addr; /* Assign the address to the memory pointer. */ return(*port); /* Read the memory and return the value to caller. */ } void IOWritePort(unsigned int addr, unsigned char value) { unsigned char *port; port = (unsigned char *) addr; /* Assign the address to the memory pointer. */ *port = value; /* Write the data to the memory location. */ }
I have the source and a version that was compiled already (along with map file, etc) that works. Is there any comparison I can do between the old/new MAP files? I imagine not since this is a different version of compiler... no doubt it would be different.
Thanks in advance for any insight you can give me into this issue! Chris
port = (unsigned char *) addr;
Chris,
Read up on memory specific pointers and generic pointers in your Keil C51 manual and re-write this line based on your new understanding.
Your advice is DULLY noted! Hmm such a small lack of a keyword to destroy my project. All fixed!
I am still abit confused as to why this worked in the past. Different compiler perhaps?
Ouch, thats 'sposed to be DULY not DULLY. lol. I assure you it was not dull, I did a heel click when it worked.
Thanks again sir.
And just for those who might search this later the answer is:
unsigned char xdata *port;