Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
IAP.h
00001 /** IAP : internal Flash memory access library 00002 * 00003 * The internal Flash memory access is described in the LPC1768 and LPC11U24 usermanual. 00004 * http://www.nxp.com/documents/user_manual/UM10360.pdf 00005 * http://www.nxp.com/documents/user_manual/UM10462.pdf 00006 * 00007 * LPC1768 -- 00008 * Chapter 2: "LPC17xx Memory map" 00009 * Chapter 32: "LPC17xx Flash memory interface and programming" 00010 * refering Rev. 01 - 4 January 2010 00011 * 00012 * LPC11U24 -- 00013 * Chapter 2: "LPC11Uxx Memory mapping" 00014 * Chapter 20: "LPC11Uxx Flash programming firmware" 00015 * refering Rev. 03 - 16 July 2012 00016 * 00017 * Released under the MIT License: http://mbed.org/license/mit 00018 * 00019 * revision 1.0 09-Mar-2010 1st release 00020 * revision 1.1 12-Mar-2010 chaged: to make possible to reserve flash area for user 00021 * it can be set by USER_FLASH_AREA_START and USER_FLASH_AREA_SIZE in IAP.h 00022 * revision 2.0 26-Nov-2012 LPC11U24 code added 00023 * revision 2.1 26-Nov-2012 EEPROM access code imported from Suga koubou san's (http://mbed.org/users/okini3939/) library 00024 * http://mbed.org/users/okini3939/code/M0_EEPROM_test/ 00025 * revision 3.0 09-Jan-2015 LPC812 and LPC824 support added 00026 * revision 3.1 13-Jan-2015 LPC1114 support added 00027 * revision 3.1.1 16-Jan-2015 Target MCU name changed for better compatibility across the platforms 00028 */ 00029 00030 00031 #ifndef MBED_IAP 00032 #define MBED_IAP 00033 00034 #include "mbed.h" 00035 00036 #if defined(TARGET_LPC176X) 00037 00038 #define USER_FLASH_AREA_START FLASH_SECTOR_29 00039 #define USER_FLASH_AREA_SIZE (FLASH_SECTOR_SIZE_16_TO_29 * 1) 00040 00041 /* 00042 * memory map information is available in next URL also. 00043 * http://mbed.org/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h 00044 */ 00045 00046 /** Table for start adress of sectors 00047 * 00048 * LPC1768 internal flash memory sector numbers and addresses 00049 * 00050 * LPC1768 flash memory are and sector number/size 00051 * Table 568 "Sectors in a LPC17xx device", Section 5. "Sector numbers", usermanual 00052 * 00053 * 0x00000000 - 0x0007FFFF flash (29 sectors) 00054 * 00055 * Sector0: 0x00000000 - 0x00000FFF 4K 00056 * Sector1: 0x00001000 - 0x00001FFF 4K 00057 * Sector2: 0x00002000 - 0x00002FFF 4K 00058 * Sector3: 0x00003000 - 0x00003FFF 4K 00059 * Sector4: 0x00004000 - 0x00004FFF 4K 00060 * Sector5: 0x00005000 - 0x00005FFF 4K 00061 * Sector6: 0x00006000 - 0x00006FFF 4K 00062 * Sector7: 0x00007000 - 0x00007FFF 4K 00063 * Sector8: 0x00008000 - 0x00008FFF 4K 00064 * Sector9: 0x00009000 - 0x00009FFF 4K 00065 * Sector10: 0x0000A000 - 0x0000AFFF 4K 00066 * Sector11: 0x0000B000 - 0x0000BFFF 4K 00067 * Sector12: 0x0000C000 - 0x0000CFFF 4K 00068 * Sector13: 0x0000D000 - 0x0000DFFF 4K 00069 * Sector14: 0x0000E000 - 0x0000EFFF 4K 00070 * Sector15: 0x0000F000 - 0x0000FFFF 4K 00071 * 00072 * Sector16: 0x00010000 - 0x00017FFF 32K 00073 * Sector17: 0x00018000 - 0x0001FFFF 32K 00074 * Sector18: 0x00020000 - 0x00027FFF 32K 00075 * Sector19: 0x00028000 - 0x0002FFFF 32K 00076 * Sector20: 0x00030000 - 0x00037FFF 32K 00077 * Sector21: 0x00038000 - 0x0003FFFF 32K 00078 * Sector22: 0x00040000 - 0x00047FFF 32K 00079 * Sector23: 0x00048000 - 0x0004FFFF 32K 00080 * Sector24: 0x00050000 - 0x00057FFF 32K 00081 * Sector25: 0x00058000 - 0x0005FFFF 32K 00082 * Sector26: 0x00060000 - 0x00067FFF 32K 00083 * Sector27: 0x00068000 - 0x0006FFFF 32K 00084 * Sector28: 0x00070000 - 0x00077FFF 32K 00085 * Sector29: 0x00078000 - 0x0007FFFF 32K 00086 */ 00087 00088 #define FLASH_SECTOR_0 0x00000000 00089 #define FLASH_SECTOR_1 0x00001000 00090 #define FLASH_SECTOR_2 0x00002000 00091 #define FLASH_SECTOR_3 0x00003000 00092 #define FLASH_SECTOR_4 0x00004000 00093 #define FLASH_SECTOR_5 0x00005000 00094 #define FLASH_SECTOR_6 0x00006000 00095 #define FLASH_SECTOR_7 0x00007000 00096 #define FLASH_SECTOR_8 0x00008000 00097 #define FLASH_SECTOR_9 0x00009000 00098 #define FLASH_SECTOR_10 0x0000A000 00099 #define FLASH_SECTOR_11 0x0000B000 00100 #define FLASH_SECTOR_12 0x0000C000 00101 #define FLASH_SECTOR_13 0x0000D000 00102 #define FLASH_SECTOR_14 0x0000E000 00103 #define FLASH_SECTOR_15 0x0000F000 00104 #define FLASH_SECTOR_16 0x00010000 00105 #define FLASH_SECTOR_17 0x00018000 00106 #define FLASH_SECTOR_18 0x00020000 00107 #define FLASH_SECTOR_19 0x00028000 00108 #define FLASH_SECTOR_20 0x00030000 00109 #define FLASH_SECTOR_21 0x00038000 00110 #define FLASH_SECTOR_22 0x00040000 00111 #define FLASH_SECTOR_23 0x00048000 00112 #define FLASH_SECTOR_24 0x00050000 00113 #define FLASH_SECTOR_25 0x00058000 00114 #define FLASH_SECTOR_26 0x00060000 00115 #define FLASH_SECTOR_27 0x00068000 00116 #define FLASH_SECTOR_28 0x00070000 00117 #define FLASH_SECTOR_29 0x00078000 00118 #define FLASH_SECTOR_SIZE_0_TO_15 ( 4 * 1024) 00119 #define FLASH_SECTOR_SIZE_16_TO_29 (32 * 1024) 00120 00121 static char * sector_start_adress[] = { 00122 (char *)FLASH_SECTOR_0, 00123 (char *)FLASH_SECTOR_1, 00124 (char *)FLASH_SECTOR_2, 00125 (char *)FLASH_SECTOR_3, 00126 (char *)FLASH_SECTOR_4, 00127 (char *)FLASH_SECTOR_5, 00128 (char *)FLASH_SECTOR_6, 00129 (char *)FLASH_SECTOR_7, 00130 (char *)FLASH_SECTOR_8, 00131 (char *)FLASH_SECTOR_9, 00132 (char *)FLASH_SECTOR_10, 00133 (char *)FLASH_SECTOR_11, 00134 (char *)FLASH_SECTOR_12, 00135 (char *)FLASH_SECTOR_13, 00136 (char *)FLASH_SECTOR_14, 00137 (char *)FLASH_SECTOR_15, 00138 (char *)FLASH_SECTOR_16, 00139 (char *)FLASH_SECTOR_17, 00140 (char *)FLASH_SECTOR_18, 00141 (char *)FLASH_SECTOR_19, 00142 (char *)FLASH_SECTOR_20, 00143 (char *)FLASH_SECTOR_21, 00144 (char *)FLASH_SECTOR_22, 00145 (char *)FLASH_SECTOR_23, 00146 (char *)FLASH_SECTOR_24, 00147 (char *)FLASH_SECTOR_25, 00148 (char *)FLASH_SECTOR_26, 00149 (char *)FLASH_SECTOR_27, 00150 (char *)FLASH_SECTOR_28, 00151 (char *)FLASH_SECTOR_29 00152 }; 00153 00154 #elif defined(TARGET_LPC11UXX) || defined(TARGET_LPC11XX) 00155 00156 #define USER_FLASH_AREA_START FLASH_SECTOR_7 00157 #define USER_FLASH_AREA_SIZE (FLASH_SECTOR_SIZE * 1) 00158 00159 /** Table for start adress of sectors 00160 * 00161 * LPC11U24 internal flash memory sector numbers and addresses 00162 * 00163 * LPC11U24 flash memory are and sector number/size 00164 * Table 334 "LPC11U1x/2x flash sectors", Section 20. "Sector numbers", usermanual 00165 * 00166 * 0x00000000 - 0x00007FFF flash (8 sectors) 00167 * 00168 * Sector0: 0x00000000 - 0x00000FFF 4K 00169 * Sector1: 0x00001000 - 0x00001FFF 4K 00170 * Sector2: 0x00002000 - 0x00002FFF 4K 00171 * Sector3: 0x00003000 - 0x00003FFF 4K 00172 * Sector4: 0x00004000 - 0x00004FFF 4K 00173 * Sector5: 0x00005000 - 0x00005FFF 4K 00174 * Sector6: 0x00006000 - 0x00006FFF 4K 00175 * Sector7: 0x00007000 - 0x00007FFF 4K 00176 */ 00177 00178 #define FLASH_SECTOR_0 0x00000000 00179 #define FLASH_SECTOR_1 0x00001000 00180 #define FLASH_SECTOR_2 0x00002000 00181 #define FLASH_SECTOR_3 0x00003000 00182 #define FLASH_SECTOR_4 0x00004000 00183 #define FLASH_SECTOR_5 0x00005000 00184 #define FLASH_SECTOR_6 0x00006000 00185 #define FLASH_SECTOR_7 0x00007000 00186 #define FLASH_SECTOR_SIZE (4 * 1024) 00187 00188 static char * sector_start_adress[] = { 00189 (char *)FLASH_SECTOR_0, 00190 (char *)FLASH_SECTOR_1, 00191 (char *)FLASH_SECTOR_2, 00192 (char *)FLASH_SECTOR_3, 00193 (char *)FLASH_SECTOR_4, 00194 (char *)FLASH_SECTOR_5, 00195 (char *)FLASH_SECTOR_6, 00196 (char *)FLASH_SECTOR_7, 00197 }; 00198 00199 #elif defined(TARGET_LPC81X) || defined(TARGET_LPC82X) 00200 00201 #define USER_FLASH_AREA_START FLASH_SECTOR_15 00202 #define USER_FLASH_AREA_SIZE (FLASH_SECTOR_SIZE * 1) 00203 00204 /** Table for start adress of sectors 00205 * 00206 * LPC812/LPC824 internal flash memory sector numbers and addresses 00207 * 00208 * 0x00000000 - 0x00003FFF flash (16 sectors for LPC812) 00209 * 0x00000000 - 0x00007FFF flash (32 sectors for LPC824) 00210 * 00211 * Sector0: 0x00000000 - 0x000003FF 1K 00212 * Sector1: 0x00000400 - 0x000007FF 1K 00213 * Sector2: 0x00000800 - 0x00000BFF 1K 00214 * Sector3: 0x00000C00 - 0x00000FFF 1K 00215 * Sector4: 0x00001000 - 0x000013FF 1K 00216 * Sector5: 0x00001400 - 0x000017FF 1K 00217 * Sector6: 0x00001800 - 0x00001BFF 1K 00218 * Sector7: 0x00001C00 - 0x00001FFF 1K 00219 * Sector8: 0x00002000 - 0x000023FF 1K 00220 * Sector9: 0x00002400 - 0x000027FF 1K 00221 * Sector10: 0x00002800 - 0x00002BFF 1K 00222 * Sector11: 0x00002C00 - 0x00002FFF 1K 00223 * Sector12: 0x00003000 - 0x000033FF 1K 00224 * Sector13: 0x00003400 - 0x000037FF 1K 00225 * Sector14: 0x00003800 - 0x00003BFF 1K 00226 * Sector15: 0x00003C00 - 0x00003FFF 1K 00227 * Sector16: 0x00004000 - 0x000043FF 1K (LPC824 only) 00228 * Sector17: 0x00004400 - 0x000047FF 1K (LPC824 only) 00229 * Sector18: 0x00004800 - 0x00004BFF 1K (LPC824 only) 00230 * Sector19: 0x00004C00 - 0x00004FFF 1K (LPC824 only) 00231 * Sector20: 0x00005000 - 0x000053FF 1K (LPC824 only) 00232 * Sector21: 0x00005400 - 0x000057FF 1K (LPC824 only) 00233 * Sector22: 0x00005800 - 0x00005BFF 1K (LPC824 only) 00234 * Sector23: 0x00005C00 - 0x00005FFF 1K (LPC824 only) 00235 * Sector24: 0x00006000 - 0x000063FF 1K (LPC824 only) 00236 * Sector25: 0x00006400 - 0x000067FF 1K (LPC824 only) 00237 * Sector26: 0x00006800 - 0x00006BFF 1K (LPC824 only) 00238 * Sector27: 0x00006C00 - 0x00006FFF 1K (LPC824 only) 00239 * Sector28: 0x00007000 - 0x000073FF 1K (LPC824 only) 00240 * Sector29: 0x00007400 - 0x000077FF 1K (LPC824 only) 00241 * Sector30: 0x00007800 - 0x00007BFF 1K (LPC824 only) 00242 * Sector31: 0x00007C00 - 0x00007FFF 1K (LPC824 only) 00243 */ 00244 00245 #define FLASH_SECTOR_0 0x00000000 00246 #define FLASH_SECTOR_1 0x00000400 00247 #define FLASH_SECTOR_2 0x00000800 00248 #define FLASH_SECTOR_3 0x00000C00 00249 #define FLASH_SECTOR_4 0x00001000 00250 #define FLASH_SECTOR_5 0x00001400 00251 #define FLASH_SECTOR_6 0x00001800 00252 #define FLASH_SECTOR_7 0x00001C00 00253 #define FLASH_SECTOR_8 0x00002000 00254 #define FLASH_SECTOR_9 0x00002400 00255 #define FLASH_SECTOR_10 0x00002800 00256 #define FLASH_SECTOR_11 0x00002C00 00257 #define FLASH_SECTOR_12 0x00003000 00258 #define FLASH_SECTOR_13 0x00003400 00259 #define FLASH_SECTOR_14 0x00003800 00260 #define FLASH_SECTOR_15 0x00003C00 00261 #define FLASH_SECTOR_16 0x00004000 // for LPC824 only 00262 #define FLASH_SECTOR_17 0x00004400 // for LPC824 only 00263 #define FLASH_SECTOR_18 0x00004800 // for LPC824 only 00264 #define FLASH_SECTOR_19 0x00004C00 // for LPC824 only 00265 #define FLASH_SECTOR_20 0x00005000 // for LPC824 only 00266 #define FLASH_SECTOR_21 0x00005400 // for LPC824 only 00267 #define FLASH_SECTOR_22 0x00005800 // for LPC824 only 00268 #define FLASH_SECTOR_23 0x00005C00 // for LPC824 only 00269 #define FLASH_SECTOR_24 0x00006000 // for LPC824 only 00270 #define FLASH_SECTOR_25 0x00006400 // for LPC824 only 00271 #define FLASH_SECTOR_26 0x00006800 // for LPC824 only 00272 #define FLASH_SECTOR_27 0x00006C00 // for LPC824 only 00273 #define FLASH_SECTOR_28 0x00007000 // for LPC824 only 00274 #define FLASH_SECTOR_29 0x00007400 // for LPC824 only 00275 #define FLASH_SECTOR_30 0x00007800 // for LPC824 only 00276 #define FLASH_SECTOR_31 0x00007C00 // for LPC824 only 00277 #define FLASH_SECTOR_SIZE (1 * 1024) 00278 00279 static char * sector_start_adress[] = { 00280 (char *)FLASH_SECTOR_0, 00281 (char *)FLASH_SECTOR_1, 00282 (char *)FLASH_SECTOR_2, 00283 (char *)FLASH_SECTOR_3, 00284 (char *)FLASH_SECTOR_4, 00285 (char *)FLASH_SECTOR_5, 00286 (char *)FLASH_SECTOR_6, 00287 (char *)FLASH_SECTOR_7, 00288 (char *)FLASH_SECTOR_8, 00289 (char *)FLASH_SECTOR_9, 00290 (char *)FLASH_SECTOR_10, 00291 (char *)FLASH_SECTOR_11, 00292 (char *)FLASH_SECTOR_12, 00293 (char *)FLASH_SECTOR_13, 00294 (char *)FLASH_SECTOR_14, 00295 (char *)FLASH_SECTOR_15, 00296 (char *)FLASH_SECTOR_16, // for LPC824 only 00297 (char *)FLASH_SECTOR_17, // for LPC824 only 00298 (char *)FLASH_SECTOR_18, // for LPC824 only 00299 (char *)FLASH_SECTOR_19, // for LPC824 only 00300 (char *)FLASH_SECTOR_20, // for LPC824 only 00301 (char *)FLASH_SECTOR_21, // for LPC824 only 00302 (char *)FLASH_SECTOR_22, // for LPC824 only 00303 (char *)FLASH_SECTOR_23, // for LPC824 only 00304 (char *)FLASH_SECTOR_24, // for LPC824 only 00305 (char *)FLASH_SECTOR_25, // for LPC824 only 00306 (char *)FLASH_SECTOR_26, // for LPC824 only 00307 (char *)FLASH_SECTOR_27, // for LPC824 only 00308 (char *)FLASH_SECTOR_28, // for LPC824 only 00309 (char *)FLASH_SECTOR_29, // for LPC824 only 00310 (char *)FLASH_SECTOR_30, // for LPC824 only 00311 (char *)FLASH_SECTOR_31 // for LPC824 only 00312 }; 00313 00314 #endif 00315 00316 /** Error code by IAP routine 00317 * 00318 * Table 588 "ISP Return Codes Summary", Section 7.15 "ISP Return Codes", usermanual 00319 */ 00320 00321 enum error_code { 00322 CMD_SUCCESS, 00323 INVALID_COMMAND, 00324 SRC_ADDR_ERROR, 00325 DST_ADDR_ERROR, 00326 SRC_ADDR_NOT_MAPPED, 00327 DST_ADDR_NOT_MAPPED, 00328 COUNT_ERROR, 00329 INVALID_SECTOR, 00330 SECTOR_NOT_BLANK, 00331 SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION, 00332 COMPARE_ERROR, 00333 BUSY, 00334 PARAM_ERROR, 00335 ADDR_ERROR, 00336 ADDR_NOT_MAPPED, 00337 CMD_LOCKED, 00338 INVALID_CODE, 00339 INVALID_BAUD_RATE, 00340 INVALID_STOP_BIT, 00341 CODE_READ_PROTECTION_ENABLED 00342 }; 00343 00344 00345 00346 /* 00347 * IAP routine entry 00348 * 00349 * "IAP commands" 00350 */ 00351 00352 #define IAP_LOCATION 0x1fff1ff1 00353 typedef void (*IAP_call)(unsigned int [], unsigned int []); 00354 00355 00356 /** IAP class 00357 * 00358 * Interface for internal flash memory access 00359 */ 00360 00361 class IAP 00362 { 00363 public: 00364 00365 /** Constructor for IAP 00366 * 00367 */ 00368 IAP() : iap_entry( reinterpret_cast<IAP_call>(IAP_LOCATION) ), cclk_kHz( SystemCoreClock / 1000 ) {} 00369 00370 /** Reinvoke ISP 00371 * 00372 * @return error code 00373 */ 00374 int reinvoke_isp( void ); 00375 00376 /** Read part identification number 00377 * 00378 * @return device ID 00379 * @see read_serial() 00380 */ 00381 int read_ID( void ); 00382 00383 /** Read device serial number 00384 * 00385 * @return device serial number 00386 * @see read_ID() 00387 */ 00388 int *read_serial( void ); 00389 00390 /** Blank check sector(s) 00391 * 00392 * @param start a Start Sector Number 00393 * @param end an End Sector Number (should be greater than or equal to start sector number). 00394 * @return error code: CMD_SUCCESS | BUSY | SECTOR_NOT_BLANK | INVALID_SECTOR 00395 */ 00396 int blank_check( int start, int end ); 00397 00398 /** Erase Sector(s) 00399 * 00400 * @param start a Start Sector Number 00401 * @param end an End Sector Number (should be greater than or equal to start sector number). 00402 * @return error code: CMD_SUCCESS | BUSY | SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION | INVALID_SECTOR 00403 */ 00404 int erase( int start, int end ); 00405 00406 /** Prepare sector(s) for write operation 00407 * 00408 * @param start a Start Sector Number 00409 * @param end an End Sector Number (should be greater than or equal to start sector number). 00410 * @return error code: CMD_SUCCESS | BUSY | INVALID_SECTOR 00411 */ 00412 int prepare( int start, int end ); 00413 00414 /** Copy RAM to Flash 00415 * 00416 * @param source_addr Source RAM address from which data bytes are to be read. This address should be a word boundary. 00417 * @param target_addr Destination flash address where data bytes are to be written. This address should be a 256 byte boundary. 00418 * @param size Number of bytes to be written. Should be 256 | 512 | 1024 | 4096. 00419 * @return error code: CMD_SUCCESS | SRC_ADDR_ERROR (Address not a word boundary) | DST_ADDR_ERROR (Address not on correct boundary) | SRC_ADDR_NOT_MAPPED | DST_ADDR_NOT_MAPPED | COUNT_ERROR (Byte count is not 256 | 512 | 1024 | 4096) | SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION | BUSY 00420 */ 00421 int write( char *source_addr, char *target_addr, int size ); 00422 00423 /** Compare <address1> <address2> <no of bytes> 00424 * 00425 * @param source_addr Starting flash or RAM address of data bytes to be compared. This address should be a word boundary. 00426 * @param target_addr Starting flash or RAM address of data bytes to be compared. This address should be a word boundary. 00427 * @param size Number of bytes to be compared; should be a multiple of 4. 00428 * @return error code: CMD_SUCCESS | COMPARE_ERROR | COUNT_ERROR (Byte count is not a multiple of 4) | ADDR_ERROR | ADDR_NOT_MAPPED 00429 */ 00430 int compare( char *source_addr, char *target_addr, int size ); 00431 00432 /** Read Boot code version number 00433 * 00434 * @return 2 bytes of boot code version number 00435 */ 00436 int read_BootVer( void ); 00437 00438 /** Get user reserved flash start address 00439 * 00440 * @return start address of user reserved flash memory 00441 * @see reserved_flash_area_size() 00442 */ 00443 00444 char *reserved_flash_area_start( void ); 00445 00446 /** Get user reserved flash size 00447 * 00448 * @return size of user reserved flash memory 00449 * @see reserved_flash_area_start() 00450 */ 00451 int reserved_flash_area_size( void ); 00452 00453 #if defined(TARGET_LPC11UXX) 00454 00455 /** Copy RAM to EEPROM (LPC11U24) 00456 * 00457 * @param source_addr Source RAM address from which data bytes are to be read. 00458 * @param target_addr Destination EEPROM address where data bytes are to be written. 00459 * @param size Number of bytes to be written. 00460 * @return error code: CMD_SUCCESS | SRC_ADDR_NOT_MAPPED | DST_ADDR_NOT_MAPPED 00461 * Remark: The top 64 bytes of the EEPROM memory are reserved and cannot be written to. 00462 */ 00463 int write_eeprom( char *source_addr, char *target_addr, int size ); 00464 00465 /** Copy EEPROM to RAM (LPC11U24) 00466 * 00467 * @param source_addr Source EEPROM address from which data bytes are to be read. 00468 * @param target_addr Destination RAM address where data bytes are to be written. 00469 * @param size Number of bytes to be written. 00470 * @return error code: CMD_SUCCESS | SRC_ADDR_NOT_MAPPED | DST_ADDR_NOT_MAPPED 00471 * Remark: The top 64 bytes of the EEPROM memory are reserved and cannot be written to. 00472 */ 00473 int read_eeprom( char *source_addr, char *target_addr, int size ); 00474 00475 #elif defined(TARGET_LPC81X) || defined(TARGET_LPC82X) 00476 00477 /** Erase page(s) (LPC812, LPC824) 00478 * 00479 * @param start Start page number. 00480 * @param end End page number (should be greater than or equal to start page). 00481 * @return error code: CMD_SUCCESS | BUSY | SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION | INVALID_SECTOR 00482 */ 00483 int erase_page( int start, int end ); 00484 00485 #endif 00486 00487 private: 00488 IAP_call iap_entry; 00489 unsigned int IAP_command[ 5 ]; 00490 unsigned int IAP_result[ 5 ]; 00491 int cclk_kHz; 00492 } 00493 ; 00494 00495 #endif // #ifndef MBED_IAP 00496
Generated on Fri Jul 15 2022 02:25:27 by
1.7.2