Arduino-Style read/write using FreescaleIAP for KL25Z
Revision 1:2713ad5a5dab, committed 2018-11-10
- Comitter:
- kpan
- Date:
- Sat Nov 10 10:46:10 2018 +0000
- Parent:
- 0:d21f696a705c
- Commit message:
- Finished functions and docs
Changed in this revision
FlashRW.cpp | Show annotated file Show diff for this revision Revisions of this file |
FlashRW.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r d21f696a705c -r 2713ad5a5dab FlashRW.cpp --- a/FlashRW.cpp Fri Nov 09 11:14:05 2018 +0000 +++ b/FlashRW.cpp Sat Nov 10 10:46:10 2018 +0000 @@ -1,12 +1,34 @@ #include "mbed.h" #include "FreescaleIAP.h" -static int write_address = flash_size() - SECTOR_SIZE; -static int read_address = flash_size() - SECTOR_SIZE; -int write(int* data, size_t data_size){ - erase_sector(write_address); - program_flash(write_address, (char*)&data, data_size); - write_address += data_size; - return 0; +static int start_address = flash_size() - SECTOR_SIZE; +static int write_address = start_address; + +IAPCode write(int* data, size_t data_len){ + IAPCode errorCode; + + if((errorCode = erase_sector(write_address)) != 0) + return errorCode; + if((errorCode = program_flash(write_address, (char*)data, data_len)) != 0) + return errorCode; + write_address += data_len; + return Success; } +IAPCode write(int data){ + IAPCode errorCode; + if((errorCode = erase_sector(write_address)) != 0) + return errorCode; + if((errorCode = program_flash(write_address, (char*)data, sizeof(data))) != 0) + return errorCode; + write_address += sizeof(data); + return Success; +} + +int* getData(){ + return (int*)(start_address); +} + +int getSize(){ + return ((write_address - start_address)/sizeof(int)); +} \ No newline at end of file
diff -r d21f696a705c -r 2713ad5a5dab FlashRW.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FlashRW.h Sat Nov 10 10:46:10 2018 +0000 @@ -0,0 +1,28 @@ +#include "mbed.h" +#include "FreescaleIAP.h" + +/** Write contiguous integer data to flash memory + * + * @param data address of the data to be written + * @param data_len size of data to be written + * @param return Success if no errors were encountered, otherwise one of the error states defined in Freescale.h + */ +IAPCode write(int* data, size_t data_len); + +/** Write a single integer to flash memory + * + * @param data data that needs to be writter + * @param return Success if no errors were encountered, otherwise one of the error states defined in Freescale.h + */ +IAPCode write(int data); +/** Retrieve written data + * + * @param return address of start of data write sector + */ +int *getData(); + +/** Retrieve size of written data + * + * @param return size of data written so far + */ +int getSize(); \ No newline at end of file