ec521
flashwrite.cpp
- Committer:
- gaving
- Date:
- 2018-04-22
- Revision:
- 0:e2f78ce2a5cf
File content as of revision 0:e2f78ce2a5cf:
#include "mbed.h" #include "FreescaleIAP.h" int flashwrite() { int address = flash_size() - SECTOR_SIZE; //Write in last sector int *data = (int*)address; //By default flash is initialized at 0xFF, this is signed -1, so now we know //the program runs for the first time. You of course need to make sure your program //never writes -1 to this variable if you use this method //Alternatively you could also do the same, but with a seperate "initial run" variable added, //so your other variables can take any value if (data[0] == -1) { printf("Initial run\r\n"); printf("Writing 42 and 42\r\n"); erase_sector(address); int newvalues[2] = {42, 42}; program_flash(address,(char*) newvalues, 8); //Two integers of 4 bytes = 8 bytes while(1); } printf("Current = %d and %d, new is %d and %d\r\n", data[0], data[1], data[0]+1, data[1]-1); int newvalues[2] = {data[0]+1, data[1]-1}; erase_sector(address); program_flash(address, (char*) newvalues, 8); while(1); }