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

Reply via email to