This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

differences between compiler/linker versions

Hi,
I have inherited a project, with no handover, and little documentation, so am in a spot of bother, as I haven't done embedded work for 15 years! My question is a bit vague, but is as specific as I can make it at present.

Question - does moving to a newer compiler/linker version necessitate any reworking of the source code?

Background - I have a uVision project with a 80C51 target. I have the old obj, hex, compiler/linker output files, from which I can verify that I am using the same build parameters.

The old working hex is 87477 bytes, and was built from:

C51 COMPILER V7.50
MACRO ASSEMBLER A51 V7.10
BL51 BANKED LINKER/LOCATER V5.12

My recompiled hex is 87619 bytes, and was built from:

C51 COMPILER V7.05
MACRO ASSEMBLER A51 V7.04a
BL51 BANKED LINKER/LOCATER V5.03

My newly built version runs, and identifies itself as the correct version, on startup, but the serial comms is not functioning as expected, and the chip does not identify itself correctly to the Windows monitor application. My obj and hex differ slightly in size.
Needless to say, I don't have the older compiler.

Further info. Extract from previous working build

C51 COMPILER V7.05, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE BROWSE ORDER DEBUG OBJECTEXTEND

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1088    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----     129
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

----------------------------------------------------------

MACRO ASSEMBLER A51 V7.04a
OBJECT MODULE PLACED IN hw_mi.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE hw_mi.src PR(.\hw_mi.ls1) EP DEBUG

LOC  OBJ            LINE     SOURCE

                       1     ; .\hw_mi.SRC generated from: hw_mi.c
                       2     ; COMPILER INVOKED BY:
                       3     ;        C:\Keil\C51\BIN\C51.EXE hw_mi.c LARGE BROWSE ORDER DEBUG OBJECTEXTEND SRC(.\hw_mi.SRC)

----------------------------------------------------------

BL51 BANKED LINKER/LOCATER V5.03, INVOKED BY:
C:\KEIL\C51\BIN\BL51.EXE VAR_DEF.obj, com.obj, disp_op.obj, entry.obj, hw_mi.obj, INIT.obj, MAIN.obj, MIDNIGHT.obj, OP_D
>> ISW.obj, OP_FILLW.obj, OP_LOADW.obj, OP_MIX.obj, op_prep.obj, op_run.obj, OP_TRANS.obj, OP_WAIT.obj, UTILS.obj TO MI3
>> 21 RAMSIZE (256) XDATA (0X0100-0XFFFF)
MEMORY MODEL: LARGE WITH FLOATING POINT ARITHMETIC
.
Program Size: data=216.0 xdata=60178 code=30433
LINK/LOCATE RUN COMPLETE.  2 WARNING(S),  0 ERROR(S)


Extract from my build

C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE BROWSE ORDER DEBUG OBJECTEXTEND

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1087    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----     129
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

-----------------------------------------------------------

MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN hw_mi.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE hw_mi.src PR(.\hw_mi.ls1) EP DEBUG

LOC  OBJ            LINE     SOURCE

                       1     ; .\hw_mi.SRC generated from: hw_mi.c
                       2     ; COMPILER INVOKED BY:
                       3     ;        C:\Keil\C51\BIN\C51.EXE hw_mi.c LARGE BROWSE ORDER DEBUG OBJECTEXTEND SRC(.\hw_mi.SRC)

----------------------------------------------------------

BL51 BANKED LINKER/LOCATER V5.12, INVOKED BY:
C:\KEIL\C51\BIN\BL51.EXE VAR_DEF.obj, com.obj, disp_op.obj, entry.obj, hw_mi.obj, INIT.obj, MAIN.obj, MIDNIGHT.obj, OP_D
>> ISW.obj, OP_FILLW.obj, OP_LOADW.obj, OP_MIX.obj, op_prep.obj, op_run.obj, OP_TRANS.obj, OP_WAIT.obj, UTILS.obj TO MI3
>> 21 RAMSIZE (256) XDATA (0X0100-0XFFFF)
MEMORY MODEL: LARGE WITH FLOATING POINT ARITHMETIC
.
Program Size: data=216.0 xdata=60178 code=30491
LINK/LOCATE RUN COMPLETE.  2 WARNING(S),  0 ERROR(S)

Many thanks,
Nigel Frost

0