Problem to configure flash memory

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

Problem to configure flash memory

1,750 Views
tbonkers
Contributor II

I am truing to use the Secure Provisioning tool for programming a brand-new board with MIMXRT1042 and 2 x 1 Mb serial NOR flash AT25FF081A on FlexSPI1 and FlexSPI2 (my initial attempt is to use only one). I run into the following error over and over again (see screenshot below). Using the Tools->Flash Programmer, I can erase the flash, but writing is not reliable. The tool is also displaying the message "Success: External flash configured, however minimal erasable block size not detected".

tbonkers_0-1700863886500.png

The output of the tool is below:

Executing script C:\Users\null\secure_provisioning\ext_memory_setup.bat
### SCRIPT: Initialize external memory: C:\Users\null\secure_provisioning\ext_memory_setup.bat
### Check presence of FlashLoader ###
### Configure FlexSPI NOR memory using options on address 0x2000 ###
blhost -t 5000 -p COM3,115200 -j -- fill-memory 0x2000 4 0xC0000008 word
{
   "command": "fill-memory",
   "response": [],
   "status": {
      "description": "0 (0x0) Success.",
      "value": 0
   }
}
blhost succeeded
blhost -t 5000 -p COM3,115200 -j -- configure-memory 9 0x2000
{
   "command": "configure-memory",
   "response": [],
   "status": {
      "description": "0 (0x0) Success.",
      "value": 0
   }
}
blhost succeeded
### RESULT of the script `Initialize external memory`: SUCCESS (return code = [0]SUCCESS)
Status of the operation: SUCCESS: Initialize external memory
Executing script C:\Users\null\secure_provisioning\ext_memory_setup.bat
### SCRIPT: Initialize external memory: C:\Users\null\secure_provisioning\ext_memory_setup.bat
### Check presence of FlashLoader ###
### Configure FlexSPI NOR memory using options on address 0x2000 ###
blhost -t 5000 -p COM3,115200 -j -- fill-memory 0x2000 4 0xC0000008 word
{
   "command": "fill-memory",
   "response": [],
   "status": {
      "description": "0 (0x0) Success.",
      "value": 0
   }
}
blhost succeeded
blhost -t 5000 -p COM3,115200 -j -- configure-memory 9 0x2000
{
   "command": "configure-memory",
   "response": [],
   "status": {
      "description": "0 (0x0) Success.",
      "value": 0
   }
}
blhost succeeded
### RESULT of the script `Initialize external memory`: SUCCESS (return code = [0]SUCCESS)
Status of the operation: SUCCESS: Initialize external memory
ERROR: `blhost -- configure-memory 9 0x00002000` >>> FAILED with exception: MBoot: ConfigureMemory interrupted -> FlexSPINOR: Command Failure

 What could be the problem?

0 Kudos
Reply
7 Replies

1,696 Views
liborukropec
NXP Employee
NXP Employee

Hello Borislav,

could you please specify the exacts steps in the order you are executing them? You mentioned reliability of Flash programmer and write action, but the error and screenshot is from the Memory configuration dialog where the Simple configuration is converted to FCB. Did you erased whole flash in Flash programmer? Did you reset the chip after flash erase, etc.?

 

Thank you,

Libor

0 Kudos
Reply

1,683 Views
tbonkers
Contributor II

Hi Libor,

I'll summarize my interaction with the tool below:

1. Open the tool
2. Set FlexSPI NOR - simplified using the AT25SF128A template, modify Memory size to match the memory I have (1 MiB), and click on Test. Log attached.
3. Click on "Convert to FCB". Operation fails - log attached.
4. Open Tools->Flash Programmer. The window says "Erasable block size: not known" and "Erased range: not known".
Modify the buffer size to match the memory size: 0x100000, and click Erase. The status is "Sucess: Erase memory region 0x60000000 - 0x600FFFFF".
5. Click on Black check - result is "Success"
6. Click on Read - result is "Success"
7. Click on "Fill...", specify patter "0xcafeface" (32-bit), and then Write - fails with message "ERROR: `blhost -- write-memory 0x60000000 1048576` >>> FAILED with exception: MBoot: WriteMemory interrupted -> FlexSPINOR: Command Failure".
8. Reset target and open the Flash programmer again, then read 0x100000 bytes. The Log window displays "ERROR: TAG does not match: fafecace"
9. Memory read is complete and buffer is filled. It appears that previous Fill operation succeeded in writting the first 512 bytes, but the pattern seem wrong. Screenshot below

tbonkers_0-1701078231509.png

10. Click on Erase memory - result is Success

11. Reset target and open Flash programmer again. Read first 0x400 bytes - success

12. Try to write "0xcafeface" at address 0x0 and "0xdeadbeef" at the end of the 0x400-bytes block. Result is "ERROR: `blhost -- write-memory 0x60000000 1024` >>> FAILED with exception: MBoot: WriteMemory interrupted -> FlexSPINOR: Command Failure"

13. Try to read the memory again - nothing has been written.

14. Try to write the whole memory block at one go - fails with "ERROR: `blhost -- write-memory 0x60000000 1048576` >>> FAILED with exception: MBoot: WriteMemory interrupted -> FlexSPINOR: Command Failure".

15. Erase memory - success

16. Try to fill the first 0x400 bytes with 0xcafeface pattern:

tbonkers_1-1701078773640.png

Operation fails again.

 

17. Read 0x400 bytes - success. The pattern seems shifted.

tbonkers_2-1701078839401.png

So it appears there's a problem with writting to the flash. Could that be the reason "Convert to FCB fails"?

I also can't upload application to the flash using JLink and MCUXpresso.

 

0 Kudos
Reply

1,676 Views
liborukropec
NXP Employee
NXP Employee

Hi Borislav,

on first look there are two issues:

1) the creation of FCB fails - it might be wrong configuration of the used Flash. BTW, is it a custom board?

 

2) writing to 0x60000000 on first 512bytes basically corrupts location where the ROM configures/reads the FCB. So if you rewrite it with some pattern, the configuration is not recognized, including the erasable size, etc.

Regards,

Libor

0 Kudos
Reply

1,674 Views
tbonkers
Contributor II

Hi Libor,

Thank you for the quick reply. Yes it is a custom board using MIMXRT1042XJM5B and NOR Flash

I've tried every possible Quad SPI configuration, but can't configure the FCB.
 
Is there something I can to to determine why configuring FCB fails?
tbonkers_0-1701081120580.pngtbonkers_1-1701081175532.png

 

0 Kudos
Reply

1,656 Views
martin_lapis
NXP Employee
NXP Employee

Hello @tbonkers ,

this is probably not related to your issue, but I see no pull-ups on D2 and D3 (WP/IO2# and HOLD/IO3#)  signals in your schematic. It is not obvious from the pictures you shared here if there are any. These pull-ups are necessary in order to boot from the memory properly and might affect communication with the chip in single SPI mode.

Best Regards.
Martin

0 Kudos
Reply

1,652 Views
tbonkers
Contributor II
Hi Martin,
I do not have the pull-up resistors you mentioned on the board. When I was doing the schematic capture I was using MIMXRT1040-EVK board as a reference, and these pull-ups are marked with DNP in the schematic.

I managed to flash the example evkmimxrt1040_flexspi_nor_polling_transfer, but had to change some of the configuration structure params. This is described in another topic: https://community.nxp.com/t5/i-MX-Processors/MIMXRT1042-cannot-write-in-external-NOR-flash/m-p/17641....
0 Kudos
Reply

1,648 Views
martin_lapis
NXP Employee
NXP Employee

Hello @tbonkers ,

I would recommend placing the pull-ups on D2 and D3 anyway. Even if they are left DNP.

You are facing your memory chip config issue. It is difficult for me to recognize the root cause. I have no sample of the 25FFxx chip available to me at the moment. If you need support for this can you provide a sample of the chip used by your design to me? Then I would be able to test it with my validation board and probably provide valid config back to you.

Best Regards.
Martin

0 Kudos
Reply