2018-03-14 08:20 PM
Hi !!!
I am new member of STM32 MCU. I'm working
on a custom board based on a STM32F7 MCU for a GUI projects. In my projects, I store a lot of data for GUI such as: Imgae data, Fonts, Audio data in QSPI Flash. My MCU is STM32F769NI and my QSP Flash is MX25L512, that is same of STM32F769I - Discovery. When I use STM32CubeProgramer to program the demo file supply by CubeMX Driver to my board then every thing is OK. But When I build my external loader then change file
extension
from *.out to *.stldr (I am using IAR ) this error is appear. My external loader is follow example in ''C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader\N25Q256A_STM32L476G-EVAL_Cube''. In my program I use BSP funtion supply by CUBE MX, and I check funtion by funtion same work. I'm stuck in this problem. Where is my error. I attack my project in this post. Can every one help me ? Thank you !!!
#stm32cubeprogramer #external-flash-loader #stm32f72018-03-14 08:45 PM
Your ICF File doesn't look ok. You need to consider that the external loader will be moved to the ram and executed from there.
I use this in the ICF:
define symbol __ICFEDIT_region_RAM_start__ = 0x20000004;
define symbol __ICFEDIT_region_RAM_end__ = 0x21000000;define memory mem with size = 4G;
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];define block RAM_BLOCK with fixed order {readonly code, readonly data, readwrite };
define block Info_BLOCK with fixed order { readonly data object Dev_Inf.o};place at start of RAM_region { block RAM_BLOCK };
place in RAM_region { block Info_BLOCK };do not initialize { section .info, readwrite };
2018-03-14 10:34 PM
Hi Thanks for your quickly reply. In properties of project I select tab Linker - > I chose override default linker to select my External-Flash-Linker.icf file then I copy all your comment code of linker at this file. But after build project I see in the map file ''P2'': place in [from 0x00000000 to 0x00000400] { block Info_BLOCK } is not correct. What is wrong ?.
2018-03-16 09:49 AM
Not using IAR, created project and rebuilt in Keil
________________ Attachments : MX25L512-STM32F769-CUSTOMBOARD.stldr.zip : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006Hxsv&d=%2Fa%2F0X0000000b1n%2FKzdZm_88L0F2CqOYMVgFqUzCJR6Gf.EELTr9bFDZ2fc&asPdf=false2018-03-16 05:09 PM
Not sure that has enough code in it to initialize the pins
Would need to know the pins in use, the external crystal speed, if present, and perhaps available USART or LEDs for debugging.
In the mean time I DID recreate the N25Q128A loader for the STM32F746G-DISCO using HAL, ST doesn't provide the example source for that because they use an SPL based library they tell everyone doesn't exist. I did some initial testing on my version and it did seem to function, but would take input from others. The Keil template from ST also didn't seem to work on uV5.23
________________ Attachments : N25Q128A_STM32F746G_DISCO_TEST001.stldr.zip : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006HxqC&d=%2Fa%2F0X0000000b1o%2Fce3lm.ema1jWLRZNEOI.vs1nLR7oQ3EVvrOedLK3yFU&asPdf=false2018-03-16 05:35 PM
Tested with St-Link 4.0
Error at programing:
00:32:38 : The elf loader Sector Erase function fails.
00:32:38 : Memory-Loader errorError at Sector Erase:
00:34:06 : External memory sector 0x90000000 is not erased. Verify the memory protection.
00:34:06 : External memory sector 0x90010000 is not erased. Verify the memory protection.The Reading is working fine
2018-03-16 06:32 PM
Interesting, I'm using ST-Link Utilities v4.2.0
2018-03-16 06:45 PM
Very very interesting. With v4.2 is it working. In the meanwhile I detected that the reading is not working for your external loader correct in 4.0 and the delivered one from ST as well not correctly!
What are the differences between v4.0 and V4.2 in Terms of external loaders?
2018-03-16 06:53 PM
So normally you use the standard MX25L512 loader for the STM32F769I-DISCO as they share a common memory and you use the same pins, and 25 MHz HSE?
The default pins get set via stm32f769i_discovery_qspi.c rather than stm32f7xx_hal_msp.c
2018-03-17 09:41 PM
Custom implementation using DUAL rather than QUAD mode
________________ Attachments : N25Q128A-STM32F446-CUSTOMBOARD.stldr.zip : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006Hxsl&d=%2Fa%2F0X0000000b1l%2F0Mf0_umAi6to2d9.0wLqcEW.ZXTAzTa8UY9Ef0XFghE&asPdf=false