Skip to main content
Version: 4.16

7. External flash in block mode


When working with Non-Memory-Mapped Flash memory, such as NAND flash, a driver must be developed in order for TouchGFX to use the assets stored within.

Read more about this topic in the Using Non-Memory Mapped flash for storing images section.

Skip this step if nonaddressable external flash is not relevant for your board bring up.


The goal of this step is to create a driver that can read a number of bytes from a location in the non-mapped flash memory and store it in an array.


The verification points for this section are:

Verification PointRationale
Ensure contents of flashEnsure that the contents read from the flash are correct.
Verify performanceEnsure that read performance is in accordance with MCU configuration.


  • Information about the flash, typically from a datasheet.
  • Information about the connections between the MCU and the external flash.
  • The flash speed.


Typically, the NAND flash is configured via the FMC on your MCU.

Remember to configure the GPIOs that are connected to the flash.

A non-memory-mapped QSPI flash is configured in CubeMX like a memory-mapped QSPI flash.


Write code that can read a number of bytes from a specific address of the flash. An example of how this might look is provided below. The implementation of the driver depends on your flash chip.

void readNonaddressableFlash(uint32_t from, uint8_t *into, uint32_t n)
uint8_t bytes[1000];
//read external Flash
readNonaddressableFlash(0xab001212, bytes, 1000);

This code will be used later to develop the TouchGFX abstraction layer.