ColdFire Flash Module (CFM)
MCF52211 ColdFire® Integrated Microcontroller Reference Manual, Rev. 2
Freescale Semiconductor 18-3
Protection scheme to prevent accidental program or erase of flash memory
Access restriction control for supervisor/user and data/instruction operations
Security feature to prevent unauthorized access to the flash memory

18.2 External Signal Description

The CFM contains no signals that connect off-chip for the end customer.

18.3 Memory Map and Register Definition

This section describes the CFM memory map and registers.

18.3.1 Memory Map

The memory map for the CFM memory is shown in <f-helvetica><st-bold>Figure 18-2.. The starting
address of the flash memory is determined by the flash array base address as defined by the system level
configuration. The flash memory map shows how a pair of 32-bit flash physical blocks (even and odd)
interleave every four bytes to form a contiguous memory space as follows:
Flash Block 0 includes byte addresses (PROGRAM_ARRAY_BASE+$0000_0000) to
(PROGRAM_ARRAY_BASE+$0001_FFFF).
Figure 18-2. CFM Flash Memory Map
The CFM has hardware interlocks that protect data from accidental corruption using program or erase
operations. A flexible scheme allows the protection of any combination of flash logical sectors as
described in Section 18.3.3.4, “CFMPROT — CFM Protection Register”. A similar scheme is available to
control supervisor/user and data/instruction access to these flash logical sectors.
Security information that allows the MCU to prevent intrusive access to the flash memory is stored in the
flash configuration field. The flash configuration field is composed of 24 bytes of reserved memory space
within the flash memory, which contains information that determines the CFM protection and access
restriction scheme out of reset. A description of each byte found in the flash configuration field is given in
Table 18-1.
(PROGRAM_ARRAY_BASE + $0000_0000)
128kBytes
Configuration Field
(PROGRAM_ARRAY_BASE+$400) to
(PROGRAM_ARRAY_BASE+$41A)
BLOCK
0 EVEN
(4Bytes)
BLOCK
0 ODD
(4Bytes)
BLOCK
0 EVEN
(4Bytes)
BLOCK
0 ODD
(4Bytes)
(PROGRAM_ARRAY_BASE + $0001_FFFF)