TouchGFX (and many other graphics libraries) will use some sort of flash memory to store graphics assets. These assets could be images, buttons, fonts, etc. Sometimes NAND based flash is used and sometimes NOR based flash is used. TouchGFX by default looks for memory mapped flash memory and this is done on STM32 platforms through QSPI (Quad SPI). This allows for a memory device anywhere from 1Mbit to 1Gbit in size to be connected with only a few pins and appear as "internal memory" to the micro-controller. The data stored in this device has to be preloaded and available to the graphics application as soon as it starts. In STM32 based platforms this can be done through the concept on an "external loader". An external loader is some code compiled for the micro-controller that the debugger/programmer tool loads into RAM that then in turn loads data onto the attached memory device. Writing one of these external loaders is not a trivial task, so it's much easier to leverage already proven ones. The QSPI flash chip mounted on my STM32F767 is a Winbond W25Q128 and that doesn't have support in the ST-LINK debugger programmer. So an upgrade is in order!
It has a beefy STM32F767IGT6 micro-controller, an 8MB SDRAM device and the 16MB flash device in question.
This upgrade will involve removing the flash chip, replacing it with pin header, designing and building a board with a bigger, more compatible QSPI flash chip and putting it together and testing it.
Since the flash chip is an SOIC-8 with 1.27mm pin pitch, I'm going to mount an SMD 2x4 1.27mm pin header to the pads of the flash chips PCB footprint. I'll lay out a board in KiCAD that has an MT25QL512 on it. The MT25QL512 has an external loader already built in to the STM32 tools. In theory, this should all work wonderfully.