How fast are you clocking the 1611 cpu?

How fast are you clocking the SPI feeding the SD card?

That will tell you the max theoretical rate you can transfer data.

The high data rates to the SD assume the parallel 4 bit wide SD protocol
rather than the SPI single bit stream that is probably used on the Shimmer
or on my cards.


On Mon, Dec 31, 2012 at 2:55 PM, Avishay Meron <
avishay.me...@mail.huji.ac.il> wrote:

> Hi all.
> Searching google and the mailing list, I haven't found an explicit answer
> to my problem. Here goes:
> I'm trying to test SD logging max write speed on a shimmer2r. I've tried
> using the FatFS but got unsatisfying results.
> So, I decided to write directly to the SD. Using a simple application (see
> code below), I found that the max rate of SD writing is about 20kB/s. Is
> that it? is this the maximum rate possible? I was hoping to get at least
> 0.5 or 1 MB/s. Any suggestions?
>
> Happy new year to you all...
>
> Here is my test code...
>
> -----------------TestSDP.nc-------------------
> #include "TestSD.h"
>
> module TestSDP{
>     uses{
>         interface Leds;
>         interface Boot;
>         interface SD;
>         interface StdControl as SDStdControl;
>     }
> }
>
> implementation{
>
>     uint8_t resetData[SECTOR_SIZE], dummyData[SECTOR_SIZE];
>     int8_t data=0xff;
>     uint32_t beginSector=1000000, numOfIt=20000, currSector;
>
>     //Using numOfIt=20000, it took the application 17 min and 47 sec to
> run,
>     //from which 8 min and 51 sec to write dummyData.
>     //The rest of the time the application Formated the sectors.
>     //This means writing at about 20kB/s
>
>     event void Boot.booted(){
>         call Leds.led2Toggle();
>         call SDStdControl.start();
>         memset(resetData, 0, SECTOR_SIZE);
>         memset(dummyData, data, SECTOR_SIZE);
>         call Leds.led2Toggle();
>     }
>
>     void FormatSectors()
>     {
>         uint32_t i=0;
>         currSector=beginSector;
>         for (i=0; i<numOfIt; i++, currSector++)
>         {
>             call SD.writeBlock(currSector, resetData);
>         }
>     }
>
>     void WriteDummyData()
>     {
>         uint32_t i=0;
>         currSector=beginSector;
>         for (i=0; i<numOfIt; i++, currSector++)
>         {
>             call SD.writeBlock(currSector, dummyData);
>         }
>     }
>
>     async event void SD.available(){
>         call Leds.led0Toggle();
>         FormatSectors();
>         call Leds.led0Toggle();
>         call Leds.led1Toggle();
>         WriteDummyData();
>         call Leds.led1Toggle();
>         call Leds.led2Toggle();
>     }
>
>     async event void SD.unavailable(){
>     }
> }
>
> -----------------TestSDC.nc-------------------
>
> configuration TestSDC{
> }
> implementation{
>     components MainC, LedsC, SDC, TestSDP as app;
>     app.Boot -> MainC.Boot;
>     app.Leds -> LedsC;
>     app.SD -> SDC;
>     app.SDStdControl -> SDC;
> }
>
> -----------------TestSD.h-------------------
> #ifndef TEST_SD_H
> #define TEST_SD_H
> #define SECTOR_SIZE 512
> #endif /* TEST_SD_H */
>
>
> Best
> Avishay
>
> _______________________________________________
> Tinyos-help mailing list
> Tinyos-help@millennium.berkeley.edu
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>



-- 
Eric B. Decker
Senior (over 50 :-) Researcher
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to