I have had a rather ugly problem caused due to the optimization. I am reading data from a fifo. The read port is at address 0x8200 (read only access). It also has a read reset port. Its address is also 0x8200 (both xdata) (write onle access). When I declare the varables for accessing the fifo like this:
xdata uchar fifo_data _at_ 0x8200; xdata uchar fifo_rres _at_ 0x8200;
xdata uchar fifo_data _at_ 0x8200; #define fifo_rres fifo_data
fifo_rres = 0xff; // reset fifo read jpg_adr = 1; // set jpg file address to the next address to be read fbuf_start = 0; // set buffer start pointer to zero fbuf_in = 1; // set buffer input pointer to next free byte in buffer fbuf_pos = 0; // set buffer read pointer to zero fbuf_startadr = 0; // set buffer startadress to zero fbuf[0] = fifo_data; // read first byte from jpg file
To flesh out a bit;
volatile xdata uchar fifo_data _at_ 0x8200; #define fifo_rres fifo_data