реклама на сайте
подробности

 
 
> FatFS под RTOS, Интересует опыт по "доработке" FatFS для работы в несколько по
Faradey
сообщение Mar 31 2009, 07:20
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 31-05-06
Из: Belarus, Minsk
Пользователь №: 17 638



Есть необходимость использования FatFS под FreeRTOS в несколько потоков с картой памяти.
Наиболее простым способом видиться "упаковка" используемого API FatFS в мютекс, аля:
Код
FRESULT RTOS_f_open(
    FIL *fp,            /* Pointer to the blank file object */
    const char *path,   /* Pointer to the file name */
    BYTE mode,           /* Access mode and file open mode flags */
    xSemaphoreHandle mutex   /* <--  Например так */
)
{
xSemaphoreGive( mutex );
FRESULT fr = f_open( &file, file_name, FA_OPEN_ALWAYS | FA_WRITE );
xSemaphoreTake( mutex, portMAX_DELAY );
return fr;
}

Прошу уже прошедших по этому пути поделиться опытом laughing.gif


--------------------
Завтра пойму, что нужно было сделать вчера...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Mar 31 2009, 07:36
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Faradey @ Mar 31 2009, 10:20) *
Прошу уже прошедших по этому пути поделиться опытом
Я бы mutex вставил прямо в структуру FIL. Вам ведь надо разделять одновременный доступ к одному и тому же файлу. И параметр лишний пропадает, и семафор не перепутаете. Еще один mutex надо повесить на низкоуровневые функции.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Faradey
сообщение Mar 31 2009, 07:52
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 31-05-06
Из: Belarus, Minsk
Пользователь №: 17 638



насчет мютексов на низкоуровневые ф-ции я подумал первым делом, но меня "смутил" факт изменения структуры файловой системы из нескольких потоков.
на счет доступа к одному файлу из нескольких потоков - тут я извиняюсь, не до конца описал ситуацию, исправляюсь:
В одном потоке открыт файл на запись и только в этом потоке он записывается.
В другом потоке(-ах) открывается(-ются) другие файлы на чтени/запись, поскольку RTOS я использую в вытесняющем "режиме" то возможны варианты перекресного использования одних и тех-же ресурсов файловой системы, насколько я понял - это структура FATFS. Вот собственно в этом контексте я и предположил использование приведенного выше варианта.

З.Ы. кстати логичным кажется именно "защита" структуры FATFS.


--------------------
Завтра пойму, что нужно было сделать вчера...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016