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

C51 V9.00 Linker Problem

Hi

We want to use the C8051F53xA MCU family from SiLabs for a new project. Therefore we installed the actual evaluation version of the C51 environment ( C51 V9.00 ). Plans is the use of the 2k flash version of the F53xA family. Therefore we use the Small ( program 2k or less ) option at the target tab. The map file shows that the linker place the code segments at the starting address of 0x000800, which is outside of the 2k boundary.

LX51 LINKER/LOCATER V4.41                                                               01/08/2010  13:40:07  PAGE 1

...

CPU MODE:     8051 MODE
MEMORY MODEL: SMALL

...


ACTIVE MEMORY CLASSES OF MODULE:  .\Output\App Test (?C_STARTUP)

BASE        START       END         USED      MEMORY CLASS
==========================================================
C:000000H   C:000000H   C:001FFFH   000031H   CODE
C:000000H   C:000000H   C:001FFFH             CONST
C:000000H   C:000000H   C:001FFFH             ECODE
B00:0000H   C:000000H   C:001FFFH             HCONST
I:000000H   I:000000H   I:0000FFH   000001H   IDATA
I:000000H   I:000000H   I:00007FH   000008H   DATA


MEMORY MAP OF MODULE:  .\Output\App Test (?C_STARTUP)


START     STOP      LENGTH    ALIGN  RELOC    MEMORY CLASS   SEGMENT NAME
=========================================================================

* * * * * * * * * * *   D A T A   M E M O R Y   * * * * * * * * * * * * *
000000H   000007H   000008H   ---    AT..     DATA           "REG BANK 0"
000008H   000008H   000001H   BYTE   UNIT     IDATA          ?STACK

* * * * * * * * * * *   C O D E   M E M O R Y   * * * * * * * * * * * * *
000000H   000002H   000003H   ---    OFFS..   CODE           ?CO??C_STARTUP?0
000003H   0007FFH   0007FDH   ---    ---      **GAP**
000800H   000811H   000012H   BYTE   UNIT     CODE           ?C_C51STARTUP
000812H   000817H   000006H   BYTE   INBLOCK  CODE           ?PR?MAIN?MAIN
000818H   00081BH   000004H   BYTE   INBLOCK  CODE           ?PR?INIT_DEVICE?PERIDEF
00081CH   00081FH   000004H   BYTE   INBLOCK  CODE           ?PR?OSCILLATOR_INIT?PERIDEF
000820H   000826H   000007H   BYTE   INBLOCK  CODE           ?PR?PCA_INIT?PERIDEF
000827H   00082DH   000007H   BYTE   INBLOCK  CODE           ?PR?PORT_IO_INIT?PERIDEF

The BL51 shows the same result. Also if an other MCU like the F31x is used.

If we use an older C51 ( uV3 V3.31; C51 V8.04; LX51 V4.06 ) the map file seems to be correct.


LX51 LINKER/LOCATER V4.06                                                               01/08/2010  12:00:06  PAGE 1

...

CPU MODE:     8051 MODE
MEMORY MODEL: SMALL

...

ACTIVE MEMORY CLASSES OF MODULE:  .\Output\App Test (?C_STARTUP)

BASE        START       END         USED      MEMORY CLASS
==========================================================
C:000000H   C:000000H   C:001FFFH   000031H   CODE
C:000000H   C:000000H   C:001FFFH             CONST
C:000000H   C:000000H   C:001FFFH             ECODE
B00:0000H   C:000000H   C:001FFFH             HCONST
I:000000H   I:000000H   I:0000FFH   000001H   IDATA
I:000000H   I:000000H   I:00007FH   000008H   DATA


MEMORY MAP OF MODULE:  .\Output\App Test (?C_STARTUP)


START     STOP      LENGTH    ALIGN  RELOC    MEMORY CLASS   SEGMENT NAME
=========================================================================

* * * * * * * * * * *   D A T A   M E M O R Y   * * * * * * * * * * * * *
000000H   000007H   000008H   ---    AT..     DATA           "REG BANK 0"
000008H   000008H   000001H   BYTE   UNIT     IDATA          ?STACK

* * * * * * * * * * *   C O D E   M E M O R Y   * * * * * * * * * * * * *
000000H   000002H   000003H   ---    OFFS..   CODE           ?CO??C_STARTUP?0
000003H   000014H   000012H   BYTE   UNIT     CODE           ?C_C51STARTUP
000015H   00001AH   000006H   BYTE   INBLOCK  CODE           ?PR?MAIN?MAIN
00001BH   00001EH   000004H   BYTE   INBLOCK  CODE           ?PR?INIT_DEVICE?PERIDEF
00001FH   000022H   000004H   BYTE   INBLOCK  CODE           ?PR?OSCILLATOR_INIT?PERIDEF
000023H   000029H   000007H   BYTE   INBLOCK  CODE           ?PR?PCA_INIT?PERIDEF
00002AH   000030H   000007H   BYTE   INBLOCK  CODE           ?PR?PORT_IO_INIT?PERIDEF

Has anybody any idea where the problem could be?

Regards Raphael