![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
test for sd card
Dependencies: SDFileSystem mbed
Fork of SDFileSystem_HelloWorld by
main.cpp
- Committer:
- neilt6
- Date:
- 2014-08-18
- Revision:
- 12:bd8b17cd6a7b
- Parent:
- 11:2be49b81dc0b
- Child:
- 16:d68a6d4050f2
File content as of revision 12:bd8b17cd6a7b:
#include "mbed.h" #include "SDFileSystem.h" Timer timer; DigitalIn button(p21, PullUp); SDFileSystem sd(p5, p6, p7, p20, "sd", p22, SDFileSystem::SWITCH_NEG_NO, 25000000); char buffer[4096]; void writeTest() { //Test write performance by creating a 1MB file printf("Testing %iB write performance...", sizeof(buffer)); FileHandle* file = sd.open("Test File.bin", O_WRONLY | O_CREAT | O_TRUNC); if (file != NULL) { timer.start(); for (int i = 0; i < (1048576 / sizeof(buffer)); i++) { if (file->write(buffer, sizeof(buffer)) != sizeof(buffer)) { timer.stop(); printf("write error!\n"); timer.reset(); return; } } timer.stop(); if (file->close()) printf("failed to close file!\n"); else printf("done!\n\tResult: %.2fKB/s\n", 1024 / (timer.read_us() / 1000000.0)); timer.reset(); } else { printf("failed to create file!\n"); } } void readTest() { //Test read performance by reading the 1MB file created by writeTest() printf("Testing %iB read performance...", sizeof(buffer)); FileHandle* file = sd.open("Test File.bin", O_RDONLY); if (file != NULL) { timer.start(); int iterations = 0; while (file->read(buffer, sizeof(buffer)) == sizeof(buffer)) iterations++; timer.stop(); if (iterations != (1048576 / sizeof(buffer))) printf("read error!\n"); else if (file->close()) printf("failed to close file!\n"); else if (sd.remove("Test File.bin")) printf("failed to delete file!\n"); else printf("done!\n\tResult: %.2fKB/s\n", 1024 / (timer.read_us() / 1000000.0)); timer.reset(); } else { printf("failed to open file!\n"); } } int main() { //Configure CRC, large frames, and write validation sd.crc(true); sd.large_frames(true); sd.write_validation(true); //Fill the buffer with random data for the write test srand(time(NULL)); for (int i = 0; i < sizeof(buffer); i++) buffer[i] = rand(); while(1) { //Print the start message printf("\nPress the button to perform tests: "); //Wait for the button to be pressed while(button); //Display the card type and capacity printf("\nCard type: "); if (sd.card_type() == SDFileSystem::CARD_NONE) printf("None\n"); else if (sd.card_type() == SDFileSystem::CARD_MMC) printf("MMC\n"); else if (sd.card_type() == SDFileSystem::CARD_SD) printf("SD\n"); else if (sd.card_type() == SDFileSystem::CARD_SDHC) printf("SDHC\n"); else printf("Unknown\n"); printf("Sectors: %llu\n", sd.disk_sectors()); printf("Capacity: %.1fMB\n", (sd.disk_sectors() * 512) / 1048576.0); //Mount the filesystem sd.mount(); /*//Format the card printf("Formatting card..."); if (sd.format() == 0) printf("success!\n"); else printf("failed!\n");*/ //Perform a read/write tests writeTest(); readTest(); //Unmount the filesystem sd.unmount(); } }