Kirk Humphries

Link errors on port from DP256 to DJ128

Discussion created by Kirk Humphries Employee on Jan 31, 2006

This message contains an entire topic ported from a separate forum. The original message and all replies are in this single message. We have seeded this new forum with selected information that we expect will be of value to you as you search for answers to your questions.

 

Posted: Mon Jun 13, 2005  2:51 pm

 

I'm using Codewarrior 2.0 and am doing my development with a DP256 part. The production version won't need all the bells and whistles of the DP256 and so I'm trying to re-build for the DJ128. I've included the DJ128 rather than DP256 c and h files and reduced the available pages (in prm file) to match the DJ128.

 

Problem is I'm getting link errors that I don't know how to troubleshoot. The errors look like this: "ERROR L1100: Segments .absSeg265 (0x0) and .absSeg426 (0x0) overlap".

 

Where are the .absSegxxx entries generated and where are the "placement instructions" that are causing the problem?

 


 

Posted: Mon Jun 13, 2005  5:46 pm

 

Look at the linker messages: you can map the message to a warning. The linker option -WmsgSw1100 does this for you. Then you could check the .map file what is causing your problem. I guess you have two objects allocated to the address zero (using the absolute @0x0000 notation. In the map file you will get the name of the segment/object.

 


 

Posted: Tue Jun 14, 2005  2:25 pm

 

Looks like the messages were being generated because of the dual 8-bit/single 16-bit register definitions in the DJ processor's .h file. For example PORTA is defined as 8-bits at address 0 and PORTAB is defined as 16 bits also at address 0. When I created a "clean" DJ128 project in Codewarrior, I didn't get these errors because these messages had automatically been disabled in the linker dialog.

 

When I disable the linker messages in question, my project build and runs as expected on the DJ128. The .h file I'm using for the DP256 doesn't have these overlapping definitions and so it wasn't an issue before.

 

Wouldn't it be better to define PORTAB as a union with PORTA? I don't think it would cause these linker errors. Is it possible to nest union definitions? PORTA and PORTAB are already unions of bits.

 


 

Posted: Tue Jun 14, 2005  3:36 pm

 

Yes, using a union is the cleaner solution. This has actually been changed in the CW for HC12 V3.1 version, I'm not sure of CW for HC12 V3.0.

Outcomes