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: WARNING L5 after assign absolute address function

Dear All,

I encounter a very strange problem.

After I assign a absolute address function at bank0,

bank0(?PR?foo?test(C800h))

Other bank's allocation becomes very strange like the following.

BANK1 01D2H 046AH UNIT ?PR?FUNC?A_MODULE

* OVERLAP * BANK1 01D2H 0060H UNIT ?CO?B_MODULE

B_MODULE's code segment is mis-placed at the same address where some functions already occupied.

Other modules' situation are very similar. They always have some code segments overlapped with some functions.

If I put the absolute address function in common bank, there will not be any L5 warnings.

Is there any additional setting that I should add?

B.R.
Daniel

  • Which version of the linker are you using? Do you get other warings/errors?

  • Linker - I try V4.13 and V6.02, the result is all the same.

    Other warnings:

    *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

    *** WARNING L17: INTERRUPT FUNCTION IN BANKS NOT ALLOWED (Because I move ?C51STARTUP to bank 0 to save common area size

    *** WARNING L5: CODE SPACE MEMORY OVERLAP FROM: 01CFH TO: 2488H SPACE: BANK1

    BANK0 does not have L5 wanring, but all other banks have.
    One more thinkg, if I don't specify the code segment inserted into its local bank. That bank will not have L5 warning message.

    e.g.,

    Remove all of the following code segment insertion directive.

    BANK1(?CO?AAA, ?CO?BBB)
    BANK2(?CO?CCC, ?CO?DDD)

    The bank1 and bank2 will not have L5 warning message.