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
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. :)