DipCortex EEprom IAP library

Dependents:   DipCortex-USB-EEProm vfd_modular_clock_mbed

DipCortex EEprom library.

Example project :

Import programDipCortex-USB-EEProm

DipCortex USB CDC + EEprom

Committer:
SolderSplashLabs
Date:
Sun Feb 23 22:52:19 2014 +0000
Revision:
0:53297f36733d
DipCortex EEprom, port of the NXP IAP code that allows reading and writing to the on chip 4KB eeprom.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SolderSplashLabs 0:53297f36733d 1 #define USER_START_SECTOR SECTOR_2_START
SolderSplashLabs 0:53297f36733d 2
SolderSplashLabs 0:53297f36733d 3 #ifndef _SBL_IAP_H
SolderSplashLabs 0:53297f36733d 4 #define _SBL_IAP_H
SolderSplashLabs 0:53297f36733d 5
SolderSplashLabs 0:53297f36733d 6
SolderSplashLabs 0:53297f36733d 7 #define SECTOR_0_START 0x00000000
SolderSplashLabs 0:53297f36733d 8 #define SECTOR_1_START 0x00001000
SolderSplashLabs 0:53297f36733d 9 #define SECTOR_2_START 0x00002000
SolderSplashLabs 0:53297f36733d 10 #define SECTOR_3_START 0x00003000
SolderSplashLabs 0:53297f36733d 11 #define SECTOR_4_START 0x00004000
SolderSplashLabs 0:53297f36733d 12 #define SECTOR_5_START 0x00005000
SolderSplashLabs 0:53297f36733d 13 #define SECTOR_6_START 0x00006000
SolderSplashLabs 0:53297f36733d 14 #define SECTOR_7_START 0x00007000
SolderSplashLabs 0:53297f36733d 15 #define SECTOR_8_START 0x00008000
SolderSplashLabs 0:53297f36733d 16 #define SECTOR_9_START 0x00009000
SolderSplashLabs 0:53297f36733d 17 #define SECTOR_10_START 0x0000A000
SolderSplashLabs 0:53297f36733d 18 #define SECTOR_11_START 0x0000B000
SolderSplashLabs 0:53297f36733d 19 #define SECTOR_12_START 0x0000C000
SolderSplashLabs 0:53297f36733d 20 #define SECTOR_13_START 0x0000D000
SolderSplashLabs 0:53297f36733d 21 #define SECTOR_14_START 0x0000E000
SolderSplashLabs 0:53297f36733d 22 #define SECTOR_15_START 0x0000F000
SolderSplashLabs 0:53297f36733d 23
SolderSplashLabs 0:53297f36733d 24
SolderSplashLabs 0:53297f36733d 25 #define SECTOR_0_END 0x00000FFF
SolderSplashLabs 0:53297f36733d 26 #define SECTOR_1_END 0x00001FFF
SolderSplashLabs 0:53297f36733d 27 #define SECTOR_2_END 0x00002FFF
SolderSplashLabs 0:53297f36733d 28 #define SECTOR_3_END 0x00003FFF
SolderSplashLabs 0:53297f36733d 29 #define SECTOR_4_END 0x00004FFF
SolderSplashLabs 0:53297f36733d 30 #define SECTOR_5_END 0x00005FFF
SolderSplashLabs 0:53297f36733d 31 #define SECTOR_6_END 0x00006FFF
SolderSplashLabs 0:53297f36733d 32 #define SECTOR_7_END 0x00007FFF
SolderSplashLabs 0:53297f36733d 33 #define SECTOR_8_END 0x00008FFF
SolderSplashLabs 0:53297f36733d 34 #define SECTOR_9_END 0x00009FFF
SolderSplashLabs 0:53297f36733d 35 #define SECTOR_10_END 0x0000AFFF
SolderSplashLabs 0:53297f36733d 36 #define SECTOR_11_END 0x0000BFFF
SolderSplashLabs 0:53297f36733d 37 #define SECTOR_12_END 0x0000CFFF
SolderSplashLabs 0:53297f36733d 38 #define SECTOR_13_END 0x0000DFFF
SolderSplashLabs 0:53297f36733d 39 #define SECTOR_14_END 0x0000EFFF
SolderSplashLabs 0:53297f36733d 40 #define SECTOR_15_END 0x0000FFFF
SolderSplashLabs 0:53297f36733d 41
SolderSplashLabs 0:53297f36733d 42 #define CCLK 72000 /* 72,000 KHz for IAP call WiFI Dip and M3 - TODO : Addjust for M0*/
SolderSplashLabs 0:53297f36733d 43
SolderSplashLabs 0:53297f36733d 44 #define FLASH_BUF_SIZE 256
SolderSplashLabs 0:53297f36733d 45 #define SECTOR_0_START_ADDR 0
SolderSplashLabs 0:53297f36733d 46 #define SECTOR_SIZE 4096
SolderSplashLabs 0:53297f36733d 47 #define MAX_USER_SECTOR 16
SolderSplashLabs 0:53297f36733d 48 #define PAGES_PER_SECTOR 16
SolderSplashLabs 0:53297f36733d 49
SolderSplashLabs 0:53297f36733d 50 //extern const unsigned sector_start_map[];
SolderSplashLabs 0:53297f36733d 51 //extern const unsigned sector_end_map[];
SolderSplashLabs 0:53297f36733d 52 extern const unsigned crp;
SolderSplashLabs 0:53297f36733d 53
SolderSplashLabs 0:53297f36733d 54 unsigned write_flash(unsigned * dst, char * src, unsigned no_of_bytes);
SolderSplashLabs 0:53297f36733d 55 void erase_user_flash(void);
SolderSplashLabs 0:53297f36733d 56 void IAP_Init(void);
SolderSplashLabs 0:53297f36733d 57 int IAP_CheckForUserCode(void);
SolderSplashLabs 0:53297f36733d 58 int IAP_WritePage (unsigned * dst, char * src, unsigned no_of_bytes);
SolderSplashLabs 0:53297f36733d 59 void IAP_Eeprom_Write ( uint32_t eeAddress, uint8_t* buffAddress, uint32_t byteCount );
SolderSplashLabs 0:53297f36733d 60 void IAP_Eeprom_Read ( uint32_t eeAddress, uint8_t* buffAddress, uint32_t byteCount );
SolderSplashLabs 0:53297f36733d 61
SolderSplashLabs 0:53297f36733d 62 typedef enum
SolderSplashLabs 0:53297f36733d 63 {
SolderSplashLabs 0:53297f36733d 64 PREPARE_SECTOR_FOR_WRITE=50,
SolderSplashLabs 0:53297f36733d 65 COPY_RAM_TO_FLASH=51,
SolderSplashLabs 0:53297f36733d 66 ERASE_SECTOR=52,
SolderSplashLabs 0:53297f36733d 67 BLANK_CHECK_SECTOR=53,
SolderSplashLabs 0:53297f36733d 68 READ_PART_ID=54,
SolderSplashLabs 0:53297f36733d 69 READ_BOOT_VER=55,
SolderSplashLabs 0:53297f36733d 70 COMPARE=56,
SolderSplashLabs 0:53297f36733d 71 REINVOKE_ISP=57,
SolderSplashLabs 0:53297f36733d 72 ERASE_PAGE=59,
SolderSplashLabs 0:53297f36733d 73 EEPROM_WRITE=61,
SolderSplashLabs 0:53297f36733d 74 EEPROM_READ=62,
SolderSplashLabs 0:53297f36733d 75
SolderSplashLabs 0:53297f36733d 76 }IAP_Command_Code;
SolderSplashLabs 0:53297f36733d 77
SolderSplashLabs 0:53297f36733d 78 #define CMD_SUCCESS 0
SolderSplashLabs 0:53297f36733d 79 #define IAP_ADDRESS 0x1FFF1FF1
SolderSplashLabs 0:53297f36733d 80
SolderSplashLabs 0:53297f36733d 81 #define UPDATE_REQD 133
SolderSplashLabs 0:53297f36733d 82
SolderSplashLabs 0:53297f36733d 83 #endif /* _SBL_IAP_H */