This program loads values from flash into an array and prints them. If reads 'g' from pc, then adds 20 to every element in the array, and stores it in flash.

Dependencies:   mbed FreescaleIAP

Files at this revision

API Documentation at this revision

Comitter:
diegocode
Date:
Sun Oct 25 02:03:12 2020 +0000
Commit message:
versin de prueba ; carga valores desde flash a un vector y si recibe 'g' de la pc ; le suma 20 a c/u y los guarda nuevamente en flash.; ; ;

Changed in this revision

FreescaleIAP.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 48302c51206d FreescaleIAP.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FreescaleIAP.lib	Sun Oct 25 02:03:12 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/Sissors/code/FreescaleIAP/#ab8a833a25eb
diff -r 000000000000 -r 48302c51206d main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Oct 25 02:03:12 2020 +0000
@@ -0,0 +1,69 @@
+#include "mbed.h"
+#include "FreescaleIAP.h"
+ 
+// cantidad de bytes a guardar
+const int CANT = 10;
+ 
+DigitalOut myled(LED_GREEN);
+Serial pc(USBTX, USBRX);
+ 
+int main()
+{
+    unsigned int status_prg = 0;
+    
+    pc.baud(9600);
+    
+    // address es la dirección donde grabará los 10 bytes
+    // el último sector de FLASH
+    const int address = flash_size() - SECTOR_SIZE;   
+    
+    pc.printf("direccion donde graba: %x\r\ncantidad de bytes maximo %d\r\n", address, SECTOR_SIZE);
+    
+    // data apunta al inicio de la dirección donde están grabados loos datos
+    char *data = (char*)address;    
+
+//    erase_sector(address);  // pone todo el sector de datos en 0xFF (borrado)
+
+    // buffer donde cargo datos que leo o que voy a escribir
+    char valores[CANT];
+
+    pc.printf("- contenido actual: ---\r\n");
+    // muestra el contenido de los 10 bytes
+    // carga datos en el vector 
+    // si es 0xFF (nunca se utilizó) coloca en el vector un valor default 
+    for(int k =0; k < CANT; k++) {                
+        if (*(data + k) != 0xFF) 
+            valores[k] = *(data + k);
+        else 
+            valores[k] = k;
+        pc.printf("%x - %d\r\n", valores[k], valores[k]);
+    }
+ 
+    pc.printf("- a grabar: ---\r\n");
+    
+          
+    bool grabado = false;
+    while(true) {
+        // si se recibe 'g' de la pc...
+        if (pc.getc() == 'g'){
+            
+            // y no se grabó aun...
+            if (!grabado){
+                // le suma 20 a cada valor en el vector 
+                for(int k =0; k < CANT; k++) {
+                   valores[k] = valores[k] + 20;                   
+                   pc.printf("%x - %d\r\n", valores[k], valores[k]);
+                }
+                
+                // borra el espacio de FLASH
+                status_prg = erase_sector(address);
+                pc.printf("borrado 0x%02X-----\r\n", status_prg);
+                
+                // guarda el vector en FLASH
+                status_prg = program_flash(address, (char*)&valores, CANT);
+                pc.printf("grabado 0x%02X-----\r\n", status_prg);
+                grabado = true;
+            }
+        }
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 48302c51206d mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun Oct 25 02:03:12 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file