📄 norflashapi.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.
* ----------------------------------------------------------------------------
*/
//------------------------------------------------------------------------------
/// \unit
///
/// !!!Purpose
///
/// The API layer consists of several functions that allow user to do
/// operations with flash in a unified way. As a result, future device changes
/// will not necessarily lead to the code changes in the application environments.
/// In this %norflash library we support AMD and INTEL command set.
/// The API layar code accesses the Flash memory by calling the low-level code,
/// so users do not have to concern themselves with the details of the special
/// command sequences.
///
/// !!!Usage
///
/// !!!Usage
/// -# Flash program using NORFLASH_WriteData().
/// - The Program command is used to modify the data stored at the
/// specified device address.
/// -# erase a block within the flash using NORFLASH_EraseSector().
/// - Flash erase is performed on a block basis. An entire block is
/// erased each time an erase command sequence is given.
/// -# erase whole blocks within the flash using NORFLASH_EraseChip().
/// -# NORFLASH_Reset() function can be issued, between Bus Write cycles
/// before the start of a program or erase operation, to return the
/// device to read mode.
/// -# NORFLASH_ReadDeviceID() is used to retrieve information
/// about the Flash Device type.
/// -# NORFLASH_ReadManufactoryID() is used to retrieve information
/// about the Flash Device Manufactory ID.
//------------------------------------------------------------------------------
#ifndef NORFLASHAPI_H
#define NORFLASHAPI_H
//------------------------------------------------------------------------------
// Headers
//------------------------------------------------------------------------------
#include "NorFlashCFI.h"
//------------------------------------------------------------------------------
// Type
//------------------------------------------------------------------------------
/// Reset or exit CFI query mode function.
typedef void (*fReset) (struct NorFlashInfo *, unsigned int );
/// Write buffer to pNorFlash function.
typedef unsigned char (*fWriteData)(struct NorFlashInfo *, unsigned int , unsigned char *, unsigned int );
/// Read manufactory function.
typedef unsigned int (*fReadManufactoryID)(struct NorFlashInfo *);
/// Read device ID code function.
typedef unsigned int (*fReadDeviceID)(struct NorFlashInfo *);
/// Full erase chip function.
typedef unsigned char (*fEraseChip) (struct NorFlashInfo *);
/// Erase single sector function.
typedef unsigned char (*fEraseSector)(struct NorFlashInfo *, unsigned int );
struct NorFlashOperations {
/// Reset or exit CFI query mode function.
void (*_fReset)(struct NorFlashInfo *pNorFlashInfo, unsigned int address);
/// Write buffer to norflash function.
unsigned char (*_fWriteData)(struct NorFlashInfo *pNorFlashInfo,
unsigned int address,
unsigned char *buffer,
unsigned int size);
/// Read manufactory function.
unsigned int (*_fReadManufactoryID)(struct NorFlashInfo *pNorFlashInfo);
/// Read device ID code function.
unsigned int (*_fReadDeviceID)(struct NorFlashInfo *pNorFlashInfo);
/// Full erase chip function.
unsigned char (*_fEraseChip) (struct NorFlashInfo *pNorFlashInfo);
/// Erase single sector function.
unsigned char (*_fEraseSector)(struct NorFlashInfo *pNorFlashInfo, unsigned int address);
};
//------------------------------------------------------------------------------
// Exported functions
//------------------------------------------------------------------------------
extern void NORFLASH_Reset(struct NorFlash *norFlash, unsigned int address);
extern unsigned int NORFLASH_ReadManufactoryID(struct NorFlash *norFlash);
extern unsigned int NORFLASH_ReadDeviceID(struct NorFlash *norFlash);
extern unsigned char NORFLASH_EraseSector(
struct NorFlash *norFlash,
unsigned int sectorAddr);
extern unsigned char NORFLASH_EraseChip(
struct NorFlash *norFlash);
extern unsigned char NORFLASH_WriteData(
struct NorFlash *norFlash,
unsigned int address,
unsigned char *buffer,
unsigned int size);
extern unsigned char NORFLASH_ReadData(
struct NorFlash *norFlash,
unsigned int address,
unsigned char *buffer,
unsigned int size);
#endif //#ifndef NORFLASHAPI_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -