ARM Technical Support Knowledge Articles



Information in this article applies to:


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?


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:


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



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

Rate this article

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