ARM Technical Support Knowledge Articles

CODE BANKING WITH SILABS C8051F12X/F13X DEVICES

Answer


Information in this article applies to:


QUESTION

I'm using the Silicon Laboratories (former Cygnal) C80C51F120, C80C51F121, C80C51F122, C80C51F123, C80C51F124, C80C51F125, C80C51F126, C80C51F127, C80C51F130, C80C51F131, C80C51F132, and C80C51F133 devices and I need to configure it for code banking. I am confused by the terms used in the SiLabs data sheet and the Keil documentation. They seem not to match and I have therefore the following questions:

  1. What is the common area and the size of the common area?
  2. How many code banks should I declare in µVision?
  3. What will be size of each code bank?
  4. If I declared 4 code banks in µVision2, do I get 32K common area + 4x32K code banks?

ANSWER

The SiLabs Application Note 130: Code Banking with the Keil 8051 Tools describes the configuration of the code banking. The code bank 0 is used as common bank.

The SiLabs on-chip banking mechanism is identical to the example hardware documented in the LX51 User's Guide, Bank Switching, Examples, Banking with Common Area. No code may be assigned to bank 0 since this hardware decoding is used for the common area.

Below are the answers to your questions:

  1. The common area is identical to bank 0 (C:0-C:0x7FFF) and is 32KB.
  2. You need to define 4 code banks in L51_BANK.A51 configuration file.
  3. The size of each code bank is 32KB.
  4. Bank 0 is the common area. No module can be assigned to code bank 0.

The best way is to use the L51_BANK.A51 and STARTUP.A51 files from the Silabs website:

AN130SW.ZIP.

For generating a HEX file you may use the OHX51 directive MERGE32K.

MORE INFORMATION

SEE ALSO

Article last edited on: 2010-01-08 10:52:12

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential