| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #ifndef _LPC17XX_IAP_H_
- #define _LPC17XX_IAP_H_
- /*
- * Copyright (C) 2012 by Ole Reinhardt (ole.reinhardt@embedded-it.de)
- *
- * All rights reserved.
- *
- * 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 of the copyright holders nor the names of
- * 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.
- *
- * For additional information see http://www.ethernut.de/
- *
- *
- * Parts taken from lpc177x_8x_iap.h 2011-11-21
- *
- * file lpc177x_8x_iap.h
- * brief Contains all functions support for IAP
- * on LPC177x_8x
- * version 1.0
- * date 21. November. 2011
- * author NXP MCU SW Application Team
- *
- * Copyright(C) 2011, NXP Semiconductor
- * All rights reserved.
- *
- ***********************************************************************
- * Software that is described herein is for illustrative purposes only
- * which provides customers with programming information regarding the
- * products. This software is supplied "AS IS" without any warranties.
- * NXP Semiconductors assumes no responsibility or liability for the
- * use of the software, conveys no license or title under any patent,
- * copyright, or mask work right to the product. NXP Semiconductors
- * reserves the right to make changes in the software without
- * notification. NXP Semiconductors also make no representation or
- * warranty that such application will be suitable for the specified
- * use without further testing or modification.
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, under NXP Semiconductors'
- * relevant copyright in the software, without fee, provided that it
- * is used in conjunction with NXP Semiconductors microcontrollers. This
- * copyright, permission, and disclaimer notice must appear in all copies of
- * this code.
- **********************************************************************/
- /*----------------------------------------------------------------------------*
- General defines
- *----------------------------------------------------------------------------*/
- /* IAP entry location */
- #define IAP_LOCATION (0x1FFF1FF1UL)
- /**
- * \brief IAP command code definitions
- */
- typedef enum
- {
- IAP_PREPARE = 50, /* Prepare sector(s) for write operation */
- IAP_COPY_RAM2FLASH = 51, /* Copy RAM to Flash */
- IAP_ERASE = 52, /* Erase sector(s) */
- IAP_BLANK_CHECK = 53, /* Blank check sector(s) */
- IAP_READ_PART_ID = 54, /* Read chip part ID */
- IAP_READ_BOOT_VER = 55, /* Read chip boot code version */
- IAP_COMPARE = 56, /* Compare memory areas */
- IAP_REINVOKE_ISP = 57, /* Reinvoke ISP */
- IAP_READ_SERIAL_NUMBER = 58, /* Read serial number */
- } IAP_COMMAND_CODE;
- /**
- * \brief IAP status code definitions
- */
- typedef enum
- {
- CMD_SUCCESS, /* Command is executed successfully. */
- INVALID_COMMAND, /* Invalid command. */
- SRC_ADDR_ERROR, /* Source address is not on a word boundary. */
- DST_ADDR_ERROR, /* Destination address is not on a correct boundary. */
- SRC_ADDR_NOT_MAPPED, /* Source address is not mapped in the memory map. */
- DST_ADDR_NOT_MAPPED, /* Destination address is not mapped in the memory map. */
- COUNT_ERROR, /* Byte count is not multiple of 4 or is not a permitted value. */
- INVALID_SECTOR, /* Sector number is invalid. */
- SECTOR_NOT_BLANK, /* Sector is not blank. */
- SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION, /* Command to prepare sector for write operation was not executed. */
- COMPARE_ERROR, /* Source and destination data is not same. */
- BUSY, /* Flash programming hardware interface is busy. */
- } IAP_STATUS_CODE;
- /**
- * \brief IAP write length definitions
- */
- typedef enum {
- IAP_WRITE_256 = 256,
- IAP_WRITE_512 = 512,
- IAP_WRITE_1024 = 1024,
- IAP_WRITE_4096 = 4096,
- } IAP_WRITE_SIZE;
- /**
- * \brief IAP command structure
- */
- typedef struct {
- uint32_t cmd; /* Command */
- uint32_t param[4]; /* Parameters */
- uint32_t status; /* status code */
- uint32_t result[4]; /* Result */
- } IAP_COMMAND_Type;
- /**
- * \brief IAP API
- */
- uint32_t Lpc17xxIapGetSectorNr (uint32_t addr);
- IAP_STATUS_CODE Lpc17xxIapSectorRead(uint32_t addr, void *data, size_t len);
- IAP_STATUS_CODE Lpc17xxIapSectorWrite(uint32_t dest, void* source, IAP_WRITE_SIZE size);
- IAP_STATUS_CODE Lpc17xxIapSectorErase(uint32_t start_sec, uint32_t end_sec);
- IAP_STATUS_CODE Lpc17xxIapSectorBlankCheck(uint32_t start_sec, uint32_t end_sec,
- uint32_t *first_nblank_off, uint32_t *first_nblank_val);
- IAP_STATUS_CODE Lpc17xxIapReadBootCodeVersion(uint8_t *major, uint8_t* minor);
- IAP_STATUS_CODE Lpc17xxIapReadDeviceSerialNumber(uint32_t *uid);
- int Lpc17xxIapParamRead(unsigned int pos, void *data, size_t len);
- int Lpc17xxIapParamWrite(unsigned int pos, const void *data, size_t len);
- #endif /* _LPC177X_IAP_H_ */
|