...
Anchor
- Supports multiple sector per page
...
...
- Packs out-of-sector (OOS) metadata around reserved spare area zones
...
...
- Extensible through extensions that provides multiple hooks to allow for different ECC protection schemes (an extension for software ECC is provided)
...
- Supports reading ONFI parameter pages through a its
IO_Ctrl()
function
...
- Supports both 8-bit and 16-bit bus devices
...
The generic controller driver imposes a specific page layout: the sectors are stored sequentially in the main page area and OOS metadata zones are stored sequentially in the spare area, packed in the free spare zones specified by the .FreeSpareMap
field of the associated FS_PART_DATA
data structure. An example layout is shown below for a device with 2048 octets pages, using 512 bytes sectors.anchor
Panel |
---|
...
|
...
|
...
|
...
Generic Controller Extension Layer
...
Panel |
---|
...
HTML Table | |
---|---|
summary | |
class | Plain_Table |
Table Row (tr) | |
Table Cell (td) | |
Anchor | 1047705 | 1047705 | Extension API
Table Cell (td) | |
Anchor | 1047707 | 1047707 | Files
Table Cell (td) | |
Anchor | 1047709 | 1047709 | Description
Table Row (tr) | |
Table Cell (td) | |
Anchor | 1047711 | 1047711 |
|
...
| ||||||||||||||||||||||||||||||
Table Cell (td) | Anchor | | 1047713 | 1047713
fs_dev_nand_ctrlr_gen_soft_ecc.* in /Micrium/Software/uC-FS/Dev/NAND/Ctrlr |
Supports software ECC calculation and correction through µC/CRC ECC modules. |
|
fs_dev_nand_ctrlr_gen_micron_ecc.* in /Micrium/Software/uC-FS/Dev/NAND/Ctrlr |
Supports on-chip ECC hardware for some Micron parts (ex: MT29F01G08ABADA). |
...
FS_NAND_CtrlrGen_SoftECC
) uses µC/CRC’s ECC modules for the ECC codewords calculation and data correction. The extension is configurable through a FS_NAND_CTRLR_GEN_SOFT_ECC_CFG
type structure. It should be initialized to the value FS_NAND_CtrlrGen_SoftEcc_DfltCfg
before its fields are overridden to the appropriate values for your application.anchorCode Block |
---|
...
HTML Table | ||
---|---|---|
summary | ||
class | Code_Listing | |
Table Row (tr) | ||
Table Cell (td) | ||
| ||
Anchor | 1039179 | 1039179 | typedef struct
|
...
| |||||||||||
typedef struct fs_nand_cfg{ Anchor | | 1039180 | 1039180 | const||||||||
Anchor | 1039191 | 1039191 | }|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Table Row (tr) | |||||||||||
Table Row (tr) | |||||||||||
Table Row (tr) | |||||||||||
Table Row (tr) | |||||||||||
Table Row (tr) |
...
Panel |
---|
(1) Pointer to an |
...
API structure that will be used to provide software ECC calculation and correction. Refer |
...
...
Guide and µC/CRC’s user manual for more information on ECC modules. |
...
The Micron ECC generic controller extension (FS_NAND_CtrlrGen_MicronECC
) allows the use of internal on-chip hardware ECC engines for some Micron NAND flash parts. The extension has been designed as an example for the Micron MT29F1G08ABADA, but should function properly with other similar Micron devices with internal ECC hardware modules. This module doesn’t have any configuration options, you should use DEF_NULL
as the generic controller extension configuration pointer (.CtrlrExtCfg
field of the FS_NAND_CTRLR_GEN_CFG
structure).
Note that the spare layout ('.FreeSpareMap
' field of the associated FS_PART_DATA
) needs to be set such that the spare zones where the Micron NAND part will store its ECC data is not being defined as free.