|
|
  |
Алгоритм записи на SD карту |
|
|
|
Dec 2 2012, 14:08
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Кто нибудь может посоветовать алгоритм для записи на SD Проблема такая: имееца контроллер в котором всего 32 кбайт памяти, получаю данные с АЦП и с помощью двух буферов ping-pong посылаю сигнал RAISE() обработчику записи на sd карту. Насколько я понимаю, внутри SD карты так же находица контроллер, который определяет в какие секторы можно писать, какие сбойные и пр. Иногда бывают такие ситуации (наблюдал на разных ОС) - что контроллер SD карты на какое-то время задумывается, а потом начинает писать-вероятно в это время он может найти какой то сбойный блок и переместить какие то свои таблицы. Для меня такая задержка недопустима, но единственное решение ее обхода-это увеличение буферов ping-pong, но я уже написал что памяти всего 32 кбайт-и она используется не только для этих двух буферов, но и для сегмента данных и хранения констант, поэтому под буферы беру всего 16 кбайт.
Может есть какое нибудь красивое решение?
|
|
|
|
|
Dec 2 2012, 15:29
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(aaarrr @ Dec 2 2012, 17:16)  Нет решения. Только буфер достаточного размера. Ну а если писать на внутреннюю flash, хотя это нехорошо?
|
|
|
|
|
Dec 2 2012, 17:41
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(aaarrr @ Dec 2 2012, 20:28)  Операция записи на SD-карту может требовать до 250мс. Соответственно, нужно иметь буфер, который за это время не успеет переполниться. 250 мс - как раз эта предельная частота сброса на SD у меня. За это время у меня копится один буфер, размером в 4 кбайт и в это же время сбрасывается другой. На некоторых картах ошибок нет в течении нескольких суток на некоторых появляются пропуски. И еще вопрос: 250 мс этот какой-то стандарт, откуда вы взяли ээто число?
|
|
|
|
|
Dec 3 2012, 07:20
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(Ozelot @ Dec 3 2012, 10:54)  Столкнулся с аналогичной проблемой. По спецификации задержка может быть до 500mS. Протестировал десяток разных карточек. У всех задержка была до 500mS. У одной карточки объемом 32ГБайта задержка была до 820mS ( Team 32GB MocroSD). Выкрутился добавлением в схему дополнительной памяти (использовал Microchip 23LC1024 - SRAM c SPI интерфейсом). У меня кстати на карте QUMO объемом в 32 Гбайт так и происходит-сбои и потери буфера. На карточках, объемом в 4 Гбайт SanDisk я увеличил частоту сброса буфера на карту- он происходит 4 раза в секунду, сам буфер размером в 2000 байт (не килобайт!) Сбоев нет, но на других картах появляются. И очень странно-они маркированы более высоким классом, то есть у них должнга быть большая скорость-но именно они и сбоят. Да ..хотел добавить, карта работает по протоколу с 4-мя проводами, а не SPI
|
|
|
|
|
Dec 3 2012, 07:42
|

Частый гость
 
Группа: Свой
Сообщений: 115
Регистрация: 6-06-05
Из: Ukraine
Пользователь №: 5 764

|
Цитата(inventor @ Dec 3 2012, 10:20)  У меня кстати на карте QUMO объемом в 32 Гбайт так и происходит-сбои и потери буфера. На карточках, объемом в 4 Гбайт SanDisk я увеличил частоту сброса буфера на карту- он происходит 4 раза в секунду, сам буфер размером в 2000 байт (не килобайт!) Сбоев нет, но на других картах появляются. И очень странно-они маркированы более высоким классом, то есть у них должнга быть большая скорость-но именно они и сбоят.
Да ..хотел добавить, карта работает по протоколу с 4-мя проводами, а не SPI У меня работа по SD-интерфейсу при частоте шины 24МГц. Team 32GB Speed Class 10 - средняя скорость последовательной записи 9МБайт/сек , при этом изредка бывают паузы до 820mS. Transcend 32GB Speed Class 4 - средняя скорость последовательной записи 8МБайт/сек, максимальная пауза 500mS.
|
|
|
|
|
Dec 3 2012, 07:53
|

Частый гость
 
Группа: Свой
Сообщений: 115
Регистрация: 6-06-05
Из: Ukraine
Пользователь №: 5 764

|
Цитата(inventor @ Dec 3 2012, 10:44)  Вот это и странно-класс карты ниже, а работает лучше. Ничего странного. Я же указал что запись была последовательная. В случае произвольного доступа она может значительно упасть (это уже зависит от мозгов встроенного в карту контроллера).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|