RL-ARM User's Guide

NAND Driver

The NAND Driver implements low-level routines for the NAND Flash device.

Driver modules are located in the folder \ARM\RL\FlashFS\Drivers and have the file name NAND_device family.c. Copy the driver module to the project folder. Any module can be used as a template for creating new NAND drivers.

The driver control block structure is defined in the file File_Config.h as follows:

typedef struct {
  U32  (*Init)       (NAND_DRV_CFG *cfg);
  U32  (*UnInit)     (NAND_DRV_CFG *cfg);
  U32  (*PageRead)   (U32 row, U8 *buf, NAND_DRV_CFG *cfg);
  U32  (*PageWrite)  (U32 row, U8 *buf, NAND_DRV_CFG *cfg);
  U32  (*BlockErase) (U32 row, NAND_DRV_CFG *cfg);
} const NAND_DRV;

Developers can adapt the code in the following functions:

  • Init()
    to initialize the Flash programming algorithm. This function is invoked by the function finit.
  • UnInit()
    to uninitialize the NAND Flash Drive. This function is invoked by the function funinit.
  • PageRead()
    to read a page from the NAND Flash device.
  • PageWrite()
    to write a page to the NAND Flash device.
  • BlockErase()
    to erase a NAND Flash block.