Ciao,
per poter salvare i dati sulla flash, ho caricato la libreria:
Per testare il funzionamento ho seguito l'esempio incluso nella libreria.
Puntando all'indirizzo 0 in lettura, durante il debug, ho subito verificato che esso è già scritto, così come gli indirizzi successivi.
Provando a scrivere alcuni indirizzi, il controllore va in STOP.
Ne deduco che sto puntando ad un'area di memoria già utilizzata dal codice o da altro.
Leggendo il Forum ho visto che c'è la possibilità di definire l'indirizzo di partenza all'interno del file:
DueFlashStorage.h
aggiungendo un offset alla riga:
Il mio problema è: che numero metto?
C'è un modo per sapere come viene suddivisa la memoria della flash?
Aggiungo (se può servire) che programmo Arduino due con LogicLab (PLC) e sto modificando il firmware di arduino per aggiungere funzioni mancanti nella versione base (tipo appunto l'utilizzo della flash) seguendo le indicazione del fornitore dell'applicazione che si trovano qui:
Ho fatto qualche prova aggiuntiva per capire meglio il problema:
ho scoperto che il codice viene caricato nella flash dalla locazione 0xC0000, che è esattamente il primo byte della Flash1, infatti, usando la funzione DueFlashStorage.read, ad ogni locazione, leggo esattamente il codice compilato e dopo l’ultima istruzione, tutti gli indirizzi contengono il valore FF.
La mia idea è quella di usare gli ultimi indirizzi della flash1, in modo da non confliggere con il codice, tanto mi serve solo 1Kb.
Se aggiungo un offset (che vada oltre al codice) alla linea FLASH_START del file DueFlashstorage.h, appena scarico il codice, Arduino va in stop.
Se non metto l’offset e provo a scrivere un byte libero tramite la funzione DueFlashStorage.write…appena scrivo Arduino va in stop.
Sembra essere un problema di blocco/sblocco memoria…ma non saprei come risolvere.
Dubito che qui, oltretutto utilizzando un ambiente di sviluppo (LogicLab) che nulla ha a che vedere con l'IDE di Arduino, troverai molte risposte ... :
Se vuoi, scrivendo rigorosamente in Inglese, puoi provare nella sezione internazionale o, forse meglio, sul forum di Atmel/Microchip.