MIMXRT1024 XIP Reset

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MIMXRT1024 XIP Reset

1,222 Views
dasfaas
Contributor II

Hello,

I'm having some trouble with resetting my XIP applcation. I've blown a fuse to instruct the ROM to use fuses to determine the boot source. These are left at the default state to boot using FlexSPI using the internal winbond flash part. This launches my boot image, which decompresses itself into OCRAM (it's quite small). I use this boot image to write my primary application firmware into the internal flash, and subsequently launch the application. This application runs using XIP on the internal flash, and works quite well. 

The issue I am running into is when using XIP flash and performing a software reset, the MCU hangs, and I'm not entirely sure where or why. I can perform a reset when running from OCRAM, just not when using XIP. I believe it is down to either the internal flash chip or FlexSPI peripheral not being reset properly. When I power cycle the board it starts up correctly. I believe there is a fuse that can be blown to instruct the ROM to perform a JEDEC reset for the internal flash chip, but couldn't find much information on this. Is there something more fundamental that I am missing here?

Best,

Ger

Labels (1)
Tags (3)
0 Kudos
5 Replies

1,167 Views
natebowen
Contributor I

I'm interested in @jay_heng 's notes - I'll have to find the related sections in the English version of the documents, though.

We ran into this problem on our RT1052 application and NXP actually pointed us toward the solution of issuing a soft reset to the XIP FLASH chip before resetting the MCU with NVIC_SystemReset().

That being said, there are still ways to get these chips to hang in the BootROM because they've lost coherency with the boot device. We're exploring using an external watchdog circuit to achieve boot robustness in our latest design.

0 Kudos

1,215 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.
Actually, I'm not very clear with the boot flow, the bootload boot up from the internal QSPI, then the ROM code copy the code to the RAM to run, it's a typical non-XIP mode, after that, the bootloader will jump the application code which resides in the specific area in the QSPI flash, is my understanding right?
Moreover, there is not a fuse that can be blown to instruct the ROM to perform a JEDEC reset for the internal flash chip, and as I know, the majority of the Winbond flash also doesn't support the JEDEC reset feature.
Last, please try the below code to implement a software reset. (it needs to assure the below code resides in internal RAM)
void reset_flash_to_normal(void)
{
__disable_irq();
NVIC_SystemReset();
}
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos

1,192 Views
dasfaas
Contributor II

Hi Jeremy,

Thanks for the response.

OK, simply, I use a small XIP application to load an application into RAM. This RAM application is used for programming and finally launching the main application, which uses XIP. Thanks for clarifying about  JEDEC support, I was reading some documentation on the i.MXRT1064 part and was thinking the 1024 had a similar feature. 

I had already tried your suggestion, and locating it in DTCM, but it doesn't work. I need to power cycle the board to get it functioning again. There's nothing else I need to do with the winbond flash or the FlexSPI peripheral?

Thanks,

Ger

0 Kudos

1,174 Views
jay_heng
NXP Employee
NXP Employee
0 Kudos

1,178 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thanks for your reply.
Maybe you can upload the whole project and introduce the testing steps, then I can give a test on my board to replicate the phenomenon.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos