2024-03-27 07:16 AM
I am using NUCLEO-H563ZI evaluation board and i want to create external flash loader for IS25LP128 QSPI flash memory. I used external loader files from GIT HUB and .stldr file in STCUBE programmer external loader folder location. when i try to read from 0x90000000 location, i am getting read failure error. I used the below path to create external loader for IS25LP128 QSPI flash memory,
Could you please help me to solve the below issue?
Solved! Go to Solution.
2024-06-02 05:44 AM
https://github.com/STMicroelectronics/stm32-s25fl128s/blob/main/s25fl128s.c
ST used that on STM32WB board if I recall
Keil FLM examples in H5 Packs
Not here
https://github.com/STMicroelectronics/stm32-external-loader
2024-06-02 05:44 AM - edited 2024-06-02 05:46 AM
@Tesla DeLorean wrote:Express parts and pin utilizations..
Not, sure, what You mean, but I try my best:
I have a custom board consting of a STM32H730 and a IS25LP128 QSPI flash memory connected to OCTOSPI (PA3, PC11, PC9, PC10, PE2, PA6). I can access, control, read and write the flash with a little rust program, but it seems above my head to write an own external loader. Aim is to XiP my user program from the external flash, so being able to flash the program and bringing it in memory mapped mode. I'm imploringly searching for a usable solution, hopefully I'm not the first trying this.
What I didn't understand yet fully: the external loaders are specific for the flash memory, but are they also specific for the MCU, thus specific for the combination of both?
You mentioned a database in which You would take this solution, when it's ready, did I understand this right? Where / is this database publicly available? Is this flash memory in there?
2024-06-02 05:49 AM
@Tesla DeLorean wrote:https://github.com/STMicroelectronics/stm32-s25fl128s/blob/main/s25fl128s.c
But this is a different chip than IS25LP128, isn't it? I'll look it up.
Not here
https://github.com/STMicroelectronics/stm32-external-loader
This is where I already searched some time ago.
2024-06-02 06:04 AM - edited 2024-06-02 06:09 AM
>>Not, sure, what You mean, but I try my best
Yes, those were the details.
>>What I didn't understand yet fully: the external loaders are specific for the flash memory, but are they also specific for the MCU, thus specific for the combination of both?
Yes, ST took a very specific path on building these, a more general script based solution, or one that passed a pin table, would have been much more flexible.
This is my exercise https://github.com/cturvey/stm32extldr
In another era I would have created an Auto-Gen tool you could run as an .EXE on Windows, but now Viruses and Malware..
There are a couple where I patched the ST .STLDR to use a table driven MSP initialization of the GPIO's. These could then be hex-edited, or bound to a generation tools with pin selections in COMBO-BOXES or an .INI file / script
https://github.com/cturvey/stm32extldr/blob/main/h5_mx25lm51245g/patch.s
2024-06-02 06:21 AM
The 128Mbit (16MB) would only need 24-bit addressing.
PAGE WRITE should be able to support 256-byte length/aligned pages. See github of IS25FL128S above, although would take some effort to migrate to OSPI vs QSPI
If at an application / bootloader you can access the OCTOSPI before memory-mapping, you could use something like X-MODEM to ingest and burn a .BIN to the external memory without using ST tools. Or take .HEX, but that would need some flow control to pace the PC vs STM32
Memory-Mapping just uses a "READ" command template, just needs the right settings, and prior commands to get the memory into the mode you want.
2024-06-02 06:28 AM
I'd wager that it's quite similar.
MICRON, WINBOND, MACRONIX, ISSI, CYPRESS, INFINEON just have quirky differences on the Status registers, and config to Quad and 4-byte modes. Most support 256-byte Page Write
Most of them are, READ-SINGLE / READ-DUAL are incredibly similar across most Vendors as the reading is something implemented in HW, like an MCU or FPGA
A broader search in GitHub might surface things, not sure there's exactly what you want that will just drop out and compile.
2024-06-02 06:30 AM
@Tesla DeLorean wrote:The 128Mbit (16MB) would only need 24-bit addressing.
PAGE WRITE should be able to support 256-byte length/aligned pages. See github of IS25FL128S above, although would take some effort to migrate to OSPI vs QSPI
Not sure, if I understand You right, but my flash is also QSPI. It is connected to the OSPI interface of the STM, but only via its 4 data lines.
If at an application / bootloader you can access the OCTOSPI before memory-mapping, you could use something like X-MODEM to ingest and burn a .BIN to the external memory without using ST tools. Or take .HEX, but that would need some flow control to pace the PC vs STM32
Ok, nice, a different approach. I'll try to evaluate that.
Memory-Mapping just uses a "READ" command template, just needs the right settings, and prior commands to get the memory into the mode you want.
Yes, I assumed so. I think, that's the easy part, although I didn't try it, because I see no use until I have the ability to flash my program to it.
2024-06-02 06:46 AM
IS25LP128
STM32H730
OCTOSPIM_P1
PA3:AF12 CLK
PC11:AF9 NCS
PC9:AF9 D0
PC10:AF9 D1
PE2:AF9 D2
PA6:AF6 D3
https://www.issi.com/WW/pdf/IS25LP128.pdf
2024-06-02 06:50 AM
Yes, that is my setup.
2024-06-02 07:16 AM
Would You consider providing something to test for me? I'd totally appreciate it.