nrfjprog failed - reading QSPI Flash (W25Q32JVIQ)

I am attempting to use nrfjprog to test my QSPI Flash.  Here is the QSPI wiring connection:

P0.24 CS (chip select)
P0.19 CLK (clock)
P0.21 IO0
P0.22 IO1
P0.23 IO2
P1.00 IO3

Here is the command that I used for my test and I have attached the log file.

nrfjprog -f nrf52 --qspiini QspiDefault.ini --readqspi test.txt --log
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: nrfjprog failed for an unknown reason. Run the same command again with
ERROR: argument --log, contact Nordic Semiconductor and provide the generated
ERROR: log.log file to them.

And here is the QspiDefault.ini .

; nrfjprog QSPI configuration file.

[DEFAULT_CONFIGURATION]
; Define the capacity of the flash memory device in bytes. Set to 0 if no external memory device is present in your board.
MemSize = 0x400000

; Define the desired ReadMode. Valid options are FASTREAD, READ2O, READ2IO, READ4O and READ4IO
ReadMode = READ4IO

; Define the desired WriteMode. Valid options are PP, PP2O, PP4O and PP4IO
WriteMode = PP4O

; Define the desired AddressMode. Valid options are BIT24 and BIT32
AddressMode = BIT24

; Define the desired Frequency. Valid options are M2, M4, M8, M16 and M32
Frequency = M32

; Define the desired SPI mode. Valid options are MODE0 and MODE3
SpiMode = MODE0

; Define the desired SckDelay. Valid options are in the range 0 to 255
SckDelay = 0x01

; Define SPI interface timing. Valid options are in the range of 0 to 7.
; This argument is only used for devices where the dll function NRFJPROG_qspi_set_rx_delay() is supported.
RxDelay = 2

; Define the desired IO level for DIO2 and DIO3 during a custom instruction. Valid options are LEVEL_HIGH and LEVEL_LOW
CustomInstructionIO2Level = LEVEL_LOW
CustomInstructionIO3Level = LEVEL_HIGH

; Define the assigned pins for the QSPI peripheral. Valid options are those existing in your device
; For nRF53, QSPI pins are not configurable and these values are ignored.
CSNPin = 24
CSNPort = 0
SCKPin = 19
SCKPort = 0
DIO0Pin = 21
DIO0Port = 0
DIO1Pin = 22
DIO1Port = 0
DIO2Pin = 23
DIO2Port = 0
DIO3Pin = 0
DIO3Port = 1

; Define the Index of the Write In Progress (WIP) bit in the status register. Valid options are in the range of 0 to 7.
WIPIndex = 0

; Define page size for commands. Valid sizes are PAGE256 and PAGE512.
PPSize = PAGE256

; Custom instructions to send to the external memory after initialization. Format is instruction code plus data to send in between optional brakets. 
; These instructions will be executed each time the qspi peripheral is initiated by nrfjprog. 
; To improve execution speed on consecutive interations with QSPI, you can run nrfjprog once with custom initialization, and then comment out the lines below.
; Numbers can be given in decimal, hex (starting with either 0x or 0X) and binary (starting with either 0b or 0B) formats. 
; The custom instructions will be executed in the order found. 
InitializationCustomInstruction =  0x06
InitializationCustomInstruction =  0x31, [0x02]
0830.log.log

Thank you for any advice and recommendations.

Parents
  • Hi

    Does it support 32 BIT addressing then? Can you try switching from BIT24 to BIT32, as I seem to recall there being some trouble with using the 24 bit addressing at some point. I'm not sure if that's the case for nrfjprog as well. I have forwarded your question internally and will get back to you when I hear from the developers.

    Best regards,

    Simon

    UPDATE: Our developers noticed something I didn't, that you're using v10.13.0 of the nRF Command Line Tools. The latest release is currently 10.16.0 where we've added a lot of updates for compatibility with the hardened approtect support in later chip revisions for the nRF52 family, so that's likely the cause of these blocked reads. Try updating your nRF Command Line tools and see if you have the same issue with the latest version.

  • Unfortunately, it does not support 32 bit addressing.

    I will try updating my nRF command line tools and retest.

    Regards,

    Graeme

Reply Children
Related