STM32L462 FATFS+FREERTOS+DMA disk_ioctl causes Hard fault interrupt
I'm using custom board with stm32l462re with sd card.
Without freertos and dma i'm able to write/read to sd card (32MHz on sdmmc clock, 1 bit mode, 10 clock divide factor). As project grows I decided to use freertos.
But now f_open send hard fault (disk_ioctl in Middlewares/Third_Party/FatFs/src/diskio.c)
What have I tried:
setting sdmmc in 4bit mode
different clock divide factors
physically removing sd card(same error)
disk_ioctl code:
DRESULT disk_ioctl (
BYTE pdrv, /* Physical drive nmuber (0..) */
BYTE cmd, /* Control code */
void *buff /* Buffer to send/receive control data */
)
{
DRESULT res;
res = disk.drv[pdrv]->disk_ioctl(disk.lun[pdrv], cmd, buff);
return res;
}My source code for testing:
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
record_init();
osDelay(200);
record_start("test.raw", 10);
for(;;)
{
osDelay(1);
}
/* USER CODE END 5 */
}
....
void record_init(void)
{
FRESULT fresult;
fresult = f_mount(&SDFatFS, (TCHAR const*)SDPath, 0);
...
}
void record_start(const char *path, int seconds)
{
FRESULT fresult;
fresult = f_open(&SDFile, path, FA_CREATE_ALWAYS | FA_WRITE);
....
}Current cubemx settings:
FreeRTOS set to CMSIS_V2 default




