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

Properly adding startup.a51

Hi everyone.
So far I've only done some rather small 8051 projects, mostly with variants that had less than or equal to 64k memory.
Now I have a project which includes fairly large amounts of code-data running on SiLabs' C8051F12x, which has 128k.
Since inherently only 64k are accessible, I need to use code banking.
However, once - as noted in the application notes - I include STARTUP.A51 and the L51_BANK.A51, my application throws an Module Name Not Unique Warning for C_STARTUP.
In the KEIL Knowledge Base, I found the suggestion to rename C_STARTUP to C_STARTUP_MAIN to resolve the issue.
I did so, but then I got a code overlap warning at 0000H to 0002H.
I never had to deal with an overlap I didn't actually cause myself (manually) before, so I'm not sure how to resolve it.
In the M51, I found ...
C:0000H PUBLIC ?C_STARTUP_MAIN
(and, further down)
C:0000H LINE# 85.

I assume those are the overlapping segments, no?
I'm not sure how to progress in resolving the warning, could anybody shed some light on this for me?
Thanks alot!
Steven

Parents
  • Like I wrote, I have to include a fair amount of code data, which in turn forces me to use the upper 64k.
    I'd prefer not to, believe me. ;)

    I didn't go into whether or not it'd be feasible to merely copy stuff from the upper into lower 64k in runtime, but I have a feeling I want to avoid the overhead. Also, I have no idea how it needed to be done.
    So, I'd prefer sticking with the way KEIL/SiLabs suggests, which is using code banking.
    Surely solving this overlap must be possible?

    Appreciate the input nonetheless, Erik. :)

Reply
  • Like I wrote, I have to include a fair amount of code data, which in turn forces me to use the upper 64k.
    I'd prefer not to, believe me. ;)

    I didn't go into whether or not it'd be feasible to merely copy stuff from the upper into lower 64k in runtime, but I have a feeling I want to avoid the overhead. Also, I have no idea how it needed to be done.
    So, I'd prefer sticking with the way KEIL/SiLabs suggests, which is using code banking.
    Surely solving this overlap must be possible?

    Appreciate the input nonetheless, Erik. :)

Children
No data