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

Падает скорость копирования

11 часов назад, Ruslan1 сказал:

у вполне рабочих карт время доступа может составлять единицы секунд к некоторым (часто используемым) блокам. И это я про чтение, а не про запись!! :)

Это типа как книга, флешка зачитанная до дыр чтоли?

 

Может ли кто подсказать :

если карта SDHC/SDXC UHS-I или лучше после команды чтения не начала передачу данных через 100 мс, то это надо понимать как всё пропало зависло и надо вылетать из пп чтения по таймауту?

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


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

Вот цитата из спецификации

Цитата

4.6.2.1 Read
For a Standard Capacity SD Memory Card, the times after which a timeout condition for read operations
occurs are (card independent) either 100 times longer than the typical access times for these
operations given below or 100 ms (the lower of the two). The read access time is defined as the sum
of the two times given by the CSD parameters TAAC and NSAC (see Chapter 5.3). In the case of a
single read operation, these card parameters define the typical delay between the end bit of the read
command and the start bit of the data block. In the case of a multiple-read operation, they also define
the typical delay between the end bit of a data block and the start bit of next data block.
A High Capacity SD Memory Card and Extended Capacity SD Memory Card indicate TAAC and NSAC
as fixed values. The host should use 100 ms timeout (minimum) for single and multiple read operations
rather than using TAAC and NSAC.

и далее

Цитата

TAAC
This field is fixed to 0Eh, which indicates 1 ms. The host should not use TAAC, NSAC, and
R2W_FACTOR to calculate timeout and should uses fixed timeout values for read and write operations
(See 4.6.2).

Если я правильно понял, то для карт памяти HC и XC хост должен использовать минимальное время таймаута 100 мс.

А максимальное сколько?

 

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


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

Ну раз ответов нет, то я это понимаю так что каждый делает на своё усмотрение.

А если я вопрос сформулирую так:

Допустим есть новая карта 16ГБ и с временем TAAC (data read access-time) нулевого сектора не более 100 мс.

Сколько раз нужно прочитать этот сектор (или сколько времени должно пройти или еще какие то события должны случиться)

чтобы карта перестала успевать начинать передачу данных через 100 мс?

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


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

4 hours ago, Freibier said:

Это типа как книга, флешка зачитанная до дыр чтоли?

Я имел в виду: SD карточка использовалась, и на нее что-то записывали (FAT32). А потом проверил ее на скорость чтения разных блоков. В результате получил таблицу, в которой написано время доступа к каждому из блоков. Отсортировал "с бОльшего к меньшему" и увидел самые "тормозные" по чтению блоки вверху таблицы. Проверил несколько раз- ситуация стабильная.

Вот, например, одна из карточек. Elapsed time - это время доступа в миллисекундах.  По дефолтовым установкам, блоки с таким временем доступа считаются "Normal" 

 

104208.png.8c6c595633acba454affeaa5a0f7ebc9.png

 

 

4 hours ago, Freibier said:

Может ли кто подсказать :

если карта SDHC/SDXC UHS-I или лучше после команды чтения не начала передачу данных через 100 мс, то это надо понимать как всё пропало зависло и надо вылетать из пп чтения по таймауту?

Нет. Так работать может быть и будет, но недолго и не всегда. Будьте готовы ждать сильно больше. Например, упомянутая мной программа считает блок нечитаемым, если доступ к нему невозможен в течении 5 секунд.

Но в Вашем случае я бы сначала взял многоканальный логический анализатор, и помедитировал над картинками- там сразу видно, что и когда тормозит конкретно в Вашем устройстве с Вашей программой. Может, дело вообще не в карточках, или их вклад в замедление не так критичен, как другие задержки.

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


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

46 minutes ago, Freibier said:

еще какие то события должны случиться

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

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

 

Quote

Ну раз ответов нет

Ну вы даете :lol2:

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


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

5 minutes ago, aaarrr said:

Ну вы даете :lol2:

Молодежжж. Вот помню напишешь чего-то в Фидо в руембеддеде например - и ждешь пару дней чтоб люди хоть прочитали.

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


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

17 часов назад, Freibier сказал:

Почему так сильно может падать скорость при одновременной записи?

Похоже задержки определяются не одной картой. Т.е. если самая большая задержка чередуется между двумя картами например через сектор то время записи увеличится вдвое.

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


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

49 минут назад, aaarrr сказал:

Ну вы даете :lol2:

 

41 минуту назад, Ruslan1 сказал:

Молодежжж. Вот помню напишешь чего-то в Фидо в руембеддеде например - и ждешь пару дней чтоб люди хоть прочитали.

Сорри. Привык что здесь быстро и грамотно отвечают. Разбаловали Вы начинающих радиогубителей :biggrin:

49 минут назад, aaarrr сказал:

был у меня дивный китайский кард-ридер

действительно магия, как это еще можно объяснить.

 

40 минут назад, MegaVolt сказал:

Похоже задержки определяются не одной картой. Т.е. если самая большая задержка чередуется между двумя картами например через сектор то время записи увеличится вдвое.

Так это выяснили уже. Действительно задержки возникают непредсказуемо и асинхронно.

И когда одна из карт решит выставить BUSY и начать писать буфер на флешь - другие ждут ... дождались, и теперь уже они/она BUSY выставляют ... и опять весь колхоз ждёт

 

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

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


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

1 час назад, Ruslan1 сказал:

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

Всё. Разобрался. Спасибо.

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


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

1 час назад, Ruslan1 сказал:

Elapsed time - это время доступа в миллисекундах.

А это время - с учётом временных издержек софта? ОС, драйвера, сама программа могут же прилично добавить.

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


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

2 minutes ago, Longiel said:

ОС, драйвера, сама программа могут же прилично добавить.

Да, но:

1 hour ago, Ruslan1 said:

Проверил несколько раз- ситуация стабильная.

 

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


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

4 minutes ago, Longiel said:

А это время - с учётом временных издержек софта? ОС, драйвера, сама программа могут же прилично добавить.

Да, согласен. Пусть в худшем случае программа накидывает +500мс на любое чтение (хотя на самом деле думаю нет), я не знаю как оно внутри сделано. Но посмотрите на разницу между блоками- 600 миллисекунд для некоторых из них. И это уже вряд ли программа так избирательно время увеличивает для одних и не увеличивает для других (ну и на разных картах картина разная).

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


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

Мне как-то один софт для передачи по UART подложил свинью - стабильно добавлял задержки между пакетами) Казалось бы - UART, которому 100 лет уже. Пакеты должны были сыпаться ровно раз в 750 мс, но для определённых пакетов это время стабильно двигалось ровно на 300 мс, прижимая пакет к следующему. Причём картинка работы была стабильная.

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


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

Вот ради эксперимента протестировал две карты.

Первая (не дай бог еще раз купить такую карту) Hi-Rali 16 GB microSDHC class 10 HI-16GBSD10U1-00

1.thumb.jpg.5b7e3afb4f16146f87dac87c9fbb76b9.jpg

Вторая Kingston 64 GB microSDXC class 10 UHS-I U3 Canvas Go! Plus SDCG3/64GBSP

2.thumb.jpg.3e61f71680c9f376ce9a569c82a32f8d.jpg

Т.е. у одной из самых быстрых карт на сегодняшний день время TAAC больше 100 ms??? :wacko:

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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