http://mbed.org/users/okini3939/notebook/sdhc-test/

Dependencies:   FatFileSystemCpp SDHC_FileSystem mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SDHCFileSystem.h"
00003 
00004 #define SIZE 1024 // KB
00005 
00006 Serial pc(USBTX, USBRX);
00007 DigitalOut myled(LED1);
00008 SDFileSystem sd(p5, p6, p7, p8, "sd");
00009 
00010 float wtest (int b, int d) {
00011     int i;
00012     int s = b / d;
00013     char buf[d];
00014     FILE *fp;
00015     Timer t;
00016 
00017     fp = fopen("/sd/sdhc_test.dat", "w");
00018     if (!fp) return 0;
00019     myled = 1;
00020     t.reset();
00021     t.start();
00022     for (i = 0; i < s; i ++) {
00023         fwrite(buf, sizeof(unsigned char), d, fp);
00024     }
00025     fclose(fp);
00026     t.stop();
00027     myled = 0;
00028     return t.read();
00029 }
00030 
00031 float rtest (int b, int d) {
00032     int i;
00033     int s = b / d;
00034     char buf[d];
00035     FILE *fp;
00036     Timer t;
00037 
00038     fp = fopen("/sd/sdhc_test.dat", "r");
00039     if (!fp) return 0;
00040     myled = 1;
00041     t.reset();
00042     t.start();
00043     for (i = 0; i < s; i ++) {
00044         fread(buf, sizeof(unsigned char), d, fp);
00045     }
00046     fclose(fp);
00047     t.stop();
00048     myled = 0;
00049     return t.read();
00050 }
00051 
00052 int main() {
00053 
00054     pc.baud(115200);
00055     pc.printf("start\r\n");
00056 
00057     if (sd.disk_initialize()) return -1;
00058 
00059     pc.printf("write   1: %f KB/sec\r\n", (double)SIZE / wtest(SIZE * 1024, 1));
00060     pc.printf("read    1: %f KB/sec\r\n", (double)SIZE / rtest(SIZE * 1024, 1));
00061     pc.printf("write 100: %f KB/sec\r\n", (double)SIZE / wtest(SIZE * 1024, 100));
00062     pc.printf("read  100: %f KB/sec\r\n", (double)SIZE / rtest(SIZE * 1024, 100));
00063     pc.printf("write 10k: %f KB/sec\r\n", (double)SIZE / wtest(SIZE * 1024, 10000));
00064     pc.printf("read  10k: %f KB/sec\r\n", (double)SIZE / rtest(SIZE * 1024, 10000));
00065 
00066     return 0;
00067 }