We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello friends I'm working on a SOC, which has 8051 core & a generic DSP embedded on to it. I already have application code ready with me. Now our vendor has shipped new version of SOC, which supports banking. My major problem is banking. How may i break my existing application in to diffrent banks. For this SOC common area is fixed & it is 32K. Total memory is 48K. So i'm left with 16K which i have to utilise for switching banks. My application will reside on a NAND Flash. In the old SOC i was using L51_Bank.a51.
What is variable banking? Can i use it here? I refered keil website, i didn't get any solution. Does anybody give me some suggestion? Thank you in advance.
I'd agree; tell the tools you have eight banks, and simply do not use the ones that correspond to the physical memory occupied by the common 32KB. So, assuming the common area is the first two 16KB blocks which correspond to banks 0 and 1, you'd link your code into banks 2..7, but banks 0 and 1 would never be used.
It's easy to leave banks unused in uV3. You specify the bank for entire file groups with a dropdown box. So, you simply don't choose those banks that don't exist.
More generally, you might want to use the RESERVE directive to make sure the linker does not link anything in the unused banks, as well as perhaps the upper 16KB of each bank.
Hello Drew Devis We are using uV2 (V2.37).
Using such an old version is partly your problem. Mentor E8051EW and Evatronix R8051XC are both IP cores that support code banking.
For Mentor see in the current version 8.05 of C51: C:\Keil\C51\Examples\M8051EW\APNT_171.htm