Linker 6 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба Не могу найти ответ на вопрос: влияет ли интерфейс SDcard на скорость записи данных внутренним процессором карты (MCUcard)? Очевидно, что передача данных по шине SDIO намного быстрее, чем по SPI. Но получив блок данных от микроконтроллера MCUcard приостанавливает обмен с микроконтроллером и начинает собственно запись во Flash память карты и отключается от МК. В соответствии со спецификациями на карты это время весьма существенно и может достигать сотен мсек. Я работал с картами по SPI шине, здесь MCUcard после получения блока 512 байт (или пакета) притягивает линию MISO на весьма продолжительное время и обмен останавливается. Причем это время может меняться. Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Сейчас есть задача, в которой такие остановки недопустимы. Не работал по шине SDIO, но хочу понять: там та же ситуация? Хотя в спецификациях время работы не оговаривается в зависимости от типа шины. Но вдруг там время меньше? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 1 hour ago, Linker said: Не работал по шине SDIO, но хочу понять: там та же ситуация? Да. Величина задержек может меняться в зависимости от карты и интерфейса, но они принципиально есть. Единственное верное решение - буферизация потока в RAM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Linker 6 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 20 minutes ago, aaarrr said: Единственное верное решение - буферизация потока в RAM. Спасибо. А скорость записи, которая написана на карте, ех. 50МГЦ что означает? Скорость работы при получении данных со стороны флешкиного MCUcard без учета времени паузы на обработку и запись? Может подскажите, как правильно выбрать карту с минимальным временем на эту паузу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 50 МГц означает максимальную частоту CLK. До какой-то степени скорость характеризуется классом карты, но класс определяет среднюю скорость записи. Паузы, если не повезет, могут достигать секунды. Особенно это проявляется, когда идет запись по второму-третьему кругу на карту. До некоторой степени облегчить жизнь можно, используя команду Pre-erase и запись большими блоками (по 128-512кБ). Выбрать карту практически невозможно. Если даже Вы ее протестировали, и она показала себя хорошо, то паузы могут появиться позже, когда карта будет заполнена вся (в файловой системе может ничего и не быть, но карте же не сказали, где у нее в содержимом ничего нет). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 58 minutes ago, Linker said: А скорость записи, которая написана на карте, ех. 50МГЦ что означает? На карте пишут обычно среднюю устоявшуюся скорость записи. 1 hour ago, Linker said: Может подскажите, как правильно выбрать карту с минимальным временем на эту паузу? Никак. Возможные паузы нужно обязательно учитывать при проектировании. Рынок памяти очень динамичен, уже завтра вы подобранных карт не купите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Linker 6 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 8 minutes ago, Alex11 said: До некоторой степени облегчить жизнь можно, используя команду Pre-erase Спасибо! Я использую безфайловый формат. Т.е. перед каждым применением карты лучше делать ее стирание командами карты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 7 часов назад, Linker сказал: Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Сейчас есть задача, в которой такие остановки недопустимы. Тогда писать на SD-карту будет плохим решением. Потому как трудно предсказать возможную задержку записи. То что "что-то измерили и получили" - не показатель, как уже сказали - завтра время может быть в разы другим. Если важна задержка записи, то нужно и выбирать решение, гарантирующее максимальную задержку записи. Например - поставить чип SPI-флешь с нужной задержкой записи (из мануала на него). Если и у него задержка слишком большая - поставить параллельно несколько таких чипов, сделав чередование записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 7 hours ago, Linker said: Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Что за карта с максимальной задержкой в 5 мс? Дайте название. Сам такие хочу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 11 часов назад, Linker сказал: Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Сейчас есть задача, в которой такие остановки недопустимы. Дело в том, что величина этой задержки может быть случайной, т.к. в карте используется механизм выравнивания износа, который требует дополнительного времени, и сколько на это потребуется вам никто не скажет. Для подобных применений нужно использовать не карты со встроенным контроллером, а микросхемы флеша, причем типов NOR или SLC NAND, чтоб не было нужды использовать подобные алгоритмы. Или выделять большой буфер в памяти, копить там данные и потом скидывать их на карту большими блоками (4 и более КБайт) в режиме SD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 26 minutes ago, mantech said: Дело в том, что величина этой задержки может быть случайной, т.к. в карте используется механизм выравнивания износа, к Думаю дело уже давно не в этом. На картах куча независимых банков. Пока в одном выравнивается износ в другом можно уже вести запись. Карты для видео никаких задержек не дают. Дело только в цене. Нужно искать карты имеющие 11-й класс команд и имеющие Performance Enhancement Function Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Linker 6 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 13 hours ago, AlexandrY said: Что за карта с максимальной задержкой в 5 мс? Дайте название. Сам такие хочу. Это давно было, не вспомню. Переробовал кучу разных Скорее всего этот результат был получен на новой карте. Посмотрел в своем архиве и нашел: "Для новой карты SanDisc 32G Запись блока 512 байт (SCLK=125КГц): прием блока – 42мс, внутренняя запись (Busy) с предварительным стиранием. Без стирания - 17mc (No Erase)" 9 hours ago, mantech said: Или выделять большой буфер в памяти, копить там данные и потом скидывать их на карту большими блоками (4 и более КБайт) в режиме SD. Вы имеете ввиду режим шины SDIO? У этого режима есть дополнительные команды, повышающие скорость обработки и записи флэшкиным MCUcard? Я это и пытаюсь выяснить. 8 hours ago, AlexandrY said: Думаю дело уже давно не в этом. На картах куча независимых банков. Пока в одном выравнивается износ в другом можно уже вести запись. Карты для видео никаких задержек не дают. Дело только в цене. Нужно искать карты имеющие 11-й класс команд и имеющие Performance Enhancement Function Согласен, что давно уже производителям нужно было что-то придумать. А вы пробовали 11-й класс? Смотрели какая там задержка со стороны MCUcard? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 1 час назад, Linker сказал: Вы имеете ввиду режим шины SDIO? У этого режима есть дополнительные команды, повышающие скорость обработки и записи флэшкиным MCUcard? Я это и пытаюсь выяснить. Нет, это режим SD. SDIO - несколько другое. Никаких команд повышения скорости нет, но карты пишут блоками, которые гораздо больше, чем 512 байт, например записывая 512 байт за 5 мсек, и 4К тоже 5 мсек, итого имеем 8и кратный прирост скорости, но SPI не позволяет работать такими объемами вот и вся хитрость, при чтении тоже есть прирост, но поменьше... 9 часов назад, AlexandrY сказал: Думаю дело уже давно не в этом. На картах куча независимых банков. Пока в одном выравнивается износ в другом можно уже вести запись. Может и придумали, но я таких карт не видал, может они и есть со стоимостью чугунного моста, но всегда надо рассчитывать, что клиент купит какой-нить смартбай по дешевке и вся ваша скорость сойдет на нет, нужно использовать общепринятые методы... 9 часов назад, AlexandrY сказал: Карты для видео никаких задержек не дают. Все карты дают задержки, иначе об этом не говорилось бы в даташитах, просто скоростные карты это компенсируют средней скоростью записи и тем же буферированием. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Linker 6 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 41 minutes ago, mantech said: Нет, это режим SD. SDIO - несколько другое. 512 байт за 5 мсек, и 4К тоже 5 мсек, итого имеем 8и кратный прирост скорости, но SPI не позволяет работать такими объемами вот и вся хитрость То, что скорость чтения/записи по SDIO (так называется 4х проводная шина обмена в ARM STM32) будет выше, для меня понятно. Но здесь имеется ввиду скорость приема флэшкиным MCUcard данных в свой буфер для последующей записи в NAND? Или это общее время записи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Если запись идет блоком 512 байт то SD карта вычитает страницу из NAND(4к или больше, зависит от NAND) модифицирует страницу и запишет обратно, по-этому эффективнее работать с блоками равными(или больше но кратными) странице NAND. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 1 час назад, mantech сказал: но всегда надо рассчитывать, что клиент купит какой-нить смартбай по дешевке и вся ваша скорость сойдет на нет, нужно использовать общепринятые методы... ТС вроде упоминал, что ему важнее задержка записи, а не скорость. Это совершенно разные вещи. Высокая скорость и всякие там 11x не гарантируют малой задержки записи. И если важна всё-таки задержка, то имхо бесполезно искать карты 11x (или заставлять юзера покупать только их). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться