Перейти к содержанию
    

FatFs на SAM9260

На плате с SAM9260 установил FatFs и работал с карточкой microSD 1Gb

по SPI. Исходный пример работал без проблем. Планируя использовать FatFs

в собственном проекте столкнулся с небольшим вопросом, который не понимаю.

Имею несколько физических носителей - microSD, SDRAM, dataFlash, NAND.

Могу ли я работать одновременно более, чем с одним носителем?

Если да, то как интерфейсные функции FatFs могут понять, с каким именно

носителем им работать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во все "нижние" функции передается Drive. Вот по нему и отличайте.

DSTATUS disk_initialize (
  BYTE Drive           /* Physical drive number */
);

Учтите, что для NAND'а (и для DF желательно) Вам придется написать wear leveling прослойку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот есть функция:

FRESULT f_open (

FIL* FileObject, /* Pointer to the blank file object structure */

const TCHAR* FileName, /* Pointer to the file neme */

BYTE ModeFlags /* Mode flags */

);

 

Я просто не пойму где тут параметр указывающий принадлежность к носителю.

С вашим примером для низкоуровневых функций я согласен.

 

 

Вопрос снимаю. Посмотрел ff.h и стало понятно, что

если FIL *fp, то fp->fs->drv это и есть носитель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот есть функция:

FRESULT f_open (

FIL* FileObject, /* Pointer to the blank file object structure */

const TCHAR* FileName, /* Pointer to the file neme */

BYTE ModeFlags /* Mode flags */

);

 

Я просто не пойму где тут параметр указывающий принадлежность к носителю.

С вашим примером для низкоуровневых функций я согласен.

 

 

А разве не в FileName ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне здается, что имя файла не указывает то на каком носителе он находится.

 

Ну я вообще-то не угадать пытался, а конкретно Вам наводку дал где копать :)

Почитайте в документации на FatFS описание параметра FileName.

Параграф так и называется "Format of the path names" и в первой же строке сразу указывается где там номер драйва ставить.

 

Кстати схема не такая уж редкая, в Win API имя драйва тоже в строке имени файла задается.

 

Вопрос снимаю. Посмотрел ff.h и стало понятно, что

если FIL *fp, то fp->fs->drv это и есть носитель.

 

Верно, но это внутреннее дело библиотеки.

Если Вы ее правильно портировали, то задав FileName в ф-ции f_open в соответствии с документацией, библиотека сама поставит верно номер драйва в fp->fs->drv.

Пользователь не должен про это вообще ничего знать. Для него есть API, через него и надо работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишу свой модуль I/O для RAM-diska. И вот остановился на реализации функции

disk_ioctl в части команды CTRL_SYNC.

Понятен первый режим работы функции для устройств имеющих какое-то время записи.

Понятно, что ничего не надо делать если только читаем из устройства.

Не понимаю когда необходим в модуле I/O write back cache и как при этом функционировать.

В примерах для I/O модулей MMC и NAND я не встретил использование write back cache.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понимаю когда необходим в модуле I/O write back cache и как при этом функционировать.

Если выполняется кеширование записи - кеш (если в нем были изменения) нужно выгрузить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понимаю запись кэшируется в самой FatFs.

Теперь плюс к этому я могу делать или нет кэш в своем модуле I/O.

Понятно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, запоминающее устройство может иметь собственный кеш (например в DataFlash), используемый драйвером.

эта команда его должна выгрузить. FatFs дергает ее при синхронизации с накопителем

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...