не знаток, но могу предположить что:
- на скорость физпроцесса записи влияет режим работы карточки (SPI, SD) и ширина шины в режиме SD (1 или 4 бита)
- на скорость физпроцесса записи влияет режим монтирования карточки - как мне помнится, карточку можно смонтировать в режим сквозной записи - данные для записи сразу пишутся на накопитель - чтобы не потерять данные при внезапном отключение накопителя. или в режим отложенной записи - данные пишутся в буфер памяти, а далее по мере заполнения и стратегии настроек системы в фоне пишутся на карточку..
не-не-не.
берем совершенно конкретный случай- плата SK-AT91SAM9XE512-S3E например. там карточка подключена в режиме SD (и видимо шины 4 бита), монтируется раздел с ключем -oasync . По умолчанию карта форматирована в FAT
получаем некоторую скорость записи N Кб/сек
интересует: если сменить файловую систему карточки на YAFS2 или UBIFS - увеличится ли скорость записи?
Попробуйте, но думаю, не особо увеличится.
Исходя из этих соображений: все карточки основаны на NAND флешках, в которых запись и чтение идет секторами (512 или 2048Б), а стирание блоками (128K), т.е. стоит отключить кеш как запись каждого сектора будет сопровождаться стиранием-перезаписью всего блока ...
Поэтому скорость записи и падает в десятки раз, при отключеных кешах.
Как проявит себя UBIFS на блочном устройстве (т.к. SD карточка имеет свой контроллер, который выполняет часть функций, которые должна брать на себя UBI - контроль битых блоков и случайный выбор блока для записи) а не на самой NAND флешке довольно интересно.
Полагаю, накладные расходы на саму ФС будут небольшими.
Кстати, следует отметить, что кроме ФС еще имеет значение (а в случае с дисками еще большее значение) планировщик записи, они были внедрены для меньшей аммортизации жестких дисков, насколько помню, их было штуки 3-4, но для флешевых дисков лучше было выбирать NOOP, т.к. они без особой надобности, хотя в последнее время замечал в BSP плат стояли включены другие планировщики (не знаю с чем связвно, может там чего нового внедрили) ...
Что касается at91sam9260 то у меня например очень сильно зависела скорость от самой карты - причем как ни странно самую большую скорость выдавали mmc, От фс конечно зависит - но если нет сжатия и журнала то по большому счету скорость будет одинакова, тем более что на флешах не нужно головки диска позиционировать при фрагментации.
PS помню ваши проблемы с реалтаймом - я бы рекомендовал попробовать RT-патчи, там есть одно интересное свойство - все обработчики прерываний работают в отдельных процессах ядра и им можно из юзерспейс назначать приоритеты как обычным процессам, например можно поставить наивысший приоритет обработчику mci, Как показывает практика система с этими патчами вполне жизнеспособна и стабильна а для atmel даже сведения кое какие есть https://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch о латентности, так что должно "взлететь" :)
UBIFS похоже таки- не будет, но в статье по ссылке сказано: JFFS2 file system works on top of MTD devices,
Так я об этом и говорю - не будет, в том числе и jffs. Все эти фс работают только поверх MTD и не будут работать на блочных устройствах. Можно эмулировать блочное устройство на устройстве MTD а вам нужно наоборот :)
PS помню ваши проблемы с реалтаймом - я бы рекомендовал попробовать RT-патчи, там есть одно интересное свойство - все обработчики прерываний работают в отдельных процессах ядра и им можно из юзерспейс назначать приоритеты как обычным процессам, например можно поставить наивысший приоритет обработчику mci, Как показывает практика система с этими патчами вполне жизнеспособна и стабильна а для atmel даже сведения кое какие есть https://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch о латентности, так что должно "взлететь" :)
да, полгода назад я тут у многих в печенках сидел :)
реалтаймом тут не поможешь. все упирается именно в скорость записи на SD - повышай потоку приоритет, не повышай - все равно.
с одной стороны сбор данных переложили на FPGA, но каналов много, частота оцифровки большая, итоговый поток данных 660Кб/сек . Вроде и успевает писаться, но что называется "на грани". Хотелось бы иметь запас. Вот и мозгую.
В принципе есть еще одна безумная идея - SD подключить к FPGA и запись тоже на FPGA переложить :) но это работа и время... которого не хватает :(
UBIFS похоже таки- не будет, но в статье по ссылке сказано: JFFS2 file system works on top of MTD devices,
Так я об этом и говорю - не будет, в том числе и jffs. Все эти фс работают только поверх MTD и не будут работать на блочных устройствах. Можно эмулировать блочное устройство на устройстве MTD а вам нужно наоборот :)
вообще: насколько я понимаю, работа с шиной SD-карты идет в драйвере тупо как с портом ввода-вывода (PA4-11)? то бишь все операции делаются как: установил биты, снял биты, и т.п.?
и все это делает АРМ, так?
а ведь в принципе это можно переложить на FPGA - во-первых и ЦП разгрузится, и во-вторых FPGA может более короткую временную диаграмму формировать, т.е. скорость повысить.
То есть скажем реализовать в SRAM у FPGA несколько управляющих регистров и буфер данных. И тогда проц просто копирует данные в буфер, записывает в регистр команду записи/чтения и через ожидаемое время выполнения операции почитывает регистр состояния (результата).