Diego Codevilla / Mbed 2 deprecated save_to_flash

Dependencies:   mbed FreescaleIAP

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "FreescaleIAP.h"
00003  
00004 // cantidad de bytes a guardar
00005 const int CANT = 10;
00006  
00007 DigitalOut myled(LED_GREEN);
00008 Serial pc(USBTX, USBRX);
00009  
00010 int main()
00011 {
00012     unsigned int status_prg = 0;
00013     
00014     pc.baud(9600);
00015     
00016     // address es la dirección donde grabará los 10 bytes
00017     // el último sector de FLASH
00018     const int address = flash_size() - SECTOR_SIZE;   
00019     
00020     pc.printf("direccion donde graba: %x\r\ncantidad de bytes maximo %d\r\n", address, SECTOR_SIZE);
00021     
00022     // data apunta al inicio de la dirección donde están grabados loos datos
00023     char *data = (char*)address;    
00024 
00025 //    erase_sector(address);  // pone todo el sector de datos en 0xFF (borrado)
00026 
00027     // buffer donde cargo datos que leo o que voy a escribir
00028     char valores[CANT];
00029 
00030     pc.printf("- contenido actual: ---\r\n");
00031     // muestra el contenido de los 10 bytes
00032     // carga datos en el vector 
00033     // si es 0xFF (nunca se utilizó) coloca en el vector un valor default 
00034     for(int k =0; k < CANT; k++) {                
00035         if (*(data + k) != 0xFF) 
00036             valores[k] = *(data + k);
00037         else 
00038             valores[k] = k;
00039         pc.printf("%x - %d\r\n", valores[k], valores[k]);
00040     }
00041  
00042     pc.printf("- a grabar: ---\r\n");
00043     
00044           
00045     bool grabado = false;
00046     while(true) {
00047         // si se recibe 'g' de la pc...
00048         if (pc.getc() == 'g'){
00049             
00050             // y no se grabó aun...
00051             if (!grabado){
00052                 // le suma 20 a cada valor en el vector 
00053                 for(int k =0; k < CANT; k++) {
00054                    valores[k] = valores[k] + 20;                   
00055                    pc.printf("%x - %d\r\n", valores[k], valores[k]);
00056                 }
00057                 
00058                 // borra el espacio de FLASH
00059                 status_prg = erase_sector(address);
00060                 pc.printf("borrado 0x%02X-----\r\n", status_prg);
00061                 
00062                 // guarda el vector en FLASH
00063                 status_prg = program_flash(address, (char*)&valores, CANT);
00064                 pc.printf("grabado 0x%02X-----\r\n", status_prg);
00065                 grabado = true;
00066             }
00067         }
00068     }
00069 }