📄 skipblocknandflash.h
字号:
/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright (c) 2008, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
//------------------------------------------------------------------------------
/// \page "SkipBlockNandFlash"
///
/// !!!Purpose
///
/// SkipBlockNandFlash layer supplies application a set of interface to operate nandflash, which include
/// initialize, block erase, block write/read, page write/read. This layer is called by upper layer
/// applications, and it will call lower layer drivers, such as EccNandFlash, RawNandFlash.
///
/// !!!Usage
/// -# SkipBlockNandFlash_Initialize is used to initializes a SkipBlockNandFlash instance. Scans
/// the device to retrieve or create block status information.
/// -# SkipBlockNandFlash_EraseBlock is used to erase a certain block in the device, user can
/// select "check block status before erase" or "erase without check"
/// -# User can use SkipBlockNandFlash_WriteBlock to write a certain block and SkipBlockNandFlash_WritePage
/// to write a certain page. The functions will check the block status before write, if the block
/// is not a good block, the write command will not be issued.
/// -# User can use SkipBlockNandFlash_ReadBlock to read a certain block and SkipBlockNandFlash_ReadPage
/// to read a certain page. The functions will check the block status before read, if the block
/// is not a good block, the read command will not be issued. ECC is also checked after read
/// operation is finished, an error will be reported if ecc check got errors.
//------------------------------------------------------------------------------
#ifndef SKIPBLOCKNANDFLASH_H
#define SKIPBLOCKNANDFLASH_H
//------------------------------------------------------------------------------
// Headers
//------------------------------------------------------------------------------
#include "NandCommon.h"
#include "EccNandFlash.h"
//------------------------------------------------------------------------------
// Definitions
//------------------------------------------------------------------------------
#define NandBlockStatus_BAD 0xBA
// Erase types
/// Check block before erase
#define NORMAL_ERASE 0x00000000
/// Do NOT check the block status before erasing it
#define SCRUB_ERASE 0x0000EA11
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
struct SkipBlockNandFlash {
struct EccNandFlash ecc;
};
//------------------------------------------------------------------------------
// Exported functions
//------------------------------------------------------------------------------
extern unsigned char SkipBlockNandFlash_Initialize(
struct SkipBlockNandFlash *skipBlock,
const struct NandFlashModel *model,
unsigned int commandAddress,
unsigned int addressAddress,
unsigned int dataAddress,
const Pin pinChipEnable,
const Pin pinReadyBusy);
extern unsigned char SkipBlockNandFlash_EraseBlock(
struct SkipBlockNandFlash *skipBlock,
unsigned short block,
unsigned int eraseType);
extern unsigned char SkipBlockNandFlash_ReadPage(
const struct SkipBlockNandFlash *skipBlock,
unsigned short block,
unsigned short page,
void *data,
void *spare);
unsigned char SkipBlockNandFlash_ReadBlock(
const struct SkipBlockNandFlash *skipBlock,
unsigned short block,
void *data);
extern unsigned char SkipBlockNandFlash_WritePage(
const struct SkipBlockNandFlash *skipBlock,
unsigned short block,
unsigned short page,
void *data,
void *spare);
unsigned char SkipBlockNandFlash_WriteBlock(
const struct SkipBlockNandFlash *skipBlock,
unsigned short block,
void *data);
#endif //#ifndef SKIPBLOCKNANDFLASH_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -