Freibier 4 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 11 часов назад, Ruslan1 сказал: у вполне рабочих карт время доступа может составлять единицы секунд к некоторым (часто используемым) блокам. И это я про чтение, а не про запись!! :) Это типа как книга, флешка зачитанная до дыр чтоли? Может ли кто подсказать : если карта SDHC/SDXC UHS-I или лучше после команды чтения не начала передачу данных через 100 мс, то это надо понимать как всё пропало зависло и надо вылетать из пп чтения по таймауту? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба По спецификации через 250мс, если правильно помню. Но лучше ждать дольше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба Вот цитата из спецификации Цитата 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 мс. А максимальное сколько? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба Ну раз ответов нет, то я это понимаю так что каждый делает на своё усмотрение. А если я вопрос сформулирую так: Допустим есть новая карта 16ГБ и с временем TAAC (data read access-time) нулевого сектора не более 100 мс. Сколько раз нужно прочитать этот сектор (или сколько времени должно пройти или еще какие то события должны случиться) чтобы карта перестала успевать начинать передачу данных через 100 мс? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 4 hours ago, Freibier said: Это типа как книга, флешка зачитанная до дыр чтоли? Я имел в виду: SD карточка использовалась, и на нее что-то записывали (FAT32). А потом проверил ее на скорость чтения разных блоков. В результате получил таблицу, в которой написано время доступа к каждому из блоков. Отсортировал "с бОльшего к меньшему" и увидел самые "тормозные" по чтению блоки вверху таблицы. Проверил несколько раз- ситуация стабильная. Вот, например, одна из карточек. Elapsed time - это время доступа в миллисекундах. По дефолтовым установкам, блоки с таким временем доступа считаются "Normal" 4 hours ago, Freibier said: Может ли кто подсказать : если карта SDHC/SDXC UHS-I или лучше после команды чтения не начала передачу данных через 100 мс, то это надо понимать как всё пропало зависло и надо вылетать из пп чтения по таймауту? Нет. Так работать может быть и будет, но недолго и не всегда. Будьте готовы ждать сильно больше. Например, упомянутая мной программа считает блок нечитаемым, если доступ к нему невозможен в течении 5 секунд. Но в Вашем случае я бы сначала взял многоканальный логический анализатор, и помедитировал над картинками- там сразу видно, что и когда тормозит конкретно в Вашем устройстве с Вашей программой. Может, дело вообще не в карточках, или их вклад в замедление не так критичен, как другие задержки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 46 minutes ago, Freibier said: еще какие то события должны случиться Вот в этом и магия. Лет пятнадцать назад был у меня дивный китайский кард-ридер, после знакомства с которым карты совершенно разных производителей начинали жутко тормозить. Да и в недавние времена наблюдал подобное, правда не у себя: "мы только карту записали, а она сразу сломалась". При проверке эффект тот же - тормоза при чтении и записи. Причем во всяком эмбеддеде драйверописатели обычно придерживаются цифр, близких к спецификации, поэтому проблемы видны. USB кард-ридеры выдерживают гораздо большие тайм-ауты при работе. Quote Ну раз ответов нет Ну вы даете Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 5 minutes ago, aaarrr said: Ну вы даете Молодежжж. Вот помню напишешь чего-то в Фидо в руембеддеде например - и ждешь пару дней чтоб люди хоть прочитали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 17 часов назад, Freibier сказал: Почему так сильно может падать скорость при одновременной записи? Похоже задержки определяются не одной картой. Т.е. если самая большая задержка чередуется между двумя картами например через сектор то время записи увеличится вдвое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 49 минут назад, aaarrr сказал: Ну вы даете 41 минуту назад, Ruslan1 сказал: Молодежжж. Вот помню напишешь чего-то в Фидо в руембеддеде например - и ждешь пару дней чтоб люди хоть прочитали. Сорри. Привык что здесь быстро и грамотно отвечают. Разбаловали Вы начинающих радиогубителей 49 минут назад, aaarrr сказал: был у меня дивный китайский кард-ридер действительно магия, как это еще можно объяснить. 40 минут назад, MegaVolt сказал: Похоже задержки определяются не одной картой. Т.е. если самая большая задержка чередуется между двумя картами например через сектор то время записи увеличится вдвое. Так это выяснили уже. Действительно задержки возникают непредсказуемо и асинхронно. И когда одна из карт решит выставить BUSY и начать писать буфер на флешь - другие ждут ... дождались, и теперь уже они/она BUSY выставляют ... и опять весь колхоз ждёт Думаю попробовать при появлении первого BUSY от любой карты дать всем синхронно CMD12, тем самым инициировать одновременную запись всеми картами своего буфера на флеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 1 час назад, Ruslan1 сказал: В результате получил таблицу, в которой написано время доступа к каждому из блоков. Всё. Разобрался. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 1 час назад, Ruslan1 сказал: Elapsed time - это время доступа в миллисекундах. А это время - с учётом временных издержек софта? ОС, драйвера, сама программа могут же прилично добавить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 2 minutes ago, Longiel said: ОС, драйвера, сама программа могут же прилично добавить. Да, но: 1 hour ago, Ruslan1 said: Проверил несколько раз- ситуация стабильная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба 4 minutes ago, Longiel said: А это время - с учётом временных издержек софта? ОС, драйвера, сама программа могут же прилично добавить. Да, согласен. Пусть в худшем случае программа накидывает +500мс на любое чтение (хотя на самом деле думаю нет), я не знаю как оно внутри сделано. Но посмотрите на разницу между блоками- 600 миллисекунд для некоторых из них. И это уже вряд ли программа так избирательно время увеличивает для одних и не увеличивает для других (ну и на разных картах картина разная). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Longiel 2 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба Мне как-то один софт для передачи по UART подложил свинью - стабильно добавлял задержки между пакетами) Казалось бы - UART, которому 100 лет уже. Пакеты должны были сыпаться ровно раз в 750 мс, но для определённых пакетов это время стабильно двигалось ровно на 300 мс, прижимая пакет к следующему. Причём картинка работы была стабильная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 4 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба Вот ради эксперимента протестировал две карты. Первая (не дай бог еще раз купить такую карту) Hi-Rali 16 GB microSDHC class 10 HI-16GBSD10U1-00 Вторая Kingston 64 GB microSDXC class 10 UHS-I U3 Canvas Go! Plus SDCG3/64GBSP Т.е. у одной из самых быстрых карт на сегодняшний день время TAAC больше 100 ms??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться