update sdmmc test hal project with read and write to file

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11419 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
areviu 2018-02-01 18:49:41 +00:00
parent cc66943726
commit ba9b7671a0
3 changed files with 78 additions and 4 deletions

View File

@ -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;

View File

@ -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' };

View File

@ -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.
*/