WORKS
Dependencies: MAX44000 PWM_Tone_Library nexpaq_mdk
Fork of LED_Demo by
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 #include "test_env.h" 00004 #include <algorithm> 00005 #include <stdlib.h> 00006 00007 #if defined(TARGET_KL25Z) 00008 SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); 00009 00010 #elif defined(TARGET_KL46Z) 00011 SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); 00012 00013 #elif defined(TARGET_K64F) || defined(TARGET_K66F) 00014 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); 00015 00016 #elif defined(TARGET_K22F) 00017 SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd"); 00018 00019 #elif defined(TARGET_K20D50M) 00020 SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd"); 00021 00022 #elif defined(TARGET_nRF51822) 00023 SDFileSystem sd(p12, p13, p15, p14, "sd"); 00024 00025 #elif defined(TARGET_NUCLEO_F030R8) || \ 00026 defined(TARGET_NUCLEO_F070RB) || \ 00027 defined(TARGET_NUCLEO_F072RB) || \ 00028 defined(TARGET_NUCLEO_F091RC) || \ 00029 defined(TARGET_NUCLEO_F103RB) || \ 00030 defined(TARGET_NUCLEO_F302R8) || \ 00031 defined(TARGET_NUCLEO_F303RE) || \ 00032 defined(TARGET_NUCLEO_F334R8) || \ 00033 defined(TARGET_NUCLEO_F401RE) || \ 00034 defined(TARGET_NUCLEO_F410RB) || \ 00035 defined(TARGET_NUCLEO_F411RE) || \ 00036 defined(TARGET_NUCLEO_L053R8) || \ 00037 defined(TARGET_NUCLEO_L073RZ) || \ 00038 defined(TARGET_NUCLEO_L152RE) 00039 SDFileSystem sd(D11, D12, D13, D10, "sd"); 00040 00041 #elif defined(TARGET_DISCO_F051R8) 00042 SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd"); 00043 00044 #elif defined(TARGET_LPC2368) 00045 SDFileSystem sd(p11, p12, p13, p14, "sd"); 00046 00047 #elif defined(TARGET_LPC11U68) 00048 SDFileSystem sd(D11, D12, D13, D10, "sd"); 00049 00050 #elif defined(TARGET_LPC1549) 00051 SDFileSystem sd(D11, D12, D13, D10, "sd"); 00052 00053 #elif defined(TARGET_LPC11U37H_401) 00054 SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); 00055 00056 #else 00057 SDFileSystem sd(p11, p12, p13, p14, "sd"); 00058 #endif 00059 00060 namespace { 00061 char buffer[1024]; 00062 const int KIB_RW = 128; 00063 Timer timer; 00064 const char *bin_filename = "/sd/testfile.bin"; 00065 } 00066 00067 bool test_sf_file_write_stdio(const char *filename, const int kib_rw) { 00068 bool result = true; 00069 FILE* file = fopen(filename, "w"); 00070 if (file != NULL) { 00071 int byte_write = 0; 00072 timer.start(); 00073 for (int i = 0; i < kib_rw; i++) { 00074 if (fwrite(buffer, sizeof(char), sizeof(buffer), file) != sizeof(buffer)) { 00075 result = false; 00076 fclose(file); 00077 printf("Write error!\r\n"); 00078 break; 00079 } else { 00080 byte_write++; 00081 } 00082 } 00083 timer.stop(); 00084 fclose(file); 00085 double test_time_sec = timer.read_us() / 1000000.0; 00086 double speed = kib_rw / test_time_sec; 00087 printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed); 00088 notify_performance_coefficient("write_kibps", speed); 00089 } else { 00090 printf("File '%s' not opened\r\n", filename); 00091 result = false; 00092 } 00093 timer.reset(); 00094 return result; 00095 } 00096 00097 bool test_sf_file_read_stdio(const char *filename, const int kib_rw) { 00098 bool result = true; 00099 FILE* file = fopen(filename, "r"); 00100 if (file) { 00101 timer.start(); 00102 int byte_read = 0; 00103 while (fread(buffer, sizeof(char), sizeof(buffer), file) == sizeof(buffer)) { 00104 byte_read++; 00105 } 00106 timer.stop(); 00107 fclose(file); 00108 double test_time_sec = timer.read_us() / 1000000.0; 00109 double speed = kib_rw / test_time_sec; 00110 printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed); 00111 notify_performance_coefficient("fs_read_kibps", speed); 00112 } else { 00113 printf("File '%s' not opened\r\n", filename); 00114 result = false; 00115 } 00116 timer.reset(); 00117 return result; 00118 } 00119 00120 char RandomChar() { 00121 return rand() % 100; 00122 } 00123 00124 int main() { 00125 MBED_HOSTTEST_TIMEOUT(15); 00126 MBED_HOSTTEST_SELECT(default_auto); 00127 MBED_HOSTTEST_DESCRIPTION(SD stdio RW Speed); 00128 MBED_HOSTTEST_START("PERF_1"); 00129 00130 // Test header 00131 printf("\r\n"); 00132 printf("SD Card Stdio Performance Test\r\n"); 00133 printf("File name: %s\r\n", bin_filename); 00134 printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024); 00135 00136 // Initialize buffer 00137 srand(testenv_randseed()); 00138 char *buffer_end = buffer + sizeof(buffer); 00139 std::generate (buffer, buffer_end, RandomChar); 00140 00141 bool result = true; 00142 for (;;) { 00143 printf("Write test...\r\n"); 00144 if (test_sf_file_write_stdio(bin_filename, KIB_RW) == false) { 00145 result = false; 00146 break; 00147 } 00148 00149 printf("Read test...\r\n"); 00150 if (test_sf_file_read_stdio(bin_filename, KIB_RW) == false) { 00151 result = false; 00152 break; 00153 } 00154 break; 00155 } 00156 MBED_HOSTTEST_RESULT(result); 00157 }
Generated on Tue Jul 12 2022 12:28:41 by
1.7.2
