RAS
Fork of IAP by
Diff: IAP.cpp
- Revision:
- 11:69e39050fccf
- Parent:
- 10:59f7e32ae397
- Child:
- 12:91ac1391a13b
--- a/IAP.cpp Thu Aug 16 06:24:19 2018 +0000 +++ b/IAP.cpp Fri Aug 24 16:38:19 2018 +0000 @@ -34,6 +34,7 @@ #define USER_FLASH_AREA_START_STR( x ) STR( x ) #define STR( x ) #x +#define MEM_SIZE 256 unsigned char user_area[ USER_FLASH_AREA_SIZE ] __attribute__((section( ".ARM.__at_" USER_FLASH_AREA_START_STR( USER_FLASH_AREA_START ) ), zero_init)); @@ -178,6 +179,37 @@ return ( USER_FLASH_AREA_SIZE ); } +// ************ Ajout PR 22/8/2018 *********************************** +void IAP::eraseFlashSector(int numSecteur) +{ + prepare( numSecteur, numSecteur ); + erase( numSecteur, numSecteur ); +} + +int IAP::writeFlashAd(char *data,int numSecteur,int numBlock) +{ + prepare(numSecteur, numSecteur ); + int r = write( data, sector_start_adress[ numSecteur]+MEM_SIZE*numBlock, MEM_SIZE ); + return(r); +} + +void IAP::readFlashAd(char *data,int numSecteur,int numBlock) +{ + memcpy( data, sector_start_adress[ numSecteur]+MEM_SIZE*numBlock, MEM_SIZE ); +} +#define FLASH_NBBLOCK 128 // nb blocks dans un secteur + +void IAP::copyFlashSector(int numSecteurSrc,int numSecteurDest) +{ + char data[MEM_SIZE]; + eraseFlashSector(numSecteurDest); + for (int numBlock =0; numBlock<FLASH_NBBLOCK; numBlock++) { + readFlashAd(data, numSecteurSrc,numBlock); + writeFlashAd(data, numSecteurDest,numBlock); + } +} +// ************ Fin Ajout PR 22/8/2018 *********************************** + #if defined(TARGET_LPC11UXX) int IAP::write_eeprom( char *source_addr, char *target_addr, int size )