Hi David, I am facing the same problem as you have mentioned below. I did a sync(PageNumber), the syncDone event still fails.
I do a write and then on the writeDone event I call a sync. The syncDone still fails. Could you please let me know what the problem could be? I am using telosb mote as well. The same problem does not occur on mica2 motes. Thanks and Regards, Santosh > I've never had a problem with garbage being written to the > end of a page, but I do have another observation on At45db > sync/flush. I'm using TinyOS 2.x now, but saw the same > sort of behavior in TinyOS 1.x. > > When I do a At45dbP.syncAll() or flushAll(), I > intermittently lose data on flash after a reboot. In > other words, data I just got done writing to the chip > didn't make it to non-volatile memory and is permanently > lost. This happens even if I automatically retry the > syncAll() command when syncDone(..) signals FAIL. > > When I do a sync(<specific page number>) instead of a > syncAll(), my critical data always gets written to > non-volatile memory correctly. The trick is the low-level > abstractions (in my case, DirectStorage) needs to keep > track of the last page it wrote to pass in as an argument > to sync(). > > Therefore, I rely on sync(<page #>) to ensure my data is > written correctly to non-volatile memory, since syncAll() > misbehaves intermittently. I notice it usually happens > when writing data across several pages that are all > located in completely different areas of the flash. > > -David Moss > > > > > On Tue, 6 Feb 2007 14:31:26 -0500 > "Jacob Sorber" <[EMAIL PROTECTED]> wrote: > > Okay, that makes sense, but now I have no idea what is > >happening. I am > > writing data in 50 byte chunks to a single page in flash > >(which I erase > > before writing). After each write I call sync(). The > >first 4 writes seem > > to work as intended (when I read the page, the flash is > >all 1s after the > > data I have written). After the 5th write, though 6 > >bytes of garbage are > > appended (page offsets 250-255). Do you know why this > >might be happening. > > I have verified that when I call PageEEPROM.write(), the > >"size" value is, in > > fact, 50. > > > > Thanks, > > Jacob > > > > On 2/6/07, David Gay <[EMAIL PROTECTED]> wrote: > >> > >> On 2/6/07, Jacob Sorber <[EMAIL PROTECTED]> wrote: > >> > I am seeing some bizarre behavior, and I suspect that > >>it is due to my > >> not > >> > understanding exactly what these two functions do. I > >>have not been able > >> to > >> > find any documentation on the subject, so any help > >>would be great. > >> > >> flush starts writing the specified page to flash and > >>signals > >> completion "immediiately" (well, before the write > >>completes). sync > >> does the same thing, but only signals completion when > >>the write is > >> complete. > >> > >> Note that the pages are handled like a cache, so may be > >>flushed anyway > >> because of subsequent reads or writes. But if you want > >>to ensure data > >> is written, you do need to call sync or flush. > >> > >> David Gay > >> > > _______________________________________________ > Tinyos-help mailing list > [email protected] > https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > _______________________________________________ Tinyos-help mailing list [email protected] https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
