Linker 0 Posted February 12, 2020 · Report post Не могу найти ответ на вопрос: влияет ли интерфейс SDcard на скорость записи данных внутренним процессором карты (MCUcard)? Очевидно, что передача данных по шине SDIO намного быстрее, чем по SPI. Но получив блок данных от микроконтроллера MCUcard приостанавливает обмен с микроконтроллером и начинает собственно запись во Flash память карты и отключается от МК. В соответствии со спецификациями на карты это время весьма существенно и может достигать сотен мсек. Я работал с картами по SPI шине, здесь MCUcard после получения блока 512 байт (или пакета) притягивает линию MISO на весьма продолжительное время и обмен останавливается. Причем это время может меняться. Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Сейчас есть задача, в которой такие остановки недопустимы. Не работал по шине SDIO, но хочу понять: там та же ситуация? Хотя в спецификациях время работы не оговаривается в зависимости от типа шины. Но вдруг там время меньше? Quote Ответить с цитированием Share this post Link to post Share on other sites
aaarrr 0 Posted February 12, 2020 · Report post 1 hour ago, Linker said: Не работал по шине SDIO, но хочу понять: там та же ситуация? Да. Величина задержек может меняться в зависимости от карты и интерфейса, но они принципиально есть. Единственное верное решение - буферизация потока в RAM. Quote Ответить с цитированием Share this post Link to post Share on other sites
Linker 0 Posted February 12, 2020 · Report post 20 minutes ago, aaarrr said: Единственное верное решение - буферизация потока в RAM. Спасибо. А скорость записи, которая написана на карте, ех. 50МГЦ что означает? Скорость работы при получении данных со стороны флешкиного MCUcard без учета времени паузы на обработку и запись? Может подскажите, как правильно выбрать карту с минимальным временем на эту паузу? Quote Ответить с цитированием Share this post Link to post Share on other sites
Alex11 0 Posted February 12, 2020 · Report post 50 МГц означает максимальную частоту CLK. До какой-то степени скорость характеризуется классом карты, но класс определяет среднюю скорость записи. Паузы, если не повезет, могут достигать секунды. Особенно это проявляется, когда идет запись по второму-третьему кругу на карту. До некоторой степени облегчить жизнь можно, используя команду Pre-erase и запись большими блоками (по 128-512кБ). Выбрать карту практически невозможно. Если даже Вы ее протестировали, и она показала себя хорошо, то паузы могут появиться позже, когда карта будет заполнена вся (в файловой системе может ничего и не быть, но карте же не сказали, где у нее в содержимом ничего нет). Quote Ответить с цитированием Share this post Link to post Share on other sites
aaarrr 0 Posted February 12, 2020 · Report post 58 minutes ago, Linker said: А скорость записи, которая написана на карте, ех. 50МГЦ что означает? На карте пишут обычно среднюю устоявшуюся скорость записи. 1 hour ago, Linker said: Может подскажите, как правильно выбрать карту с минимальным временем на эту паузу? Никак. Возможные паузы нужно обязательно учитывать при проектировании. Рынок памяти очень динамичен, уже завтра вы подобранных карт не купите. Quote Ответить с цитированием Share this post Link to post Share on other sites
Linker 0 Posted February 12, 2020 · Report post 8 minutes ago, Alex11 said: До некоторой степени облегчить жизнь можно, используя команду Pre-erase Спасибо! Я использую безфайловый формат. Т.е. перед каждым применением карты лучше делать ее стирание командами карты. Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted February 12, 2020 · Report post 7 часов назад, Linker сказал: Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Сейчас есть задача, в которой такие остановки недопустимы. Тогда писать на SD-карту будет плохим решением. Потому как трудно предсказать возможную задержку записи. То что "что-то измерили и получили" - не показатель, как уже сказали - завтра время может быть в разы другим. Если важна задержка записи, то нужно и выбирать решение, гарантирующее максимальную задержку записи. Например - поставить чип SPI-флешь с нужной задержкой записи (из мануала на него). Если и у него задержка слишком большая - поставить параллельно несколько таких чипов, сделав чередование записи. Quote Ответить с цитированием Share this post Link to post Share on other sites
AlexandrY 0 Posted February 12, 2020 · Report post 7 hours ago, Linker said: Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Что за карта с максимальной задержкой в 5 мс? Дайте название. Сам такие хочу. Quote Ответить с цитированием Share this post Link to post Share on other sites
mantech 0 Posted February 12, 2020 · Report post 11 часов назад, Linker сказал: Подбором карт удавалось уменьшить это время до 5 мсек, но все равно это много. Сейчас есть задача, в которой такие остановки недопустимы. Дело в том, что величина этой задержки может быть случайной, т.к. в карте используется механизм выравнивания износа, который требует дополнительного времени, и сколько на это потребуется вам никто не скажет. Для подобных применений нужно использовать не карты со встроенным контроллером, а микросхемы флеша, причем типов NOR или SLC NAND, чтоб не было нужды использовать подобные алгоритмы. Или выделять большой буфер в памяти, копить там данные и потом скидывать их на карту большими блоками (4 и более КБайт) в режиме SD. Quote Ответить с цитированием Share this post Link to post Share on other sites
AlexandrY 0 Posted February 12, 2020 · Report post 26 minutes ago, mantech said: Дело в том, что величина этой задержки может быть случайной, т.к. в карте используется механизм выравнивания износа, к Думаю дело уже давно не в этом. На картах куча независимых банков. Пока в одном выравнивается износ в другом можно уже вести запись. Карты для видео никаких задержек не дают. Дело только в цене. Нужно искать карты имеющие 11-й класс команд и имеющие Performance Enhancement Function Quote Ответить с цитированием Share this post Link to post Share on other sites
Linker 0 Posted February 13, 2020 · Report post 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? Quote Ответить с цитированием Share this post Link to post Share on other sites
mantech 0 Posted February 13, 2020 · Report post 1 час назад, Linker сказал: Вы имеете ввиду режим шины SDIO? У этого режима есть дополнительные команды, повышающие скорость обработки и записи флэшкиным MCUcard? Я это и пытаюсь выяснить. Нет, это режим SD. SDIO - несколько другое. Никаких команд повышения скорости нет, но карты пишут блоками, которые гораздо больше, чем 512 байт, например записывая 512 байт за 5 мсек, и 4К тоже 5 мсек, итого имеем 8и кратный прирост скорости, но SPI не позволяет работать такими объемами вот и вся хитрость, при чтении тоже есть прирост, но поменьше... 9 часов назад, AlexandrY сказал: Думаю дело уже давно не в этом. На картах куча независимых банков. Пока в одном выравнивается износ в другом можно уже вести запись. Может и придумали, но я таких карт не видал, может они и есть со стоимостью чугунного моста, но всегда надо рассчитывать, что клиент купит какой-нить смартбай по дешевке и вся ваша скорость сойдет на нет, нужно использовать общепринятые методы... 9 часов назад, AlexandrY сказал: Карты для видео никаких задержек не дают. Все карты дают задержки, иначе об этом не говорилось бы в даташитах, просто скоростные карты это компенсируют средней скоростью записи и тем же буферированием. Quote Ответить с цитированием Share this post Link to post Share on other sites
Linker 0 Posted February 13, 2020 · Report post 41 minutes ago, mantech said: Нет, это режим SD. SDIO - несколько другое. 512 байт за 5 мсек, и 4К тоже 5 мсек, итого имеем 8и кратный прирост скорости, но SPI не позволяет работать такими объемами вот и вся хитрость То, что скорость чтения/записи по SDIO (так называется 4х проводная шина обмена в ARM STM32) будет выше, для меня понятно. Но здесь имеется ввиду скорость приема флэшкиным MCUcard данных в свой буфер для последующей записи в NAND? Или это общее время записи? Quote Ответить с цитированием Share this post Link to post Share on other sites
Integro 0 Posted February 13, 2020 · Report post Если запись идет блоком 512 байт то SD карта вычитает страницу из NAND(4к или больше, зависит от NAND) модифицирует страницу и запишет обратно, по-этому эффективнее работать с блоками равными(или больше но кратными) странице NAND. Quote Ответить с цитированием Share this post Link to post Share on other sites
jcxz 0 Posted February 13, 2020 · Report post 1 час назад, mantech сказал: но всегда надо рассчитывать, что клиент купит какой-нить смартбай по дешевке и вся ваша скорость сойдет на нет, нужно использовать общепринятые методы... ТС вроде упоминал, что ему важнее задержка записи, а не скорость. Это совершенно разные вещи. Высокая скорость и всякие там 11x не гарантируют малой задержки записи. И если важна всё-таки задержка, то имхо бесполезно искать карты 11x (или заставлять юзера покупать только их). Quote Ответить с цитированием Share this post Link to post Share on other sites