cancel
Showing results for 
Search instead for 
Did you mean: 

Facing issue while creating external flash loader

Nagarajan
Associate III

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,

stm32-external-loader/Loader_Files/other devices at contrib · STMicroelectronics/stm32-external-loader · GitHub

Could you please help me to solve the below issue?

 

Nagarajan_2-1711548543593.png

 

 

52 REPLIES 52

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

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
pkoevesdi
Senior

@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?

@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.


>>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

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

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.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..


@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.

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

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

Yes, that is my setup.

Would You consider providing something to test for me? I'd totally appreciate it.