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
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.
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.
-------------------------------------------------------------------------------
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
Do you modify XIP header file (evkmimxrt1024_flexspi_nor_config.c) to enable Flash continuous mode?
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.
-------------------------------------------------------------------------------