Hello All,
I have compiled legacy code in Keil 3 and generated lst,map,hex files.When the same legacy code is compiled in Keil5 I am able to see difference in code size const size etc in lst ,map,hex files while using LX51 Linker.
Could you please let us know what causes this differences in hex ,map, lst files apart from the compiler/Linker change?
Regards, Neil
If it's a different version of the compiler and linker (as it is bound to be between such different software release numbers), then it is only to be expected that the compiler and linker in those different versions would produce different executable code. It is not uncommon for compiler writers (such as Keil) to include fixes and enhancements in their code that in turn produces better executable code as a result.
If you want to maintain 100% identical code (as is the case for us), then you must ensure that exactly the same development environment is used.
When I use BL51 linker the output remains for Keil3 and Keil5 (hex,map), But when I use LX51 linker the output is different for keil3 and Keil5.
So it's likely that the linker is locating segments in a different order. A detailed comparison of the MAP file would probably tell you what.
If you really had the need/incentive/understanding, you might be able to come up with a link specification that orders the segments in the original order.
But if you get the same order with BL51, then I can't understand your concern. Simply stick with BL51.
We are having 5 projects/components 3 uses LX51 and 2 uses BL51 ,differences are observed in LX51 (3 components)
OK. In which case, I've given you what I think is the answer by telling you why there might be a difference. You might well see differences like this in a single step increment of any tool, so the fact you're seeing so few is a little surprise (to me), but there's nothing unreasonable happening.
It's up to you to decide the next step.