sd.c
Go to the documentation of this file.
00001 00038 #include "sd.h" 00039 #include "hw/hw_sd.h" 00040 #include "cfg/cfg_sd.h" 00041 00042 #define LOG_LEVEL SD_LOG_LEVEL 00043 #define LOG_FORMAT SD_LOG_FORMAT 00044 #include <cfg/log.h> 00045 00046 #include <io/kblock.h> 00047 00048 #include <string.h> 00049 00050 00051 #ifdef SD_INCLUDE_SPI_SOURCE 00052 #include <drv/sd_spi.c> 00053 #endif 00054 00055 void sd_writeTest(Sd *sd) 00056 { 00057 uint8_t buf[SD_DEFAULT_BLOCKLEN]; 00058 memset(buf, 0, sizeof(buf)); 00059 00060 for (block_idx_t i = 0; i < sd->b.blk_cnt; i++) 00061 { 00062 LOG_INFO("writing block %ld: %s\n", i, (kblock_read(&sd->b, i, buf, 0, SD_DEFAULT_BLOCKLEN) == SD_DEFAULT_BLOCKLEN) ? "OK" : "FAIL"); 00063 } 00064 } 00065 00066 bool sd_test(Sd *sd) 00067 { 00068 uint8_t buf[SD_DEFAULT_BLOCKLEN]; 00069 00070 if (kblock_read(&sd->b, 0, buf, 0, sd->b.blk_size) != sd->b.blk_size) 00071 return false; 00072 00073 kputchar('\n'); 00074 for (int i = 0; i < SD_DEFAULT_BLOCKLEN; i++) 00075 { 00076 kprintf("%02X ", buf[i]); 00077 buf[i] = i; 00078 if (!((i+1) % 16)) 00079 kputchar('\n'); 00080 } 00081 00082 if (kblock_write(&sd->b, 0, buf, 0, SD_DEFAULT_BLOCKLEN) != SD_DEFAULT_BLOCKLEN) 00083 return false; 00084 00085 memset(buf, 0, sizeof(buf)); 00086 if (kblock_read(&sd->b, 0, buf, 0, sd->b.blk_size) != sd->b.blk_size) 00087 return false; 00088 00089 kputchar('\n'); 00090 for (block_idx_t i = 0; i < sd->b.blk_size; i++) 00091 { 00092 kprintf("%02X ", buf[i]); 00093 buf[i] = i; 00094 if (!((i+1) % 16)) 00095 kputchar('\n'); 00096 } 00097 00098 return true; 00099 } 00100 00101 00102
![(please configure the [header_logo] section in trac.ini)](/chrome/site/bertos_logo.png)