Thursday, April 26th 2018, 10:41pm UTC+2

You are not logged in.

  • Login
  • Register

Dear visitor, welcome to SEGGER Forum. If this is your first visit here, please read the Help. It explains how this page works. You must be registered before you can use all the page's features. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

apullin

Beginner

Date of registration: Mar 31st 2010

Posts: 27

1

Sunday, March 18th 2018, 3:15am

Programming external Macronix MX25 flash with J-Flash?

I have a situation wherein I need to flash a specific image to a Macronix MX25 flash that is already on my boards. So far, I have been using custom programs with assets converted to C binary blobs and compiled in (yes, seriously), to then be flashed to the external flash upon execution.
It would be great if I could use J-Flash to accomplish this, especially as it gets more complex.

Looking through the J-Flash manual, it looks like there is some support for tasks like this. But it looks like it is mainly focused on QSPI, whereas we as just using single SPI.

Is there already support for the MX25 command set and layout in J-Flash at some level? The exact part is MX25L12835F.
The only that I found to MX25 on the wiki was for an imx7 CPU, which I can only guess has a more standard dedicated QSPI interface, since there is no specification of the pinout or chip setup, and I see no section for that in the J-Flash manual.

Also, per the datasheet, the MX25 is not CFI compliant, but rather it provides "The Serial Flash Discoverable Parameter (SFDP) standard", JESD216B.


Is this going to take a custom RAMcode to accomplish? If so, are there examples available?

SEGGER - Nino

Super Moderator

Date of registration: Jan 2nd 2017

Posts: 964

2

Monday, March 19th 2018, 9:48am

Hello,


Thank you for your inquiry.
What exactly is your setup? Do you want to program the device through an MCU with a flash loader?
Or do you want to connect the SPI flash directly with J-Link and flash it that way?

We offer solutions for both options.
For the first one you would need to write a new flash loader for the MCU you are going to use if it is not supported already: https://wiki.segger.com/Adding_Support_for_New_Devices

For the second option you can simply use JFlashSPI. A list with supported SPI Flashes can be found here: https://www.segger.com/products/debug-pr…us-and-devices/
There you will also see a little info graphic on how the SPI Flash needs to be connected to the J-Link.

Best regards,
Nino
Please read the forum rules before posting: Forum Rules

Keep in mind, this is not a support forum. Its main purpose is user to user interaction.
Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
Should you be entitled to support contact us per e-mail.
The following contact form can be used for this: https://www.segger.com/about-us/contact-us/


apullin

Beginner

Date of registration: Mar 31st 2010

Posts: 27

3

Thursday, March 22nd 2018, 9:23pm

The use case is to flash the SPI flash via the existing microcontroller. The SPI bus isn't sufficiently available on the board (without building a flying probe system, which I don't know how to do) to use JFlashSPI.

The micro is an ST Cortex M4, so should be well supported.
Since I saw at least one mention of the MX25 on the wiki, the hope was that the flashing command set or RAMCode already existed somewhere in the JLink libraries.

I am still not quite certain what the setup should look like to get this working with the external flash. Even the template seems to be set up for an internal flash somewhere on the address bus (e.g. a _FLASH_BASE_ADDR is specified).
But I'll go through the documentation and have a deeper look at the template.

SEGGER - Nino

Super Moderator

Date of registration: Jan 2nd 2017

Posts: 964

4

Monday, March 26th 2018, 12:02pm

Hello,

Quoted

The micro is an ST Cortex M4, so should be well supported.
Since I saw at least one mention of the MX25 on the wiki, the hope was that the flashing command set or RAMCode already existed somewhere in the JLink libraries.

Yes that setup should work without issues. Unfortunately the flash loaders for the MX25 devices that we have in the J-Link Libraries are not compatible to the open flash loader as open flash loader depends highly on the MCU that you are going to use so the generic code from our library will not help.

Quoted

I am still not quite certain what the setup should look like to get this working with the external flash. Even the template seems to be set up for an internal flash somewhere on the address bus (e.g. a _FLASH_BASE_ADDR is specified).


The main.c is only for testing the flash loader. So the base address is the memory address that the QSPI module Flash area on the MCU is mapped to. If your target device does not have a QSPI module with memory mapped access, then you can use any memory area that is not used our out of bounds for the MCU memory map.

Best regards,
Nino
Please read the forum rules before posting: Forum Rules

Keep in mind, this is not a support forum. Its main purpose is user to user interaction.
Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
Should you be entitled to support contact us per e-mail.
The following contact form can be used for this: https://www.segger.com/about-us/contact-us/