Skip to main content

7. External flash in block mode

Motivation​

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.

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

Goal​

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.

Verification​

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.

Prerequisites​

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

Do​

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 STM32CubeMX like a memory-mapped QSPI flash.

Code​

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.