While configuring a Flash Read
Interface (FRI), no accesses to any Flash memory that is covered by the Flash Read
Interface can be in progress. This includes instructions still in the CPU pipeline,
data reads, and instruction prefetch operations. To be sure that no access takes
place during the configuration change, follow the procedure shown below for any code
that modifies the Flash Read Interface registers.
Note: Flash Read Interface registers can
only be modified by code running as CPU1.LINK2, CPU1.LINK1, or the HSM CPU. All
other LINKs have read-only access to these registers.
- Start executing the application code from RAM or Flash.
- Branch to or call the Flash configuration code (that writes the FRI registers)
in RAM. This is required to properly flush the CPU pipeline before the
configuration change. Any function that changes the FRI configuration must
reside in RAM, and cannot execute from Flash memory using the same FRI.
- Execute the Flash configuration
code to configure the FRI registers (FRDCNTL, FLCLKCTL, FRIx_INTF_CTRL, and so
on).
- At the end of the Flash configuration code execution, wait nine cycles to allow
the write instructions to propagate through the CPU pipeline. This must be done
before the return-from-function call is made.
- Return to the calling function residing in Flash or RAM, and continue
execution.
Note: Flash read interfaces that do not include instruction fetch capability, such as
FRI-3 and FRI-4, can be configured by code executing directly from Flash, provided
that no data access to the covered Flash banks is being made. In such cases, verify
that no current data access to the target Flash banks is being performed by placing
the FRI configuration code in a separate function. Be sure to wait nine cycles to
flush the CPU pipeline before branching back to regular application
execution.