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

-- 
Best
Avishay
_______________________________________________
Shimmer-users mailing list
[email protected]
https://lists.eecs.harvard.edu/mailman/listinfo/shimmer-users

Reply via email to