2016-05-26 23 views
-1

Я поднимаю этот вопрос во время использования freertos fat. Среда разработки с использованием iar-компилятора и MCU использует cortex-m4. я использую библиотеку HAL и содержимое Freertos FAT config.h являются следующие:Проблемы с жирным циклом FreeRTOS, есть ли шанс, что я могу написать 512 байт с 50 Гц?

#define BUS_4BITS   1 
#define SDIO_USES_DMA   1 

Я генерируется только одна задача, SDCard писать, что писать 400byte с 50Гц задача заключается в следующем:

void SDCARD_WRITE_Task(void * pvParameters) 
{ 
    uint32_t PreviousWakeTime = 0; 

    SDcard_Init(); 
    SDcard_SetFileName("FDR","/FDR"); 

    for(;;) 
    { 
    HAL_GPIO_WritePin(GPIOG, GPIO_PIN_6,GPIO_PIN_SET);  //pin high 
    PreviousWakeTime = osKernelSysTick();      
    SDcard_Write(ucFileName, SDCARD_Buffer, sizeof(SDCARD_Buffer)); 
    HAL_GPIO_WritePin(GPIOG, GPIO_PIN_6,GPIO_PIN_RESET);   // pin low 
    vTaskDelayUntil(&PreviousWakeTime, 20/portTICK_PERIOD_MS); 
    } 
} 

PG6, штифт высок в начале, будет низким состояние в конце цикла, чтобы проверить время обработки SDcard записи содержимого функция заключается в следующем:

enter image description here

SDCARD результаты Задача WRITE осциллографов подтвержденные случаи неожиданного длительность происшедшие во время испытания, я поставил его 50Hz писать 400byte, но иногда это занимает 200 ~ 250мс oftenly

enter image description here

даже если я изменить длина байтов проблема все еще произошла

Почему эта проблема происходит?

есть ли шанс, что я могу написать 512 байт с 50 Гц?

или есть ли ограничение на байты или частоту для записи SD-карты?

ответ

0

Это использование FreeRTOS+FAT? Или что-то, что поставляется с вашей средой разработки? В любом случае, похоже, что время, которое вы измеряете, связано с драйвером, который выполняет фактическую запись на SD-карту, поэтому я бы предложил установить тайминги внутри драйвера. Кроме того, вы пробовали разные SD-карты - наш опыт заключается в том, что разница в производительности между разными производителями очень велика, до такой степени, что некоторые карты почти непригодны, а другие очень быстры, когда подвергаются тем же испытаниям.

0

Написание каких-либо средств массовой информации в режиме реального времени НАДЕЖНО требует буферизации на вашей стороне.

Контроллеры SD в самих карточках делают все возможное, чтобы уменьшить латентность благодаря удобному управлению буферами и т. Д., Но даже самые лучшие могут иметь задержку при любой заданной записи, которая длится 250 мс или более, поскольку она выполняет сборку мусора.

В среднем, они будут управлять пропускной способностью, которую они рекламируют, но хост/библиотека должна управлять асинхронной записью и буферизацией, чтобы изолировать вашу критическую для критического момента систему.

 Смежные вопросы

  • Нет связанных вопросов^_^