Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] .tmpdata cant fit the section

Status
Not open for further replies.

dhakeparag81

Full Member level 2
Joined
Jun 6, 2012
Messages
131
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,298
Location
INDIA
Activity points
2,406
Hello there,


I m expanding my current project for that i have to add number of variables, but after adding some variables and code i tried to build and then come to know build not successful.
Linker report error
"Error - section '.tmpdata' can not fit the section. Section '.tmpdata' length=0x0000006a
Errors : 1
"
Is there any having faced this problem/know how to resolve it?
plz let me know or guide to find out solution.

I wrote code for pic18f87k22.



I have attached images of error.
 
Last edited by a moderator:

You could split the original table/arrays you just added, turning easiest to linker fit it in smaller parts in the available section.
 

Tnx for reply,

Actually i wrote an expression which is very long.
so i split it up into two parts it solve my problem.

Code:
	if((data_array[0] == data_read_eeprom(0x0010)) && (data_array[1] == data_read_eeprom(0x0020))&& (data_array[2] == data_read_eeprom(0x0030)) 
		&&	(data_array[3] == data_read_eeprom(0x0070)) &&	(data_array[4] == data_read_eeprom(0x0040)) && (data_array[6] == data_read_eeprom(0x0080))
		&& (data_array[7] == data_read_eeprom(0x0090)) && (data_array[8] == data_read_eeprom(0x00A0)) && (data_array[11] == data_read_eeprom(0x00B0)) && 
		(data_array[12] == data_read_eeprom(0x00C0)) && (data_array[13] == data_read_eeprom(0x00D0)) && (data_array[9] == data_read_eeprom(0x00E0))&& 
		(data_array[15] == data_read_eeprom(0x00F0))&& (data_array[16] == data_read_eeprom(0x00F2))&& (data_array[17] == data_read_eeprom(0x00F4))&& 
		(data_array[18] == data_read_eeprom(0x00F6)) && (data_array[19] == data_read_eeprom(0x00F8))&& (data_array[20] == data_read_eeprom(0x00FA))
		&& (data_array[21] == data_read_eeprom(0x00FC)) && (data_array[22] == data_read_eeprom(0x00FE))&& (data_array[24] == data_read_eeprom(0x0012))
		&& (data_array[25] == data_read_eeprom(0x0014)) && (data_array[26] == data_read_eeprom(0x0120)) && (data_array[27] == data_read_eeprom(0x0122))&& 
		(lift_park_time == data_read_eeprom(0x0124)) && (data_array[29] == data_read_eeprom(0x0126)) && (data_array[30] == data_read_eeprom(0x0128)) && 
		(data_array[31] == data_read_eeprom(0x0130)) && (data_array[32] == data_read_eeprom(0x0132)) && (data_array[33] == data_read_eeprom(0x0134)) && 
		(data_array[34] == data_read_eeprom(0x0136))&& (data_array[35] == data_read_eeprom(0x0138)) && (data_array[36] == data_read_eeprom(0x0140)) && 
		(data_array[43] == data_read_eeprom(0x0154)) && (data_array[44] == data_read_eeprom(0x0156)) && (data_array[59] == data_read_eeprom(0x0164))&& 
		(data_array[60] == data_read_eeprom(0x0166)) && (data_array[61] == data_read_eeprom(0x0168)) && (data_array[62] == data_read_eeprom(0x0170)) && 
		(data_array[63] == data_read_eeprom(0x0172)) && (data_array[64] == data_read_eeprom(0x0174)) && (data_array[65] == data_read_eeprom(0x0176)) && 
		(data_array[66] == data_read_eeprom(0x0178)) && (data_array[67] == data_read_eeprom(0x0180)) && (data_array[68] == data_read_eeprom(0x0182)) &&
		 (data_array[69] == data_read_eeprom(0x0184)) && (data_array[70] == data_read_eeprom(0x0186)) && (data_array[71] == data_read_eeprom(0x0188)) && 
		 (data_array[72] == data_read_eeprom(0x0190)) && (data_array[73] == data_read_eeprom(0x0192)) && (data_array[74] == data_read_eeprom(0x0194)) &&
		  (data_array[75] == data_read_eeprom(0x0196)) && (data_array[76] == data_read_eeprom(0x0198)))
		  {
				data_array[10]=0x0002;
			
	}
	
	else
		data_array[10] = 0x0006;  
	}

solution

	if((data_array[0] == data_read_eeprom(0x0010)) && (data_array[1] == data_read_eeprom(0x0020))&& (data_array[2] == data_read_eeprom(0x0030)) 
		&&	(data_array[3] == data_read_eeprom(0x0070)) &&	(data_array[4] == data_read_eeprom(0x0040)) && (data_array[6] == data_read_eeprom(0x0080))
		&& (data_array[7] == data_read_eeprom(0x0090)) && (data_array[8] == data_read_eeprom(0x00A0)) && (data_array[11] == data_read_eeprom(0x00B0)) && 
		(data_array[12] == data_read_eeprom(0x00C0)) && (data_array[13] == data_read_eeprom(0x00D0)) && (data_array[9] == data_read_eeprom(0x00E0))&& 
		(data_array[15] == data_read_eeprom(0x00F0))&& (data_array[16] == data_read_eeprom(0x00F2))&& (data_array[17] == data_read_eeprom(0x00F4))&& 
		(data_array[18] == data_read_eeprom(0x00F6)) && (data_array[19] == data_read_eeprom(0x00F8))&& (data_array[20] == data_read_eeprom(0x00FA))
		&& (data_array[21] == data_read_eeprom(0x00FC)) && (data_array[22] == data_read_eeprom(0x00FE))&& (data_array[24] == data_read_eeprom(0x0012))
		&& (data_array[25] == data_read_eeprom(0x0014)) && (data_array[26] == data_read_eeprom(0x0120)) && (data_array[27] == data_read_eeprom(0x0122))&& 
		(lift_park_time == data_read_eeprom(0x0124)) && (data_array[29] == data_read_eeprom(0x0126)) && (data_array[30] == data_read_eeprom(0x0128)) && 
		(data_array[31] == data_read_eeprom(0x0130)) && (data_array[32] == data_read_eeprom(0x0132)) && (data_array[33] == data_read_eeprom(0x0134)) && 
		(data_array[34] == data_read_eeprom(0x0136))&& (data_array[35] == data_read_eeprom(0x0138)) && (data_array[36] == data_read_eeprom(0x0140)) && 
		(data_array[43] == data_read_eeprom(0x0154)) && (data_array[44] == data_read_eeprom(0x0156)) && (data_array[59] == data_read_eeprom(0x0164))&& 
		(data_array[60] == data_read_eeprom(0x0166)))
	{
		if((data_array[61] == data_read_eeprom(0x0168)) && (data_array[62] == data_read_eeprom(0x0170)) && 
		(data_array[63] == data_read_eeprom(0x0172)) && (data_array[64] == data_read_eeprom(0x0174)) && (data_array[65] == data_read_eeprom(0x0176)) && 
		(data_array[66] == data_read_eeprom(0x0178)) && (data_array[67] == data_read_eeprom(0x0180)) && (data_array[68] == data_read_eeprom(0x0182)) &&
		 (data_array[69] == data_read_eeprom(0x0184)) && (data_array[70] == data_read_eeprom(0x0186)) && (data_array[71] == data_read_eeprom(0x0188)) && 
		 (data_array[72] == data_read_eeprom(0x0190)) && (data_array[73] == data_read_eeprom(0x0192)) && (data_array[74] == data_read_eeprom(0x0194)) &&
		  (data_array[75] == data_read_eeprom(0x0196)) && (data_array[76] == data_read_eeprom(0x0198)))
		  {
				data_array[10]=0x0002;
			}
			else
			{
				data_array[10] = 0x0006;
			}	
		
	}
	
	else
		data_array[10] = 0x0006;  
	}
 

Doesn't look as a good approach.
You should correct your program logic or could use an approach with loop:

Code:
static const rom struct {
	unsigned char da;
	unsigned char ee;
//pairs of data_array[da] and data_read_eeprom(ee) indexes
} X1[] = {
	0,0x10,
	1,0x20,
	2,0x30,
	3,0x70,
	...
	27,0x0122,
	...
	76,0x198
};

char if_equals(void){
        short unsigned i;
	for(i=0;i<sizeof(X1)/sizeof(X1[0]);i++)
		if(data_array[X1[i].da] != data_read_eeprom(X1[i].ee)
			return 0;
	return 1;
}


...

	if(if_equals() && lift_park_time == data_read_eeprom(0x0124))
		data_array[10]=0x0002;
	else
		data_array[10] = 0x0006;
 
Last edited:

Tnx Xenos,

But u should use
Code:
unsigned int ee;
Instead of
Code:
unsigned char ee
see the address limit crosses the char range.

i didn't think about loop that time.
If i uses loop is that reduces my code size?
 

Yes size will get smaller, because you reduce a lot of eeprom_read function calls and a lot of inline comparisions.
Of cource you loose a little bit in speed.

If you have a known assignment of addresses in data array and eeprom (like a mathematical function), then you could even eliminate the static const rom array (this could be a better approach).

With eeprom and array addressing you are right. You should use 2 bytes sizes.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top