реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Не лезет в память, как это исправить?
jcxz
сообщение Oct 19 2015, 07:58
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(inventor @ Oct 19 2015, 13:07) *
херня. ничем не подкрепленая
SD карты затыкались на время до секунды.

"Херня" - это то, что у Вас в исходниках.
А у меня с SD-картой всё работало на 512 байт без каких-либо потерь.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Oct 19 2015, 08:28
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Знаете, а мне приходилось сталкиваться с большими задержками при записи на SD/SDHC карты.
Если писать секторы строго последовательно, то в самом начале записи ~600 мс задержка - карта выдает неготовность, а затем сплошным потоком.
Если запись в произвольные секторы, то такие задержки постоянно.
Поэтому я делаю сперва запись данных, сплошным потоком, а потом пишу FAT.
На чтение никаких задержек.
Где-то говорилось, что задержки обусловлены внутренним алгоритмом "перемешивания" карты.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 19 2015, 09:04
Сообщение #18


Гуру
******

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



QUOTE (Копейкин @ Oct 19 2015, 11:28) *
Поэтому я делаю сперва запись данных, сплошным потоком, а потом пишу FAT.

Вы сейчас помянули еще одну сущность, которая к собственно к процедуре записи никакого отношения не имеет - это файловая система Что, как и кем там реализовано, и как надо делать для исключения отвлечений на запись файловой сисемы, если она вообще нужна, это отдельный разговор. И она вообще не поминалась в этой теме.
А что касается собственно записи, то Вы же сами и написали, что при секвенальной записи никаких проблем. Все остальное к собственно записи потока даных не имеет - все пишется в нормальном темпе без задержек.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Oct 19 2015, 09:12
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(zltigo @ Oct 19 2015, 12:04) *
А что касается собственно записи, то Вы же сами и написали, что при секвенальной записи никаких проблем. Все остальное к собственно записи потока даных не имеет - все пишется в нормальном темпе без задержек.

Да я собственно только хотел уточнить причину возникновения задержек при записи и как их избежать.
Наверное все, начинающие работать с SDcard, наступают на эти грабли.
А тут все пишут, что задержек в принципе не существует, что неверно.
Прошу прощения за оффтопик. laughing.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 19 2015, 09:17
Сообщение #20


Гуру
******

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



QUOTE (Копейкин @ Oct 19 2015, 12:12) *
А тут все пишут, что задержек в принципе не существует, что неверно.

Задержки на запись блока - существуют, их максимум определен, но он никак не приближается ни к секундам ни к сотням миллисекунд. Все вопросы о сотнемиллисекундных задержках следует переадресовывать к тому, кто написал такой софт в котором лезут такие задержки.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 19 2015, 09:37
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Копейкин @ Oct 19 2015, 15:12) *
А тут все пишут, что задержек в принципе не существует, что неверно.

Тут такое никто не утверждал. Более того - из сообщения ТС совсем не явствует, что он использует ФС (хотя из его сообщения вообще мало что явствует).
Задержки внутри middleware ФС предугадать сложно, в то время как задержки SD-карты прописаны в её блоке данных, считываемом на этапе инициализации.
Go to the top of the page
 
+Quote Post
inventor
сообщение Oct 19 2015, 09:40
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(zltigo @ Oct 19 2015, 12:17) *
Задержки на запись блока - существуют, их максимум определен, но он никак не приближается ни к секундам ни к сотням миллисекунд. Все вопросы о сотнемиллисекундных задержках следует переадресовывать к тому, кто написал такой софт в котором лезут такие задержки.

вот в этой теме неск, лет назад уже разбирали
http://electronix.ru/forum/index.php?showt...=89678&st=0

Go to the top of the page
 
+Quote Post
Копейкин
сообщение Oct 19 2015, 09:49
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Вот не соглашусь с Вами.
Специально открыл документ

"Copyright 2001-2006 SD Group (Panasonic, SanDisk, Toshiba) and SD Card Association
Physical Layer Simplified Specification Version 2.00"

там написано:
A High Capacity SD Memory Card indicates R2W_FACTOR as a fixed value.
Maximum length of busy is defined as 250 ms for all write operations. The host should use 250 ms
timeout (minimum) for single and multiple write operations
rather than using R2W_FACTOR.

R2W_FACTOR - это поле CSD (card specific descriptor)
Могут быть такие задержки.

PS
Опередили.
Ну в общем я тоже самое хотел сказать.
Тут даже на обсуждение ссылка есть.

Сообщение отредактировал Копейкин - Oct 19 2015, 09:54
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 19 2015, 09:55
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Копейкин @ Oct 19 2015, 15:49) *
R2W_FACTOR - это поле CSD (card specific descriptor)
Могут быть такие задержки.

Итого: 48000/512*.25 = ~24 блока по 512байт, но никак не 128кБ
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 19 2015, 10:01
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 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 штук).
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Oct 19 2015, 10:02
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Я на этом спор прекращаю, т.к. не вижу смысла.
Я специально выделил жирным в копипасте документа.
Хост должен быть готов к таймауту 250 мс.
Дальнейшее можем обсудить по ссылке inventor'а, если есть желание.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 19 2015, 10:10
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(megajohn @ Oct 19 2015, 16:01) *
хм, тогда не ~24 блока а ~24 секунды

Не понял, какие 24 секунды???? wacko.gif
48000 б/сек - скорость потока записываемых данных, делим на размер блока 512, получаем кол-во блоков записываемых в секунду, умножаем на длительность задержки 0.25 секунд.
Получаем кол-во блоков, которые могут накопиться за время задержки. В реале надо взять с небольшим запасом - 1-2 блока.

Цитата(Копейкин @ Oct 19 2015, 16:02) *
Хост должен быть готов к таймауту 250 мс.

И что? Я уже посчитал какой размер буфера нужен для устойчивости к такой задержке.
У ТС в 10 раз больше. и при этом у него ещё и потери.....
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 19 2015, 10:17
Сообщение #28


Профессионал
*****

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



Цитата(jcxz @ Oct 19 2015, 13:10) *
Не понял, какие 24 секунды???? wacko.gif

первоначально не указана размерность, поэтому вполне справедливо можно и так посчитать: 48000 байт / 512 байт * 0,25сек = 24 сек

и по примеру Копейкин`а, не указано, что хост получит только одну задержку, значит задержка может проявлятся и постоянно. Или нет ?


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 19 2015, 10:24
Сообщение #29


Гуру
******

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



QUOTE (megajohn @ Oct 19 2015, 13:01) *
то есть при максимальных задержках получается что запись...

...производится со скоростью 2K в секунду и это предел sm.gif в 24 раза МЕНЬШЕ желаемого.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 19 2015, 10:24
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(megajohn @ Oct 19 2015, 16:17) *
и по примеру Копейкин`а, не указано, что хост получит только одну задержку, значит задержка может проявлятся и постоянно. Или нет ?

Если такая задержка появляется постоянно, значит это карта с ну очень мееееееееееееееееееееееееееееедленной потоковой скоростью записи.
Настолько медленная, что таких не существет sm.gif
Нет сейчас в продаже карт со скоростью записи менее неск. МБ/сек.
Такая большая задержка как я понимаю, появляется в момент стирания блока (возможно 64кБ (или большего) блока), далее этот блок пишется, задержки записи на порядки меньше, и след. задержка стирания будет по достижении границы след. блока стирания. Размеры блоков стирания - см. уже упомянутый CSD.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016