Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
02/26/09 05:15
Read: times


 
#162857 - XDATA MEMORY > in .m51 file
Hi,

I am using 128K EPROM in my project with 2 code banks. I am also using 64K RAM.
The parameters generated as per keil listing file :

	BL51 BANKED LINKER/LOCATER V6.15, INVOKED BY:
	C:KEILC51BINBL51.EXE COMMON {.outputSTARTUP.obj}, COMMON {.outputL51_BANK.obj}, COMMON {.outputmic40.obj}, BAN
	>> K0 {.outputLine40.obj}, BANK1 {.outputprint40.obj} TO .output96v1 BANKAREA (0X2E10, 0XFFFF) REGFILE (.output9
	>> 6v1.ORC) PRINT (.Listing96v1.m51) RAMSIZE (256) BANK0 (?CO?LINE40 (0X8000), ?PR?MAIN?LINE40 (0XFF00)) BANK1 (?CO?PR
	>> INT40 (0X8000))  
 
 

The modules are : Common - ?CO?MIC40
Bank0 - ?CO?LINE40
Bank1 - ?CO?PRINT40

	LINK MAP OF MODULE:  .output96v1 (?C_STARTUP)


            TYPE    BASE      LENGTH    RELOCATION   SEGMENT NAME
            -----------------------------------------------------

            * * * * * * *   D A T A   M E M O R Y   * * * * * * *
            REG     0000H     0008H     ABSOLUTE     "REG BANK 0"
            REG     0008H     0008H     ABSOLUTE     "REG BANK 1"
            REG     0010H     0008H     ABSOLUTE     "REG BANK 2"
            REG     0018H     0008H     ABSOLUTE     "REG BANK 3"
            DATA    0020H     0002H     BIT_ADDR     ?BA?MIC40
            DATA    0022H     0008H     BIT_ADDR     ?BA?LINE40
            BIT     002AH.0   0002H.7   UNIT         ?BI?LINE40
            BIT     002CH.7   0002H.4   UNIT         ?BI?MIC40
                    002FH.3   0000H.5                *** GAP ***
            DATA    0030H     0020H     UNIT         _DATA_GROUP_
            DATA    0050H     0019H     UNIT         ?DT?MIC40
            IDATA   0069H     0001H     UNIT         ?STACK

            * * * * * * *  X D A T A   M E M O R Y  * * * * * * *
            XDATA   0000H     F625H     UNIT         ?XD?MIC40
            XDATA   F625H     079BH     UNIT         ?XD?LINE40
            XDATA   FDC0H     00C8H     UNIT         ?XD?PRINT40

            * * * * * * *   C O D E   M E M O R Y   * * * * * * *
 
 

-- and so on.


Q1. What does ' X D A T A M E M O R Y ' specify in the above listing?
Q2. How to manage between xdata variable defining in one module and using as 'extern' in other module.

For example, I defined xdata variables in my project as follows:

In common module(MIC40) header:

		typedef struct trunk_def
		{
			unsigned char enable;
			unsigned char id;
			unsigned char type;
			unsigned char count;
			unsigned char on_enable[2];		
			unsigned char off_enable[2];
			unsigned char cs_denied[12];
			unsigned char cs_allowed[12];
			unsigned char access[96];

		}T_GROUP;

		T_GROUP  xdata t_group[24];

		typedef struct alarm_time
		{
			unsigned char hrs;
			unsigned char mins;
			unsigned char secs;
			unsigned char day;
			unsigned char month;
			unsigned char year;
			unsigned char week;
			unsigned char alarm_applied;

		}ALARM_TIME;

		extern ALARM_TIME xdata alarm[96]; 

 
 

-----------------------
In banked modules:

		typedef struct trunk_def
		{
			unsigned char enable;
			unsigned char id;
			unsigned char type;
			unsigned char count;
			unsigned char on_enable[2];		
			unsigned char off_enable[2];
			unsigned char cs_denied[12];
			unsigned char cs_allowed[12];
			unsigned char access[96];

		}T_GROUP;

		extern T_GROUP  xdata t_group[24];

		typedef struct alarm_time
		{
			unsigned char hrs;
			unsigned char mins;
			unsigned char secs;
			unsigned char day;
			unsigned char month;
			unsigned char year;
			unsigned char week;
			unsigned char alarm_applied;

		}ALARM_TIME;

		ALARM_TIME xdata alarm[96]; 	


 


The structures and variables are created in the modules as per their frequency of usage.
Q.How will the compiler handle these?
Q.Should both definitions be first defined in common module and be defined as 'extern' in Banked modules?

thanks





No replies in thread

Back to Subject List