i.MX RT685 QSPI Port A – Segger Flash Programming Fix

cancel
Showing results for 
Search instead for 
Did you mean: 

i.MX RT685 QSPI Port A – Segger Flash Programming Fix

385 Views
Eli_H
NXP Pro Support
NXP Pro Support

 

This post is to be a helpful notification about a recent update to the Segger J-Link Programming Drivers to better support QSPI Flash devices connected to FlexSPI A on the i.MX RT685.

 

Background

 

I had posted a project in the community that demonstrated a simple minimal configuration example of the i.MX RT685 using a low cost QSPI flash device connect to FlexSPI Port A

https://community.nxp.com/t5/Blogs/i-MX-RT685-SuperMonkey-QSPI-Bring-up-with-MCUXpresso-and-Segger/b...

https://github.com/ehughes/rt_super

One issue that I noted in the article was that it appeared when programming with a Segger J-Link, you must first tell it to do a full erase of the target flash

Eli_H_0-1649345610840.png

This was a workaround for a bug in default behavior where the J-Link programming algorithm will only erase “dirty” sectors.   With the default programming behavior, I noticed that I could get the CPU to hard fault when I would make trivial changes to a simple “LED Blink” sample project.     It looked like that the dirty sector erase behavior was not functioning correctly and the image programmed to flash would not be correct.      Performing a full erase before programming would fix this issue.    Performing a full erase can be time consuming when a developer is in a debug/programing/test loop.    Having this fixed would greatly improve productivity.

My project to test the issue is here (The IO_Toggle project) :

https://github.com/ehughes/rt_super_sw

The Fix:

Make sure to upgrade to J-Link V7.65A or newer.    From the release botes:

  1. NXP iMXRT600 device series: QSPI-Flashloader did not work with correctly with SPI flashes that are only 3-byte addressable. Fixed.

The SuperMonkey used a smaller capacity flash device (W25Q128JVSIM) as compared to what was populated on the EVK.   This W25Q128JVSIM uses a 3-byte read sequence.

I was able to verify the fix with my IO_Toggle test project @ https://github.com/ehughes/rt_super_sw

0 Kudos
0 Replies