aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c2
-rw-r--r--testhal/ATSAMA5D2/SDMMC/main.c78
-rw-r--r--testhal/ATSAMA5D2/SDMMC/mcuconf.h2
3 files changed, 78 insertions, 4 deletions
diff --git a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c b/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c
index e8bf714ce..8145de2b1 100644
--- a/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c
+++ b/os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c
@@ -98,7 +98,7 @@ void SdMmcUpdateInformation(SdmmcDriver *drv, bool csd, bool extData)
uint8_t SDMMC_Lib_SdStart(SdmmcDriver *drv, bool * retry)
{
uint64_t mem_size;
- uint32_t freq;
+ //uint32_t freq;
uint32_t drv_err, status;
uint8_t error;
bool flag;
diff --git a/testhal/ATSAMA5D2/SDMMC/main.c b/testhal/ATSAMA5D2/SDMMC/main.c
index 48cb01548..551b4dd65 100644
--- a/testhal/ATSAMA5D2/SDMMC/main.c
+++ b/testhal/ATSAMA5D2/SDMMC/main.c
@@ -25,14 +25,17 @@
#define BLOCK_CNT 3u
+
+const char test_file_path[] = "test.txt";
+
CACHE_ALIGNED uint8_t data_buf[BLOCK_CNT_MAX * 512ul];
CACHE_ALIGNED static uint32_t dma_table[DMADL_CNT_MAX * SDMMC_DMADL_SIZE];
-CACHE_ALIGNED uint8_t sdmmcbuffer[ROUND_UP_MULT(EXT_SIZE + SSR_SIZE + SCR_SIZE + SB1_SIZE + SB2_SIZE, L1_CACHE_BYTES)];
+CACHE_ALIGNED uint8_t sdmmcbuffer[ROUND_UP_MULT(SDMMC_BUFFER_SIZE, L1_CACHE_BYTES)];
static FATFS fs_header;
-//static FIL f_header;
+static FIL f_header;
BaseSequentialStream * ts;
@@ -65,6 +68,8 @@ static const SamaSDMMCConfig sdmmc_slot1_cfg = {
};
void getdir(SdmmcDriver *sdmmcp);
+void writefile(SdmmcDriver *sdmmcp);
+void readfile(SdmmcDriver *sdmmcp);
/*
* Application entry point.
*/
@@ -103,8 +108,11 @@ int main(void) {
//sdmmcShowDeviceInfo(&SDMMCD1);
if ( sdmmcMountVolume(&SDMMCD1,&fs_header) ) {
- chprintf(ts,"reading files:\n\r");
+ writefile(&SDMMCD1);
+ chprintf(ts,"reading dir:\n\r");
getdir(&SDMMCD1);
+ readfile(&SDMMCD1);
+
}
sdmmcCloseDevice(&SDMMCD1);
}
@@ -139,6 +147,70 @@ bool sdmmcGetInstance(uint8_t index, SdmmcDriver **sdmmcp)
return false;
}
+void writefile(SdmmcDriver *sdmmcp)
+{
+ const TCHAR drive_path[] = { '0' + sdmmcp->config->slot_id, ':', '\0' };
+ TCHAR file_path[sizeof(drive_path) + sizeof(test_file_path)];
+ FRESULT res;
+ UINT len;
+ uint8_t buffer[]={ 0x57,0x65,0x6C,0x63,0x6F,
+ 0x6D,0x65,0x20,0x74,0x6F,
+ 0x20,0x43,0x68,0x69,0x62,
+ 0x69,0x4F,0x53,0x21};
+
+
+ strcpy(file_path, drive_path);
+ strcat(file_path, test_file_path);
+
+ chprintf(ts,"Creating new file ... ");
+ res = f_open(&f_header, file_path, FA_WRITE | FA_CREATE_ALWAYS);
+ if (res == FR_OK) {
+ chprintf(ts,"OK\r\n");
+ res = f_write(&f_header, buffer, 19, &len);
+ if (res == FR_OK) {
+ chprintf(ts,"written %d bytes\n\r", len);
+ }
+ }
+ else
+ {
+ chprintf(ts,"Failed error %d\n\r", res);
+ }
+ f_close(&f_header);
+
+}
+
+void readfile(SdmmcDriver *sdmmcp)
+{
+ const TCHAR drive_path[] = { '0' + sdmmcp->config->slot_id, ':', '\0' };
+ TCHAR file_path[sizeof(drive_path) + sizeof(test_file_path)];
+ FRESULT res;
+ UINT len;
+ uint8_t buffer[19];
+ UINT i;
+
+ strcpy(file_path, drive_path);
+ strcat(file_path, test_file_path);
+
+ chprintf(ts,"Reading back the new file ... ");
+ res = f_open(&f_header, file_path, FA_OPEN_EXISTING | FA_READ);
+ if (res == FR_OK) {
+ chprintf(ts,"OK\r\n");
+ res = f_read(&f_header, buffer, 19, &len);
+ if (res == FR_OK) {
+ chprintf(ts,"read %d bytes\n\r", len);
+ for (i=0;i<len;i++) {
+ chprintf(ts,"%c", buffer[i]);
+ }
+ }
+ }
+ else
+ {
+ chprintf(ts,"Failed error %d\n\r", res);
+ }
+ f_close(&f_header);
+
+}
+
void getdir(SdmmcDriver *sdmmcp)
{
const TCHAR drive_path[] = { '0' + sdmmcp->config->slot_id, ':', '\0' };
diff --git a/testhal/ATSAMA5D2/SDMMC/mcuconf.h b/testhal/ATSAMA5D2/SDMMC/mcuconf.h
index b9173531f..d1e0fe8d6 100644
--- a/testhal/ATSAMA5D2/SDMMC/mcuconf.h
+++ b/testhal/ATSAMA5D2/SDMMC/mcuconf.h
@@ -82,10 +82,12 @@
/*
* SECUMOD
*/
+#define HAL_USE_SECUMOD FALSE
#define SAMA_ST_USE_PIT TRUE
#define SAMA_ST_USE_TC0 FALSE
#define SAMA_ST_USE_TC1 FALSE
+
/*
* TC driver system settings.
*/