System hangs with simultaneous QSPI file access and XiP execution

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

System hangs with simultaneous QSPI file access and XiP execution

Jump to solution
1,081 Views
deniscollis
Contributor V

I have a K8x with a single-die 16MB QSPI flash module.  The QSPI memory layout is arranged with a section for XiP code, and another section for a file system.  If a function in internal flash accesses the file system, then everything works fine. Functions on external flash that do not access the file system also run without a problem.  However, if a function on QSPI flash attempts to access the file system, also on QSPI flash, then the system hangs.  In the debugger I see that the QSPI busy bit (BOARD_QSPI_BASE->SR & QuadSPI_SR_BUSY_MASK) remains set, forever.

How can this be overcome?

Labels (1)
1 Solution
875 Views
FelipeGarcia
NXP Employee
NXP Employee

Hi Denis,

 

Unfortunately, what you are trying to do is not possible. Accessing the file system at the same time the code is running from the QSPI memory it is a limitation of XiP.

 

For implementing this you will have to execute the function from internal flash or either copy the function to ram and execute it from there.

 

Best regards,

Felipe

View solution in original post

2 Replies
876 Views
FelipeGarcia
NXP Employee
NXP Employee

Hi Denis,

 

Unfortunately, what you are trying to do is not possible. Accessing the file system at the same time the code is running from the QSPI memory it is a limitation of XiP.

 

For implementing this you will have to execute the function from internal flash or either copy the function to ram and execute it from there.

 

Best regards,

Felipe

875 Views
deniscollis
Contributor V

Hi Felipe,

I found a similar discussion - RT1050 QSPI Flash Limitations - which confirms your answer.  I'm assuming that memory-mapped reads from the file-system will be okay, and it's just the functions that control erase- and write-cycles that must be located in RAM or internal flash.

Thanks,

Denis