2018-11-07 09:33 PM
Hi, community:
I'm working on a custom board based on a STM32F7 MCU,which I have use the MCU is STM32F750Z8T6 and spi flash is W25Q064AJVSSIQT(Winbond).
But the assets (images, font ...) are too large to be loaded into the memory of the MCU and have to be loaded directly into the external flash.
For this issue I need the external loader which will allow the STM32 ST-LINK Utility & STM32CubeProgrammer to load the code into the external flash.
In order to the STM32 ST-LINK Utility & STM32CubeProgrammer can load the code into the external flash.
I have find the example: "N25Q512A_STM32F769I-EVAL external loader example", that I was to try modify and then it working fine.
At the same time, I'm working on another custom board based on a STM32F4 MCU with the framework, this custom board I have use the MCU is the STM32F446ZET6 and spi flash is W25Q064AJVSSIQT(Winbond).
So, I also need the external loader which will allow the STM32 ST-LINK Utility & STM32CubeProgrammer to load the code into the external flash.
But, I can't find any external loader example let me to modify for STM32H series or STM32F series or STM32L series MCU, because I am using these series MCU.
Thanks in advance.
2018-11-12 08:43 PM
Can anyone answer me this question?
Thanks in advance.
2018-11-12 09:56 PM
Sounds like several hours of work, not something I'd be interested in doing for free.
External loaders are a concept, you might have to code them based on the idea rather than cut-n-paste some prepackaged example. the framework is reasonably well defined. I'm open to reasonable offers.
2018-11-12 11:03 PM
I have referred to the following documents:
1. "AN4760": 4.1.1 Programming QSPI Flash memory using the STM32 ST-LINK utility
2. "UM0892": 3.9 Developing customized loaders for external memory
3. "UM2237": 2.3.3 Developing customized loaders for external memory
I used the example and modified it into a custom external loader for the STM32F750Z8T6 and it works fine.
(Example: C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ExternalLoader\N25Q512A_STM32F769I-EVAL)
I used the example and modified it into a 32L476G-DISCO custom external loader, but it didn't work.
(Example: C:\Program Files (x86)\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader\N25Q256A_STM32L476G-EVAL_Cube)
What are the key points that I didn't notice?
2018-11-15 10:48 PM
I used the external loader example: "N25Q512A_STM32F769I-EVAL", that I tried to modify in to STM32F446ZET6 and it worked fine.
I used the external loader example: "N25Q256A_STM32L476G-EVAL_Cube", that I tried to modify in to STM32L476G-DISCO and it worked fine.
2020-02-28 06:23 AM
Eric
I am also trying to write an ext. Loader for the F723 quad spi flash.
It can read but not erase nor write.
Can you tell what you did to make the example from F769I-EVAL run? HAL_Delay() does not work for me, so the timings in the QUAD functions may fail, too?
Which address does the CubeProgrammer send to write() and erase(). Is it the 0x90000xxxx address or does it start from 0x000000?
I am pretty frustrated. There is no serious documentation from ST that really tells how to make it with CubeIDE.
Erwin
2020-02-28 08:57 AM
It only calls the routines if they are within the scope of memory you describe in your header info. I'm not sure ST is 100% consistent (implementation is a dogs breakfast using libraries they claim don't exist, that's why the docs are really sketchy), they generally mask the addresses in their own implementation as the value passed to the QSPI device via commands doesn't need to see the high order bits.
You cannot use interrupts or SysTick, you need to manage elapsed time via a timer or counter.
2020-03-02 09:26 AM
Eric
meanwhile I have my external QSPI loader running with CubeProgrammer for an F723 (limited to a 16 MByte Flash, i.e. only 24 address bits used). The sample code was for an F769 and did not work originally due to various issues and errors.
For those who are interested, here come some vital things:
Have fun
Erwin