SPRUJ79 November 2024 F29H850TU
The C29x Flash subsystem includes up to four Flash Read Interface modules (FRI-n). The Flash read interface modules provide a means for the various initiators on the system to perform read operations on Flash memory. These initiators include:
Each Flash read interface is addressable through one or more Flash read ports. Because of bank interleaving, multiple CPU support, and support for bank swapping during firmware updates, Flash code banks do not have a fixed mapping to CPU address space. Rather, each read port has a fixed address range, but can map to a different Flash region depending on the current system configuration. The Flash bank access router performs the background translation, routing read access requests to the intended bank or banks as directed by the Safety and Security Unit (SSU). The are two types of Flash read operations that can be performed: program instruction fetches for CPU execution, and data accesses.
Each of the Flash read interfaces is described in the following sections.
FRI-1 interfaces with the instruction fetch bus of the first C29x CPU (CPU1), and is primarily used for executing program code on CPU1. Additionally, FRI-1 is connected to all data read initiators in the system. This read interface has four read ports, numbered RP0 to RP3. These read ports are mapped to code banks depending on the configuration of BANKMODE and BANKMAP.CPU1SWAP registers in the SSU. These settings are described in subsequent sections.
On 3- or 4-CPU systems, FRI-2 interfaces with the instruction fetch bus of the third C29x CPU (CPU3). When program Flash memory is allocated to CPU3 by configuring BANKMODE, FRI-2 can be used to execute program code on CPU3, and additionally can be used as a data read interface by all initiators in the system. This read interface has two read ports, numbered RP0 to RP1. These read ports are mapped to code banks depending on the configuration of BANKMODE and BANKMAP.CPU3SWAP. On single-CPU systems, FRI-2 is not present.
FRI-3 provides an address range to be used for programming and verifying an updated firmware image into the second half of Flash memory, while the current application continues to execute from the first half through FRI-1 and FRI-2 (if present). When the firmware update is complete, the Flash memory ranges can then be swapped using BANKMAP.CPUxSWAP, and the newly programmed firmware now executes from FRI-1 and FRI-2 (if present). This supports Firmware-Over-The-Air (FOTA) and Live Firmware Update (LFU) firmware upgrade mechanisms. FRI-3 does not have an instruction fetch interface—only data reads are possible from all system initiators. FRI-3 has two read ports, numbered RP0 to RP1, which are mapped to available Flash code memory.
FRI-4 is exclusively used for the data bank (FLC1.B4), and does not have an instruction fetch interface. Thus, application code cannot be executed from the data bank; only read accesses are possible from all system initiators. FRI-4 has one read port (RP0) which has a fixed mapping to the data Flash bank, and does not change based on the BANKMODE or BANKMAP.CPUxSWAP settings.