2.5.2.5 Bit-Banding

A bit-band region maps each word in a bit-band alias region to a single bit in the bit-band region. The bit-band regions occupy the lowest 1MB of the SRAM and peripheral memory regions.

Important: The Cortex-M3 processor does not support exclusive accesses to bit-band regions.

The memory map has two 32MB alias regions that map to two 1MB bit-band regions:

  • accesses to the 32MB SRAM alias region map to the 1MB SRAM bit-band region, as detailed in Table 2-13.
  • accesses to the 32MB peripheral alias region map to the 1MB peripheral bit-band region, as detailed in Table 2-14.
Table 2-13. SRAM Memory Bit-banding Regions
Address RangeMemory SRAM RegionInstruction and Data Accesses
0x20000000-0x200FFFFFBit-band regionDirect accesses to this memory range behave as SRAM memory accesses, but this region is also bit addressable through bit-band alias.
0x22000000-0x23FFFFFFBit-band aliasData accesses to this region are remapped to bit band region. A write operation is performed as read-modify-write. Instruction accesses are not remapped.
Table 2-14. Peripheral Memory Bit-banding Regions
Address rangeMemory SRAM RegionInstruction and Data Accesses
0x40000000-0x400FFFFF Bit-band aliasDirect accesses to this memory range behave as peripheral memory accesses, but this region is also bit addressable through bit-band alias.
0x42000000-0x43FFFFFFBit-band regionData accesses to this region are remapped to bit band region. A write operation is performed as read-modify-write. Instruction accesses are not permitted.
Important:
  • A word access to the SRAM or peripheral bit-band alias regions maps to a single bit in the SRAM or peripheral bit-band region.
  • Bit band accesses can use byte, halfword, or word transfers. The bit band transfer size matches the transfer size of the instruction making the bit band access.

The following formula shows how the alias region maps onto the bit-band region:

  • bit_word_offset = (byte_offset x 32) + (bit_number x 4)
  • bit_word_addr = bit_band_base + bit_word_offset

where:

  • Bit_word_offset is the position of the target bit in the bit-band memory region.
  • Bit_word_addr is the address of the word in the alias memory region that maps to the targeted bit.
  • Bit_band_base is the starting address of the alias region.
  • Byte_offset is the number of the byte in the bit-band region that contains the targeted bit.
  • Bit_number is the bit position, 0-7, of the targeted bit.

The following illustration shows examples of bit-band mapping between the SRAM bit-band alias region and the SRAM bit-band region.

  • The alias word at 0x23FFFFE0 maps to bit[0] of the bit-band byte at 0x200FFFFF: 
0x23FFFFE0 = 0x22000000 + (0xFFFFF*32) + (0*4).
  • The alias word at 0x23FFFFFC maps to bit[7] of the bit-band byte at 0x200FFFFF: 
0x23FFFFFC = 0x22000000 + (0xFFFFF*32) + (7*4).
  • The alias word at 0x22000000 maps to bit[0] of the bit-band byte at 0x20000000: 
0x22000000 = 0x22000000 + (0*32) + (0 *4).
  • The alias word at 0x2200001C maps to bit[7] of the bit-band byte at 0x20000000: 
0x2200001C = 0x22000000+ (0*32) + (7*4).
Figure 2-9. Bit-band Mapping