nuttx/arch/arm/src/lpc43xx/chip/lpc43_flash.h
patacongo 899eb0b5ce Add LPC43 Event Monitor, EEPROM, FLASH header files
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4898 42af7a65-404d-4744-a932-0658087f49c3
2012-07-02 22:15:20 +00:00

188 lines
6.0 KiB
C

/************************************************************************************
* arch/arm/src/lpc43xx/chip/lpc43_flash.h
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS 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.
*
************************************************************************************/
#ifndef __ARCH_ARM_SRC_LPC43XX_CHIP_LPC43_FLASH_H
#define __ARCH_ARM_SRC_LPC43XX_CHIP_LPC43_FLASH_H
/************************************************************************************
* Included Files
************************************************************************************/
#include <nuttx/config.h>
/************************************************************************************
* Pre-processor Definitions
************************************************************************************/
/* The AES is controlled through a set of simple API calls located in the LPC43xx
* ROM. This value holds the pointer to the AES driver table.
*/
#define LPC43_ROM_IAP_DRIVER_TABLE LPC43_ROM_DRIVER_TABLE0
#define IAP_LOCATION *(volatile unsigned int *)LPC43_ROM_IAP_DRIVER_TABLE;
/* General usage:
*
* Declare a function pointer in your code like:
*
* iap_t iap = (iap_t)IAP_LOCATION;
*
* Then call the IAP using the function pointe like:
*
* unsigned long command[6];
* unsigned long result[5];
* ...
* iap(command, result);
*/
/* IAP Commands
*
* See tables 1042-1053 in the "LPC43xx User Manual" (UM10503), Rev. 1.2, 8 June
* 2012, NXP for definitions descriptions of each IAP command.
*/
#define IAP_INIT 49 /* Initialization */
#define IAP_WRITE_PREPARE 50 /* Prepare sectors for write operation */
#define IAP_WRITE 51 /* Copy RAM to Flash */
#define IAP_ERASE_SECTOR 52 /* Erase sectors */
#define IAP_BLANK_CHECK 53 /* Blank check sectors */
#define IAP_PART_ID 54 /* Read part ID */
#define IAP_BOOT_VERSION 55 /* Read Boot Code version */
#define IAP_SERIAL_NUMBER 58 /* Read device serial number */
#define IAP_COMPARE 56 /* Compare */
#define IAP_REINVOKE 57 /* Reinvoke ISP */
#define IAP_ERASE_PAGE 59 /* Erase page */
#define IAP_SET_BANK 60 /* Set active boot flash bank */
/* ISP/IAP return codes */
/* Command is executed successfully. Sent by ISP handler only when command given by
* the host has been completely and successfully executed.
*/
#define CMD_SUCCESS 0
/* Invalid command */
#define INVALID_COMMAND
/* Source address is not on word boundary. */
#define SRC_ADDR_ERROR 2
/* Destination address not on word or 256 byte boundary. */
#define DST_ADDR_ERROR 3
/* Source address is not mapped in the memory map. Count value is taken into
* consideration where applicable.
*/
#define SRC_ADDR_NOT_MAPPED 4
/* Destination address is not mapped in the memory map. Count value is taken into
* consideration where applicable.
*/
#define DST_ADDR_NOT_MAPPED 5
/* Byte count is not multiple of 4 or is not a permitted value. */
#define COUNT_ERROR 6
/* Sector number is invalid or end sector number is greater than start sector number. */
#define INVALID_SECTOR 7
/* Sector is not blank. */
#define SECTOR_NOT_BLANK 8
/* Command to prepare sector for write operation was not executed. */
#define SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION 9
/* Source and destination data not equal. */
#define COMPARE_ERROR 10
/* Flash programming hardware interface is busy. */
#define BUSY 11
/* Insufficient number of parameters or invalid parameter. */
#define PARAM_ERROR 12
/* Address is not on word boundary. */
#define ADDR_ERROR 13
/* Address is not mapped in the memory map. Count value is taken in to consideration
* where applicable.
*/
#define ADDR_NOT_MAPPED 14
/* Command is locked. */
#define CMD_LOCKED 15
/* Unlock code is invalid. */
#define INVALID_CODE 16
/* Invalid baud rate setting. */
#define INVALID_BAUD_RATE 17
/************************************************************************************
* Public Types
************************************************************************************/
/* IAP function pointer */
typedef void (*iap_t)(unsigned int *cmd, unsigned int *result);
/************************************************************************************
* Public Data
************************************************************************************/
/************************************************************************************
* Public Functions
************************************************************************************/
#endif /* __ARCH_ARM_SRC_LPC43XX_CHIP_LPC43_FLASH_H */