Reading FICR

Factory Information Configuration Registers (FICR)s are pre-programmed in the factory and cannot be erased by the user. These registers contain chip-specific information and configuration.

Using the standard Serial Wire Debug (SWD) Arm® CoreSight™ Debug Access Port (DAP) protocol:

  1. Read the INFO.CODEPAGESIZE register (0x00FF0220) of the FICR.
    The value of this register contains the code memory page size in hexadecimal format, so 0x00001000 stored in this register corresponds to a page size of 4096 bytes.
  2. Read the INFO.CODESIZE register (0x00FF0224) of the FICR.
    The value of this register contains the number of pages in code memory in hexadecimal format, so 0x0000100 stored in this register corresponds to 256 total pages in flash memory.
Note: Total flash memory (in bytes) = INFO.CODEPAGESIZE * INFO.CODESIZE. This information is used later to determine the valid range of addresses to program.