UG-549
ADuCM310 Hardware Reference Manual
Rev. C | Page 80 of 192
FLASH CONTROLLER OPERATION
User Space
The flash blocks (Flash 0 and Flash 1) of 128 kB each are available for user code and data. Generally, this can be considered as a 256 kB
block from 0 to 0x3FFFF, except that it is not possible to execute from one flash block while erasing or writing parts of the same block.
The top 24 bytes of user space in each flash block are reserved for a signature, the user write protection pattern, and the user flash failure
analysis key (USERFAAKEY).
If the user tries to read a portion of memory that is not available, a bus error is returned. If the user tries to write via keyhole to a portion
of memory that is not available, an appropriate error flag is set.
Information Space
The information space of Flash 0 and Flash 1 is located at Address 0x40000 to Address 0x40FFF and is divided up between kernel space,
test space, and calibration space. Information space is reserved for use by Analog Devices, Inc. Upon reset, the hardware forces the device
to execute from the start of information space to copy calibration and configuration values to appropriate MMRs. When the kernel
completes, it passes code execution to the start of user code.
The hardware automatically checks the integrity of the kernel after reset. In the event of a failure, FEESTA[13] is set, and user code cannot
run. This bit can only be read via a serial wire read if the serial wire interface is enabled.
The kernel code cannot be accessed by the user. The user can read 16 bytes of Flash 0 information space at Address 0x407E8 to Address 0x407F7.
These locations contain MANFID0, MANFID1, and the next eight bytes, which are reserved. MANFID0, MANFID1 contain traceability
information to uniquely identify every device sold.
The top two bytes at 0x407F4 identify the silicon version and the kernel revision. The first hexadecimal digit in the two bytes translates to
the silicon revision, with 0x1 being the first silicon and each future revision increments that value by 1. The next two hexadecimal digits
are the ASCII encoded version of the kernel. Prerelease versions start at Y; after release, this changes to the ASCII character 0 and increments
upwards if any changes are necessary. The fourth hexadecimal digit represents the kernel minor revision. This starts at 0xE and is decremented
for every minor change to the kernel. For example, 0x159A translates to: 1, which indicates first silicon; 59, which is ASCII code to indicate
Kernel Revision Y; and A, which indicates Minor Revision A.
There are also hardware registers that identify the version of each silicon die. For more information, see the Silicon Identification section.
ADDRESS
0x40FFF
INFORMATION SPACE FLASH 1
0x40800
0x407FF
INFORMATION SPACE FLASH 0
0x40000
0x3FFFF
USER SPACE FLASH 1: 128kB
0x20000
0x1FFFF
USER SPACE FLASH 0: 128kB
0x00000
1
1461-
015
Figure 15. Information and User Space Memory Map
Keys
The value 0xF123F456 must be written to the FEEKEY register to run certain user commands, to write to certain locations in flash, or to
enable write access to the user setup register (FEECON1).