Hello All,
I am trying to use the xdata of the Atmel 89C51RD2 chip but it seems not to be working. I have tried most of all the suggestion I search on this forum but non seems to work. There is definitely something I am not getting write.
Here is all I have done thus far
1. Changing the Start up code as follows
IDATALEN EQU 100H XDATASTART EQU 00H XDATALEN EQU 700H ; 1792 size PDATASTART EQU 0H PDATALEN EQU 0H ; Standard SFR Symbols ACC DATA 0E0H B DATA 0F0H SP DATA 81H DPL DATA 82H DPH DATA 83H AUXR DATA 8EH ; add SFR definition for AT89c51xD2 STARTUP1: ; enable on-chip xdata RAM for AT89c51xD2 MCU's ANL AUXR,#10H ;AUXR/Bit 1(clear to 0 to enable on-chip XRAM and set address 1792)
2. On the option for target window, I also checked the "Use On-Chip ROM" , "Use On-Chip XRAM" & "use multiple DPTRs registers".
3. I declead most of my data's with xdata. For example
void MUL (u8 *val_1,u8 *val_2) { u8_X R_val = 0xE1; u8 xdata V_val[16]; u8_X mask_b = 0x80; u16_X i; u8_X j; bit chk=0; ........ ........
I intend to declare most of my variable into Xdata, which I did, but I still have a lot of Address space overflow. How can I fix the issue. I am of the thought that there should still be space in Data since I am storing much variables into it, especially large arrays.
I checked the Data memory in the Map file to trace out where the excess might be. I found out that the size of the Xdata and Code in a given function matches the value in the mapfile. But for the data memory, I see some increase in the size, and I can possible find how that increase came about, afterall, I did not declear any variable in the data memory in the function.
*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?_INV_?CIPHER LENGTH: 0006H *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?_MUL_?ENCRYPT LENGTH: 0006H
Has anyone experience this before?
Thanks
View all questions in Keil forum