Hi David,
I am still facing problems accessing the flash.
I have installed the FlashBridgeViewerTestC in the telosb mote. I ran the
SerialForwarder and then I ran the FlashViewer java application part of the
com.rincon.flashbridgeviewer.FlashViewer.
I ran the following command and that is the output I get.
$ java com.rincon.flashbridgeviewer.FlashViewer -read 0 0x10
0x0 to 0x10
_________________________________________________
In the SerialFowarder Interface there is a message saying "write failed". I am
not sure what the problem is, as I am trying to read an still there is a write
error. I checked the Serial Forwarder code and the error message is thrown in
readPackets() function when executing the following line
if (!listenServer.source.writePacket(packet))
sf.verbose.message("write failed");
I am stuck again and I am not sure if there is something elementary I am missing
out, so please correct me in any of the steps that I have taken this far.
Thanks in advance.
Regards,
Santosh.
> Hi Santosh,
>
> I don't think I'm going to be much help here, because I
> haven't used BlockStorage in a long time. Are you mounting
> to the volume correctly? Both your read and write
> interfaces need to be mounted to the same volume, or you
> won't be reading back from the same place you wrote.
>
> If you're interested in simply reading/writing to the
> flash in TinyOS 1.x, check out the FlashBridge library
> located in tinyos-1.x/contrib/rincon/tos/lib/FlashBridge.
> There's an example application in
> tinyos-1.x\contrib\rincon\tos\lib\FlashBridge\apps\FlashBridgeViewer
>
> Make sure you include the stm25p media directory inside
> FlashBridge/media when you try to compile. You'll need to
> use rincon's FlashBridgeViewer java app to get the
> FlashBridgeViewer working properly. But you can use the
> FlashBridge interface without the viewer in your own
> application.
>
> Below is an excerpt from the readme in
> tinyos-1.x\contrib\rincon\tos\lib\FlashBridge\apps\FlashBridgeViewer
>
> Goodluck,
> -David
>
>
> I always alias "flashbridge" to "java
> com.rincon.flashbridgeviewer.FlashViewer"
> just so you know what's going on...
>
>
> First let's take a look at what commands we have available
> from the
> FlashBridge. Compile FlashBridgeViewerTest or
> BlackbookConnect or something
> to the mote and connect to the mote with your serial
> forwarder. Then...
>
>
> $ flashbridge
> No arguments found
> Usage: java com.rincon.flashviewer [mote] [command]
> COMMANDS
> -read [start address] [range]
> -write [start address] [22 characters]
> -erase [sector]
> -flush
> -crc [start address] [range]
> -ping
>
>
> Let's ping the mote to see if we have FlashBridgeViewer
> installed:
> $ flashbridge -ping
> Pong! The mote has FlashViewer installed.
>
>
> Great, now let's read a page of data:
> $ flashbridge -read 0 0x100
> 0x0 to 0x100
> _________________________________________________
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
>
>
> Let's write some data. The FlashBridge itself lets you
> write as much data at a time as you want, but our
> TOS_Msg's being
> passed back and forth over UART only hold so much. And
> there's
> not much you can specify on the command line anyway, so
> here's what
> happens:
>
> $ flashbridge -write 0x0 hello_flashbridge!
> Writing data
> 0x68 0x65 0x6c 0x6c 0x6f 0x5f 0x66 0x6c 0x61 0x73 0x68
> 0x62 0x72 0x69 0x64 0x67
> 0x65 0x21
> SUCCESS: 18 bytes written to 0x0
>
>
> We'll read 0x20 bytes back from 0x0 to make sure what we
> wrote exists:
> $ flashbridge -read 0 0x20
> 0x0 to 0x20
> _________________________________________________
> 68 65 6C 6C 6F 5F 66 6C 61 73 68 62 72 69 64 67 |
> hello_fl ashbridge
> 65 21 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | !
>
> Keep in mind that the AT45DB flash doesn't necessarily put
> what you wrote
> onto the physical flash until you flush it out, so here's
> how you flush:
>
> $ flashbridge -flush
> SUCCESS: Flush complete
>
>
> We can take the CRC of the data we just wrote:
> $ flashbridge -crc 0x0 18
> SUCCESS: CRC is 0x6D3F
>
>
> And we can erase the entire sector. FlashBridge was
> designed for sector
> erases, which you can actually go in and edit if you want
> - but it's not
> entirely recommended. The ST M25P80 flash erases in
> sector-lengths, which
> is 64kB at a time. Atmel's AT45DB flash chip erases in
> page-lengths, which
> is 256B at a time. To maintain compatibility between the
> two chips,
> FlashBridge erases the full 64kB at a time on both the
> AT45DB and the STM25P
> chips. It can probably be done faster on the AT45DB
> implementation
> than it is right now, but I haven't programmed any of the
> block erase
> stuff that the chip actually supports.
>
> Another option would be to go in and edit the
> FlashSettings.h
> file for the AT45DB and define smaller sector sizes and
> readjust
> all those flash parameters, and that should maintain
> compatibility as well.
>
> So let's erase. It takes about 1 second/sector - which is
> 1 second per erase.
> $ flashbridge -erase 0
> SUCCESS: Sector 0 erase complete
>
> And for that AT45DB you'll want to flush after that as
> well to make sure
> changes are commmited to flash.
>
>
>
> Now let's read back address 0x0:
> $ flashbridge -read 0 0x100
> 0x0 to 0x100
> _________________________________________________
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF |
>
>
>
>
>
> On Wed, 7 Feb 2007 22:59:20 -0600 (CST)
> "SANTOSH KUMAR" <[EMAIL PROTECTED]> wrote:
> > Hi David,
> >
> > I use blockstorage interface and I use BlockWrite and
> >BlockRead to write and
> > read respectively on telosb. I am able to read the data
> >but the data is not the
> > same as the one written. I am not sure whether the write
> >is happening correctly.
> > I suspect this because I called some Leds in the
> >writeDone and that call is not
> > being executed.
> >
> > This is my write call.
> >
> > return_val = call BlockWrite.write(0,Data,6);
> > if(!return_val)
> > call Leds.yellowOn();
> >
> > The Data is initially set to
> >
> > memset((void *)Data,10,6)
> >
> >
> > In my writeDone
> >
> > call Leds.yellowOn();
> >
> > In another program I have written the read structure
> >where I read from the flash
> > using the following call
> >
> > return_val = call FlashRead.read(0,Data,6);
> > if(!return_val)
> > call Leds.redOn();
> >
> > In the readDone I do a memcmp of the 2; the data read
> >with the written data. It
> > says they are not the same.
> >
> > Please let me know where I have made a mistake.
> >
> > Is there a way I can check the exact content of the
> >flash?
> >
> > Thanks in advance.
> >
> > Regards,
> > Santosh.
> >
> >
>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help