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

Address Space overflow

I am using 8051F120 having 127KB Program memory, theoretically. I have written 4 *.C files residing in each bank. The length of the code in Bank1 and Bank2 is less than 32KB (observing the list file). But, instead of this, the linker gives an address space overflow for both the banks.
Kindly assist.

Dhaval Solanki

Parents
  • The tool chain information is better, but I think that the information in the map file would be the most certain way of looking at the settings.

    For example, in an old project of mine, the map file produced by the linker has a block of text that starts:

    BL51 BANKED LINKER/LOCATER V5.03, INVOKED BY:
    C:\KEIL\C51\BIN\BL51.EXE BANK1 {.....etc.......}
    

    The link settings used at time of the linker invokation should show what details are being specified for the common and banking details.

    We can see from your details:

    BANKAREA(8000H,0FFFFH)
    

    So, the simplistic view would be that your banked code should start at 0x8000, but you need to check other parameters that might cause it to be starting further up.

Reply
  • The tool chain information is better, but I think that the information in the map file would be the most certain way of looking at the settings.

    For example, in an old project of mine, the map file produced by the linker has a block of text that starts:

    BL51 BANKED LINKER/LOCATER V5.03, INVOKED BY:
    C:\KEIL\C51\BIN\BL51.EXE BANK1 {.....etc.......}
    

    The link settings used at time of the linker invokation should show what details are being specified for the common and banking details.

    We can see from your details:

    BANKAREA(8000H,0FFFFH)
    

    So, the simplistic view would be that your banked code should start at 0x8000, but you need to check other parameters that might cause it to be starting further up.

Children
  • The following extract from M51:

    BL51 BANKED LINKER/LOCATER V6.05, INVOKED BY:
    C:\KEIL\C51\BIN\BL51.EXE
    D:\dhaval's disso\DissoVer4.41C_i2c\common.obj, D:\dhaval's disso\DissoVer4.41C_i2c\L51_BANK.obj, BANK1
    {D:\dhaval's disso\DissoVer4.41C_i2c\main.obj}, BANK3
    {D:\dhaval's disso\DissoVer4.41C_i2c\screens.obj}, D:\dhaval's disso\DissoVer4.41C_i2c\STARTUP.obj, BANK2
    {D:\dhaval's disso\DissoVer4.41C_i2c\menu.obj} TO D:\dhaval's disso\DissoVer4.41C_i2c\TDT08L
    
    RS (256) PL (68) PW (78) BANKAREA (8000H, 0FFFFH)
    

    So, the simplistic view would be that your banked code should start at 0x8000, but you need to check other parameters that might cause it to be starting further up.

    What type of Parameters are you referring to? Can you give an example?

  • What type of Parameters are you referring to? Can you give an example?

    No. That's why you need to look at the settings carefully. There's obviously something missing or incorrect, otherwise it would be producing the output you expect.