This subcommand repeatedly reads a number of contiguous pages of NAND memory and checks the ECC. If no uncorrectable errors are found after the required number of cycles, an ACK and a successful reply packet is returned. If an uncorrectable ECC error is found the subcommand will stop and return an ECC failed reply packet with a NACK. A syntax failed reply format packet will be immediately returned with a NACK if the command parameters are out of range – for example, if the final page is before the start page. NACK will also be returned if a large enough memory buffer could not be allocated. The largest area that can be disturbance tested at one time is approximately 16 MB.
This command can take quite some time (roughly 1 second per 9000 pages read) to execute if the read cycle time is large. It will emit a functional processor message (which will be stored in the supervisor EDAC) after every 1000 read cycles. This can be polled to determine the command progress.
To abort a read disturbance test, command the supervisor to reset the functional processor. The functional processor itself is non-responsive while performing this test.
Command Format
Byte 0
Value 13, indicating NAND Read Disturbance Test subcommand
Bytes 1 – 4
32-bit start page number
Bytes 5 – 8
32-bit final page number
Bytes 9 – 12
32-bit maximum read cycle count
Successful Reply Format
Byte 0
Value 13, indicating NAND Read Disturbance Test subcommand
Bytes 1 – 4
32-bit start page number
Bytes 5 – 8
32-bit final page number
Bytes 9 – 12
32-bit number of read cycles completed
Syntax Failed Reply Format
Byte 0
Value 13, indicating NAND Read Disturbance Test subcommand
Bytes 1 – 4
32-bit start page number
Bytes 5 – 8
32-bit final page number
Bytes 9 – 12
32-bit maximum read cycle count
ECC Failed Reply Format
Byte 0
Value 13, indicating NAND Read Disturbance Test subcommand
Bytes 1 – 4
32-bit start page number
Bytes 5 – 8
32-bit final page number
Bytes 9 – 12
32-bit number of read cycles completed before failure
Bytes 13 – 16
32-bit number of page that failed ECC
Rewrite NAND
This subcommand reads blocks of NAND into RAM, erases the NAND, and reprograms them from the RAM image. This will fix any correctable ECC errors and remove the effects of cumulative read disturbance.
If a block has a backup then one of the two blocks will be fully erased and rewritten before the other is erased. This should leave the NAND workable even if there is an unexpected reset or power loss during the operation. The block that has the most errors is erased and rewritten first.
The subcommand takes a start and end page number. The page numbers will be extended on either end so that a whole number of blocks is accessed.
Pages that started in an erased state will not be reprogrammed. Blocks that start in an erased state will not be re-erased.
The subcommand will fail if a block cannot be successfully read. If there is a backup, this means that neither the primary nor secondary pass ECC. In this case it will abort before erasing the block.