diff options
| -rw-r--r-- | os/hal/ports/SAMA/LLD/SDMMCv1/ch_sdmmc.c | 2 | ||||
| -rw-r--r-- | testhal/ATSAMA5D2/SDMMC/main.c | 78 | ||||
| -rw-r--r-- | testhal/ATSAMA5D2/SDMMC/mcuconf.h | 2 | 
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.
   */
  | 
