|
|
  |
Не лезет в память, как это исправить? |
|
|
|
Oct 19 2015, 09:04
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Копейкин @ Oct 19 2015, 11:28)  Поэтому я делаю сперва запись данных, сплошным потоком, а потом пишу FAT. Вы сейчас помянули еще одну сущность, которая к собственно к процедуре записи никакого отношения не имеет - это файловая система Что, как и кем там реализовано, и как надо делать для исключения отвлечений на запись файловой сисемы, если она вообще нужна, это отдельный разговор. И она вообще не поминалась в этой теме. А что касается собственно записи, то Вы же сами и написали, что при секвенальной записи никаких проблем. Все остальное к собственно записи потока даных не имеет - все пишется в нормальном темпе без задержек.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 19 2015, 09:12
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134

|
Цитата(zltigo @ Oct 19 2015, 12:04)  А что касается собственно записи, то Вы же сами и написали, что при секвенальной записи никаких проблем. Все остальное к собственно записи потока даных не имеет - все пишется в нормальном темпе без задержек. Да я собственно только хотел уточнить причину возникновения задержек при записи и как их избежать. Наверное все, начинающие работать с SDcard, наступают на эти грабли. А тут все пишут, что задержек в принципе не существует, что неверно. Прошу прощения за оффтопик.
|
|
|
|
|
Oct 19 2015, 09:17
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Копейкин @ Oct 19 2015, 12:12)  А тут все пишут, что задержек в принципе не существует, что неверно. Задержки на запись блока - существуют, их максимум определен, но он никак не приближается ни к секундам ни к сотням миллисекунд. Все вопросы о сотнемиллисекундных задержках следует переадресовывать к тому, кто написал такой софт в котором лезут такие задержки.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 19 2015, 10:01
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(jcxz @ Oct 19 2015, 12:55)  Итого: 48000/512*.25 = ~24 блока по 512байт, но никак не 128кБ хм, тогда не ~24 блока а ~24 секундыто есть при максимальных задержках получается что запись одной секунды звуковых данных может растянутся в 24 раза И сколько буфер не бери, все равно труба вытекающая меньше втекающей =) P.S. Хотя я такого реально не наблюдал, тоже пишу на SD но в два потока и c использованием FatFS
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Oct 19 2015, 10:10
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(megajohn @ Oct 19 2015, 16:01)  хм, тогда не ~24 блока а ~24 секунды Не понял, какие 24 секунды???? 48000 б/сек - скорость потока записываемых данных, делим на размер блока 512, получаем кол-во блоков записываемых в секунду, умножаем на длительность задержки 0.25 секунд. Получаем кол-во блоков, которые могут накопиться за время задержки. В реале надо взять с небольшим запасом - 1-2 блока. Цитата(Копейкин @ Oct 19 2015, 16:02)  Хост должен быть готов к таймауту 250 мс. И что? Я уже посчитал какой размер буфера нужен для устойчивости к такой задержке. У ТС в 10 раз больше. и при этом у него ещё и потери.....
|
|
|
|
|
Oct 19 2015, 10:24
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(megajohn @ Oct 19 2015, 16:17)  и по примеру Копейкин`а, не указано, что хост получит только одну задержку, значит задержка может проявлятся и постоянно. Или нет ? Если такая задержка появляется постоянно, значит это карта с ну очень мееееееееееееееееееееееееееееедленной потоковой скоростью записи. Настолько медленная, что таких не существет  Нет сейчас в продаже карт со скоростью записи менее неск. МБ/сек. Такая большая задержка как я понимаю, появляется в момент стирания блока (возможно 64кБ (или большего) блока), далее этот блок пишется, задержки записи на порядки меньше, и след. задержка стирания будет по достижении границы след. блока стирания. Размеры блоков стирания - см. уже упомянутый CSD.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|