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

microSD задержки при обмене

На microSD карту пишется поток данных. Поток непрерывный, буфера RAM нет, карта периодически останавливает обмен на доли секунды.

Интерфейс SDIO 48МГц , на карте FAT32 , библиотека для работы c FAT FATFS.

 

Вопрос:

Можно ли избавится от задержек в обмене ? Может быть, в современных картах появились какие-то хитрые настройки для этого ? Может быть, есть карты со встроенным буфером RAM ?

 

Заранее спасибо !

 

 

 

 

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


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

Нет, никак нельзя избавиться. Или организуйте буфер, или используйте менее "интеллектуальный" носитель.

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


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

Нет, никак нельзя избавиться. Или организуйте буфер, или используйте менее "интеллектуальный" носитель.

 

Ну неужели время идёт, а карты работают с задержками как 10 лет назад ? Неужели не появилось ничего нового ?

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


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

Наблюдал такое на STM32. Решилось переходом на DMA и буферезированной передачей.

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


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

Ну неужели время идёт, а карты работают с задержками как 10 лет назад ? Неужели не появилось ничего нового ?

Как раз 10 лет назад задержки были меньше.

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


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

Скорость записи может зависеть от того, как карта была отформатирована. Внутри карты действует понятие Allocation Unit (AU) и лучшая скорость записи достигается когда AU записывается один за другим, не пересекая при этом границу AU. Это связано с работой внутренних механизмов выравнивания износа и трансляции номеров блоков, которые в большинстве карт оперируют AU и могут поддерживать лишь небольшое количество одновременно "открытых" AU.

При этом с точки зрения FatFS, чем больше кластер - тем меньше накладных расходов на запись FAT и т.п. Т.е. выше скорость.

 

По части форматирования, см. статью. Есть и аналогичные статьи, которые можно найти по ключевым словам "sd card formatting for optimal performance".

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


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

Вопрос:

Можно ли избавится от задержек в обмене ?

Заранее спасибо !

 

Можно. https://geektimes.ru/post/274416/

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


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

Скорость записи может зависеть от того, как карта была отформатирована.

Средняя скорость - да, может зависеть. Но задержки никуда не исчезнут.

 

UPD. Посмотрел сслылку - это просто цирк: автор измеряет скорости работы кэша, и делает при этом выводы о размерах блока стирания и страниц карты.

 

Да ну, "увидеть и оценить" == "избавиться"?

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


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

Да ну, "увидеть и оценить" == "избавиться"?

 

В смысле как блондинка, если чего не знаю, то вероятность 50 на 50?

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


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

В смысле как блондинка, если чего не знаю, то вероятность 50 на 50?

На одной карте одни задержки, на другой - другие. В чем ценность "знания"?

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


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

На одной карте одни задержки, на другой - другие. В чем ценность "знания"?

 

Знание в том, что точно есть карты без задержек. :laughing:

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


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

Знание в том, что точно есть карты без задержек. :laughing:

 

А выравнивание износа они когда должны делать, если идет непрерывный поток? И запись на изношенные или свежие блоки явно не одно и то же время занимает :rolleyes:

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


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

Ну неужели время идёт, а карты работают с задержками как 10 лет назад ? Неужели не появилось ничего нового ?

Задержки видел по 500мс и больше.

За 10 лет карты сильнейшим образом подешевели.

Вроде, MMC-карты в плане потоков выглядят лучше, но не по цене.

 

Кста, карты со временем начинают "тупить" даже если работает только на чтение.

Если найдете "крутую" карту с "ровными" характеристиками ожидания, то дайте знать.

Могу поделиться некоторой статистикой, если надо.

 

Наблюдал такое на STM32. Решилось переходом на DMA и буферезированной передачей.

Доля обмена между картой и SDIO ничтожна по сравнению с ожиданием данных от карты.

При "ожидании данных в 500мс" будет обмен между картой за 0.5мс или за 2мс уже не так важно.

 

Знание в том, что точно есть карты без задержек. :laughing:

Где можно взять такие карты? Производитель? Модель карты?

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


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

Скорость записи может зависеть от того, как карта была отформатирована.

Как бы она ни была отформатирована, но необходимость стирать блоки от этого никуда не исчезнет.

 

Знание в том, что точно есть карты без задержек. :laughing:

Ну конечно. Это изначально стёртые карты ;)

 

А выравнивание износа они когда должны делать, если идет непрерывный поток? И запись на изношенные или свежие блоки явно не одно и то же время занимает :rolleyes:

Перед записью блок данных флешь должен быть стёрт. Это физическое свойство флешь. Как бы карта ни была отформатирована, какова бы ни была свежесть блока, но, если он не стёрт, перед записью его надо стереть. А для флешь это самая затратная операция. И никуда от неё не деться.

Ну или заранее, при проектировании, включить голову, посчитать требуемую скорость потока, посчитать задержки стирания и заложить флешку требуемой скорости стирания. Если скорости не хватает - можно заложить две флешки и тем самым или: повысить скорость записи или снизить задержки стирания при том же объёме буфера (пока стирается блок на одной флешке, пишется другая, потом меняются).

Да и файловую систему для такой потоковой записи лучше не использовать.

 

Где можно взять такие карты? Производитель? Модель карты?

Это возможно только если их производитель встроил какой-то буфер в саму карту. Что маловероятно.

Автору надо подумать насчёт добавления в устройство буферной памяти необходимого размера. Внешней.

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


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

Как бы она ни была отформатирована, но необходимость стирать блоки от этого никуда не исчезнет.

 

Не могу согласиться, т.к. структура карты оптимизируется для эффективной работы ФС. Т.е. начало карты (область служебных данных) может быть разбито на мелкие блоки, а дальше разбивка может идти на блоки большего размера (область данных). Кроме того размещение блоков ФС на диске (выравнивание) непосредственно влияет на эффективность работы логики выравнивания износа, что неизбежно сказывается на общей скорости записи. Представьте, как карта может записать 32К, которые пересекают границу соседних 4М блоков?

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


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

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

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

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

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

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

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

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

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

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