High-speed access version sd-driver.

Dependents:   SDBlockDevice_GR_PEACH SDBlockDevice_GR_PEACH HagridOS5

This library has modified SDBlockDevice.h based on revision "14: c7dba87" of sd-driver.
https://github.com/ARMmbed/sd-driver

Committer:
dkato
Date:
Thu Mar 23 08:25:54 2017 +0000
Revision:
0:b22a1df967cb
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:b22a1df967cb 1 #include "mbed.h"
dkato 0:b22a1df967cb 2 #include "FATFileSystem.h"
dkato 0:b22a1df967cb 3 #include "SDBlockDevice.h"
dkato 0:b22a1df967cb 4 #include <stdio.h>
dkato 0:b22a1df967cb 5 #include <errno.h>
dkato 0:b22a1df967cb 6 /* mbed_retarget.h is included after errno.h so symbols are mapped to
dkato 0:b22a1df967cb 7 * consistent values for all toolchains */
dkato 0:b22a1df967cb 8 #include "platform/mbed_retarget.h"
dkato 0:b22a1df967cb 9
dkato 0:b22a1df967cb 10
dkato 0:b22a1df967cb 11 SDBlockDevice sd(MBED_CONF_APP_SPI_MOSI, MBED_CONF_APP_SPI_MISO, MBED_CONF_APP_SPI_CLK, MBED_CONF_APP_SPI_CS);
dkato 0:b22a1df967cb 12 FATFileSystem fs("sd", &sd);
dkato 0:b22a1df967cb 13
dkato 0:b22a1df967cb 14 void return_error(int ret_val){
dkato 0:b22a1df967cb 15 if (ret_val)
dkato 0:b22a1df967cb 16 printf("Failure. %d\n", ret_val);
dkato 0:b22a1df967cb 17 else
dkato 0:b22a1df967cb 18 printf("done.\n");
dkato 0:b22a1df967cb 19 }
dkato 0:b22a1df967cb 20
dkato 0:b22a1df967cb 21 void errno_error(void* ret_val){
dkato 0:b22a1df967cb 22 if (ret_val == NULL)
dkato 0:b22a1df967cb 23 printf(" Failure. %d \n", errno);
dkato 0:b22a1df967cb 24 else
dkato 0:b22a1df967cb 25 printf(" done.\n");
dkato 0:b22a1df967cb 26 }
dkato 0:b22a1df967cb 27
dkato 0:b22a1df967cb 28 int main()
dkato 0:b22a1df967cb 29 {
dkato 0:b22a1df967cb 30 int error = 0;
dkato 0:b22a1df967cb 31 printf("Welcome to the filesystem example.\n");
dkato 0:b22a1df967cb 32
dkato 0:b22a1df967cb 33 printf("Opening a new file, numbers.txt.");
dkato 0:b22a1df967cb 34 FILE* fd = fopen("/sd/numbers.txt", "w+");
dkato 0:b22a1df967cb 35 errno_error(fd);
dkato 0:b22a1df967cb 36
dkato 0:b22a1df967cb 37 for (int i = 0; i < 20; i++){
dkato 0:b22a1df967cb 38 printf("Writing decimal numbers to a file (%d/20)\r", i);
dkato 0:b22a1df967cb 39 fprintf(fd, "%d\n", i);
dkato 0:b22a1df967cb 40 }
dkato 0:b22a1df967cb 41 printf("Writing decimal numbers to a file (20/20) done.\n");
dkato 0:b22a1df967cb 42
dkato 0:b22a1df967cb 43 printf("Closing file.");
dkato 0:b22a1df967cb 44 fclose(fd);
dkato 0:b22a1df967cb 45 printf(" done.\n");
dkato 0:b22a1df967cb 46
dkato 0:b22a1df967cb 47 printf("Re-opening file read-only.");
dkato 0:b22a1df967cb 48 fd = fopen("/sd/numbers.txt", "r");
dkato 0:b22a1df967cb 49 errno_error(fd);
dkato 0:b22a1df967cb 50
dkato 0:b22a1df967cb 51 printf("Dumping file to screen.\n");
dkato 0:b22a1df967cb 52 char buff[16] = {0};
dkato 0:b22a1df967cb 53 while (!feof(fd)){
dkato 0:b22a1df967cb 54 int size = fread(&buff[0], 1, 15, fd);
dkato 0:b22a1df967cb 55 fwrite(&buff[0], 1, size, stdout);
dkato 0:b22a1df967cb 56 }
dkato 0:b22a1df967cb 57 printf("EOF.\n");
dkato 0:b22a1df967cb 58
dkato 0:b22a1df967cb 59 printf("Closing file.");
dkato 0:b22a1df967cb 60 fclose(fd);
dkato 0:b22a1df967cb 61 printf(" done.\n");
dkato 0:b22a1df967cb 62
dkato 0:b22a1df967cb 63 printf("Opening root directory.");
dkato 0:b22a1df967cb 64 DIR* dir = opendir("/sd/");
dkato 0:b22a1df967cb 65 errno_error(fd);
dkato 0:b22a1df967cb 66
dkato 0:b22a1df967cb 67 struct dirent* de;
dkato 0:b22a1df967cb 68 printf("Printing all filenames:\n");
dkato 0:b22a1df967cb 69 while((de = readdir(dir)) != NULL){
dkato 0:b22a1df967cb 70 printf(" %s\n", &(de->d_name)[0]);
dkato 0:b22a1df967cb 71 }
dkato 0:b22a1df967cb 72
dkato 0:b22a1df967cb 73 printf("Closeing root directory. ");
dkato 0:b22a1df967cb 74 error = closedir(dir);
dkato 0:b22a1df967cb 75 return_error(error);
dkato 0:b22a1df967cb 76 printf("Filesystem Demo complete.\n");
dkato 0:b22a1df967cb 77
dkato 0:b22a1df967cb 78 while (true) {}
dkato 0:b22a1df967cb 79 }
dkato 0:b22a1df967cb 80