Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem mbed
main.cpp
- Committer:
- neilt6
- Date:
- 2014-08-14
- Revision:
- 10:ae649a596123
- Parent:
- 7:17ca3091939f
- Child:
- 11:2be49b81dc0b
File content as of revision 10:ae649a596123:
#include "mbed.h"
#include "SDFileSystem.h"
Timer timer;
DigitalIn button(p21, PullUp);
SDFileSystem sd(p5, p6, p7, p20, "sd", p22, SDFileSystem::SWITCH_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();
while (file->read(buffer, sizeof(buffer)) == sizeof(buffer));
timer.stop();
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 and large frames
sd.crc(true);
sd.large_frames(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();
}
}