Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.31;
Скачать: [xml.tar.bz2];

Вниз

Равномерное заполнения SD карты.   Найти похожие ветки 

 
Дмитрий С ©   (2012-11-28 17:14) [0]

Как известно ресурс SD карты ограничен. В следствии чего возникает два вопроса:
1. Про флеш карты (которыми SD по больше части и являются) пишут, что их продвинутые NAND контроллеры сами следят за равномерным износом карты. Как определить продвинутый на карте контроллер или нет?
Т.е. если он продвинутый, то я могу сколько угодно писать в один и тот же блок, NAND контроллер сам будет "распихивать" данные по карте?

2. Ближе к задаче. Предположим что взятая SD не имеет такой функции.
В моей задаче карта памяти используется без файловой системы. Приложение записывает данные на карту блоками (по 512 байт).
Приложению необходимо держать на карте следующие данные:
1. 64КБ очень редкоменяющихся данных.
2. Блок текущего состояния (512 байт, частоменяющихся).
3. Два блока swap (необходимы для временного хранения данных).
4. И вся остальная область - лог. Каждая запись лога занимает 8 байт. Каждый блок лога перезаписывается 64 раза во время появления тех или иных событий.

Приложение - МК с 2КБ ОЗУ.

Вопрос: Как организовать хранение данных с учетом ресурса SD карты?

Предположительное решение у меня такое:
1. Резервируем 64 КБ вначале.
2. Первый блок лога.
3. Пустой блок
4. Блок состояния.
5. Пустой блок
6. Два блока swap-а.

Когда первый блок лога заполняется, вся эта конструкция смещается на один блок. И так далее. Получаем более-менее равномерное использование карты. Но тут вопрос, в случае перезапуска приложения, как определить, где находится блок состояния (или граница лога). Чтение SD карты происходит достаточно медленно, поэтому нужен какой-то хитрый способ поиска.


 
RWolf ©   (2012-11-28 17:26) [1]

сформатировать SD в FAT12/16 и забыть о проблеме.
для хранения часто меняющихся данных прицепить отдельную микросхему с бесконечным ресурсом, см. http://www.ramtron.com


 
kilkennycat ©   (2012-11-28 17:45) [2]


> для хранения часто меняющихся данных прицепить отдельную
> микросхему с бесконечным ресурсом

или разработать свой контроллер, что несложно.


 
RWolf ©   (2012-11-28 17:49) [3]


> [2]

ТС пишет программу для самопального контроллера, насколько я понимаю.
предусмотреть на плате пару дорожек для подключения м/с памяти совсем не сложно.


 
Медвежонок Пятачок ©   (2012-11-28 17:52) [4]

Но тут вопрос, в случае перезапуска приложения, как определить, ....

Есть более банальный вопрос.
Допустим карта без этого распределятора служит год.
А с распределятором десять тысяч лет.
Сколько ты сэкономишь до конца жизни (не карты, а своей), если сама карта стоит почти ничего?


 
Jeer ©   (2012-11-28 17:53) [5]

Если 100500 пользователей - то, много.


 
Дмитрий С ©   (2012-11-28 17:55) [6]

ТС пишет программу для контроллера ATMega328. Который записывает на SD карту происходящие события.

Нет никакого смысла решать проблему припаиванием деталей, которые к тому же стоят денег, если ее можно решить программно.


> или разработать свой контроллер, что несложно.

Вот я и хочу разработать принцип записи исходя из условий задачи.


 
RWolf ©   (2012-11-28 18:03) [7]


> [6]

удобство SD-карты в том, что её можно вынуть из устройства и прочитать на ПК, а это требует стандартной разметки, самописные файловые системы обнуляют это преимущество.
насчёт ФС с балансированием износа можно в сторону JFFS2 копнуть, но не уверен, что используемый м/к её потянет в плане памяти.


 
Дмитрий С ©   (2012-11-28 18:15) [8]


> удобство SD-карты в том

Удобство SD карты в данном случае в том, что она мелкая, простая в использовании, большая по объему и очень дешевая, в комп ее втыкать пока никто не планирует.


> насчёт ФС с балансированием износа можно в сторону JFFS2
> копнуть

Какой в этом смысл, если ФС как таковая мне не требуется? К тому же на таком ограниченном МК.


> Сколько ты сэкономишь до конца жизни (не карты, а своей),
>  если сама карта стоит почти ничего?

Это надо будет каждый год ездить, менять ее, зачем мне это:)


 
Jeer ©   (2012-11-28 18:21) [9]

Так выходов-то не много:
- использование SLC-разновидности с контроллером;
- использование MLC, TLC .. с качественным контроллером;
- использование без контроллера, но с реализацией спец. файловых систем типа JFFS2 ( LogFS, UBIFS и YAFFS )


 
kilkennycat ©   (2012-11-28 18:23) [10]

если говорить о надежности, то NAND тут вообще как бы смешновато получается. независимо от того, как там распределяется.


 
Jeer ©   (2012-11-28 18:23) [11]


> Какой в этом смысл, если ФС как таковая мне не требуется?
>  К тому же на таком ограниченном МК.
>


Кто мешает изучить спецификацию JFFS2 и повторить подвигЪ :)


 
Jeer ©   (2012-11-28 18:24) [12]

Да, но и NOR совсем не для регулярных и частых изменений предназначена.


 
kilkennycat ©   (2012-11-28 18:31) [13]

Да. но все-таки уже понадежней.


 
Jeer ©   (2012-11-28 18:33) [14]

Число циклов на порядок больше - да.


 
brother ©   (2012-11-28 18:48) [15]

http://winitpro.ru/index.php/2011/06/20/fajlovaya-sistema-exfat/
?


 
QAZ9   (2012-11-28 18:59) [16]

Удалено модератором


 
kilkennycat ©   (2012-11-28 19:23) [17]


> Jeer ©   (28.11.12 18:33) [14]

да не только, в нор же вроде бы потеря одной ячейки позволяет иметь доступ к другим, в отличие от нанд. че-то такое мне помнится.


 
Дмитрий С ©   (2012-11-28 21:43) [18]

Ребят. Я же не про ячейки спрашивал и не про файловые системы.


 
Dennis I. Komarov ©   (2012-11-28 21:51) [19]


> > Сколько ты сэкономишь до конца жизни (не карты, а своей),
>
> >  если сама карта стоит почти ничего?
>
> Это надо будет каждый год ездить, менять ее, зачем мне это:
> )

Через пару-тройку лет, может и CD уже не быть...


 
Jeer ©   (2012-11-28 22:07) [20]


> Ребят. Я же не про ячейки спрашивал и не про файловые системы.


А как ты думаешь, на чем SD построена ?
И что сделано на аппаратном и ОС-программном уровне для решения проблемы иерархичного по-блокового доступа во флешках ?

Для NAND даже специально разработали FS - YAFFS (Yet Another Flash File System) -> YAFFS2.
Неужели делать было нечего ?

Об JFFS2 я уже упоминал.

P.S.
Прежде чем изобретать свои методы работы с железом, стоит взглянуть на то, что уже сделано в этом мире до тебя.

К примеру:
http://www.xakep.ru/magazine/xa/124/084/1.asp


 
Jeer ©   (2012-11-28 22:13) [21]

Да и вообще, рекомендую за вопросами ходить на специализированные форумы.

http://electronix.ru/forum/lofiversion/index.php/t66883.html


 
Дмитрий С ©   (2012-11-29 01:57) [22]


> Jeer ©   (28.11.12 22:07) [20]

Блин. Не нужна мне ФС. Мне карта памяти нужна как просто память - ПЗУ. Но приходится учитывать особенности.

Спасибо за ссылку. (Сарказм) На микроконтроллере 2 кб ОЗУ и всего 8 МГц частота, давайте линукс поставим и YAFFS.


 
Германн ©   (2012-11-29 03:12) [23]


> Дмитрий С ©   (29.11.12 01:57) [22]
>
>
> > Jeer ©   (28.11.12 22:07) [20]
>
> Блин. Не нужна мне ФС. Мне карта памяти нужна как просто
> память - ПЗУ. Но приходится учитывать особенности.
>

Если приходится "учитывать особенности" - значит их нужно учитывать.
И прежде чем заявлять что-то типа "это мне не нужно" стоит детально уяснить конкретный совет.


 
Германн ©   (2012-11-29 03:26) [24]

Например напиши собственный драйвер для такой памяти, который с точки зрения ОС будет являться "просто память -ПЗУ", а по внутренней реализации "учитывать особенности".


 
Германн ©   (2012-11-29 03:40) [25]

Кстати. "По внутренней реализации" - самая проблемная операция - это стирание. Как-то изначально операция "стирания" для ПЗУ предполагала полное стирание всей области памяти. (Если вообще предполагала). Потом вводилось "страничное" стирание, ну и за тем побайтное.
Имхо, собственно операции "стирания" в основном влияют на продолжительность жизни таких микросхем.


 
RWolf ©   (2012-11-29 09:33) [26]


> Не нужна мне ФС. Мне карта памяти нужна как просто память
> - ПЗУ.

ну так и закладывали бы в прибор просто память, а не SD-карту с держателем, раз уж её даже вынимать не планируется.
и дешевле, и доступ быстрее был бы, и ОЗУ для посекторного чтения не пришлось бы резервировать.
какая-нибудь at25df*** вполне закрыла бы потребности (имхо, конечно).


 
Jeer ©   (2012-11-29 10:38) [27]


> На микроконтроллере 2 кб ОЗУ и всего 8 МГц частота


Так железо выбирается под задачу, а не наоборот.

Ничто не мешает выбрать, к примеру, FreeRTOS ( ядро 4..9 kb ) с поддержкой FATFS.

http://www.freertos.org/
http://elm-chan.org/fsw/ff/00index_e.html
http://elm-chan.org/docs/mmc/mmc_e.html


 
Jeer ©   (2012-11-29 10:39) [28]


> какая-нибудь at25df***

+1


 
kilkennycat ©   (2012-11-29 11:12) [29]


> На микроконтроллере 2 кб ОЗУ и всего 8 МГц частота

это очень много.


> RWolf ©   (29.11.12 09:33) [26]

> и дешевле,


кстати, да. стоимость карты и держателя позволяют выбрать пракитически любой контроллер


 
Дмитрий С ©   (2012-11-29 11:47) [30]


> кстати, да. стоимость карты и держателя позволяют выбрать
> пракитически любой контроллер

А когда память выйдет из строя, что делать? Да и к тому же есть разница 2GB и несколько Мегабайт в лучшем случае.


>  Jeer ©   (29.11.12 10:38) [27]
> Так железо выбирается под задачу, а не наоборот.

В моем случае выбран компромисс.


>
> это очень много.

Достаточно, я бы сказал, но зачем ставить зачем отдавать часть этого под ненужную мне файловую систему и тем более ОС?


> кстати, да. стоимость карты и держателя позволяют выбрать
> пракитически любой контроллер

В моем случае необходимо собрать слишком много устройств, чтобы паять их самому и слишком мало, чтобы разрабатывать и паять схему промышленным способом. Плюс к тому же опыта это делать у меня нет, как и времени получать его (хотя в дальнейшем я все же хочу научится это делать). Поэтому была взята готовая плата, где помимо ATMega328 есть все необходимые детали. Стоимость ее устроила заказчика. На этой плате так или иначе уже есть SD разъем.


 
Jeer ©   (2012-11-29 18:15) [31]

Если речь идет об Ардуино, то там есть есть библиотека для работы с SD-картами.
Open-source.


 
Дмитрий С ©   (2012-11-29 18:18) [32]


> Jeer ©   (29.11.12 18:15) [31]

А это тут причем?


 
Jeer ©   (2012-11-29 18:19) [33]

Да я откуда знаю, чем ты пользуешься - гадаю :)


 
Дмитрий С ©   (2012-11-29 18:27) [34]


> Jeer ©   (29.11.12 18:19) [33]

Разве вопрос был в том, как работать с SD картой? С этим вопросов нет. И благодаря раскрученному в поиске слову "Ардуино", скорее всего и не будет.

Вопрос: как организовать структуру данных на ней?


 
brother ©   (2012-11-29 19:13) [35]

> Вопрос: как организовать структуру данных на ней?

типа FileSystem?


 
Jeer ©   (2012-11-29 21:37) [36]


> типа FileSystem?


Вот и я не пойму - чего ТС хочет.
Есть носитель данных, общеизвестный.
Реализованы разные способы доступа к нему от примитивных до файл-системных.
1. Примитивные способы реализованы от "сохи" или "как получилось".
2. FS-способы реализованы, есс-но, на базе той или иной embedded-OS (больших братьев не считаем).

Первые не претендуют на универсальность и "загадочны".
Вторые - универсальны, учитывают текущие знания, общедоступны, многократно проверены.

Вывод: читать/смотреть исходники второго способа и транслировать в свой, самобытный.


 
kilkennycat ©   (2012-11-29 22:00) [37]


> В моем случае необходимо собрать слишком много устройств,
>  чтобы паять их самому и слишком мало, чтобы разрабатывать
> и паять схему промышленным способом.

любопытно количество, если не секрет. у меня, например, середина-наполовину. от 10 штук я делаю полностью сам, это если примерно на плате сотни две-три контактных площадок. от 10 до 1000 штук - платы заказываю, а пайка все равно сам. например, хрень, где будет такая атмега и картридер и еще десяток элементов, спаяю около 50 за рабочий день. это если еще буду чай пить и курить и на параллельном мониторе киношку смотреть.


 
kilkennycat ©   (2012-11-29 22:00) [38]


> В моем случае необходимо собрать слишком много устройств,
>  чтобы паять их самому и слишком мало, чтобы разрабатывать
> и паять схему промышленным способом.

любопытно количество, если не секрет. у меня, например, середина-наполовину. от 10 штук я делаю полностью сам, это если примерно на плате сотни две-три контактных площадок. от 10 до 1000 штук - платы заказываю, а пайка все равно сам. например, хрень, где будет такая атмега и картридер и еще десяток элементов, спаяю около 50 за рабочий день. это если еще буду чай пить и курить и на параллельном мониторе киношку смотреть.


 
kilkennycat ©   (2012-11-29 22:00) [39]

вроде ж делалось антидублирование?


 
Jeer ©   (2012-11-29 22:12) [40]


> еще буду чай пить

Ты себя-то не сравнивай, с новичком в embeded.


 
kilkennycat ©   (2012-11-29 23:17) [41]


> Jeer ©   (29.11.12 22:12) [40]

гм... дык ведь это пайка, а не разработка-программирование и т.д.


 
Дмитрий С ©   (2012-11-30 00:31) [42]


> kilkennycat ©  

80 штук партиями по 10.

Если не секрет, а сколько стоит твой рабочий день?


> Jeer ©   (29.11.12 22:12) [40]

embedded это вообще из другой оперы.
Но вот насчет написания своего самобытного. Я тут как раз и спрашиваю как именно сделать.


 
Дмитрий С ©   (2012-11-30 00:39) [43]


> kilkennycat ©

Вот конкретно.
http://store.iteadstudio.com/index.php?main_page=product_info&products_id=537
Убираем оттуда светодиоды, разем xbee, аудиоразъемы, кварц.  Вместо шпилек - просто контакты для пайки, разъем питания - тоже просто провода. Разъем антенны оставляем только внешний. Если возможно, схему питания меняем так, чтобы работала в диапазоне от 3 до 15 В.

Сколько будет стоить 10 таких устройств твоего изготовления?


 
Дмитрий С ©   (2012-11-30 00:42) [44]


> Разъем антенны оставляем только внешний

Внешний - это тот, что маленький такой.
+ добавить ионистор для того чтобы встроенный RTC работал у sim900.


 
kilkennycat ©   (2012-11-30 02:01) [45]


> Дмитрий С ©   (30.11.12 00:31) [42]
>
> Если не секрет, а сколько стоит твой рабочий день?

не секрет, но данные расплывчаты, то густо, то пусто, ибо сдельная работа. в среднем получается 1 - 1,5 тысячи в день, 20-25 тысяч в месяц.


> Сколько будет стоить 10 таких устройств твоего изготовления?

если полностью самостоятельно, то где-то 1200-1500 рублей за 1 штуку (не помню, скока сим900 стоит, кстати, на нем бы не делал) срок - 2 недели. Это если 10. а если 100, то платы закажу, трудоемкость сразу упадет, на детальки пойдет оптовая цена и тогда бы стоило около 500-800 рублей, с теми же 2-мя неделями сроком. в срок входит только сборка, программирование песня отдельная, у меня иногда на простейшую фигню уходит пару дней и месяц отладки :)


 
kilkennycat ©   (2012-11-30 02:04) [46]

да, сразу добавлю, если возникнет желание вдруг заказать их мне :) - занят своим проектом электронных конструкторов, времени нет.


 
kilkennycat ©   (2012-11-30 02:06) [47]


>
> 80 штук партиями по 10.

это почти мильен рублев - при такой сумме, если ее выделят сразу хотя бы четверть, ты можешь позволить себе полный цикл производства. в "Резоните", например.


 
Дмитрий С ©   (2012-11-30 10:10) [48]


> kilkennycat ©   (30.11.12 02:01) [45]

Вот это уже аргумент!

Кстати, а чем сим900 не нравится?

И что за конструкторы? - это для обучения?


 
kilkennycat ©   (2012-11-30 11:24) [49]


> а чем сим900 не нравится?

да вот жаловались на него сильно, по глюкам.
SL6087 - вот забавная вещица, http://www.sierrawireless.com/en/productsandservices/AirPrime/Wireless_Modules/Smart/LGA/SL6087.aspx


 
Дмитрий С ©   (2012-11-30 11:59) [50]


> kilkennycat ©   (30.11.12 11:24) [49]

Хм. Любопытно.
А вот у него (да и у сим900) пишут что-то вроде "LGA-формат. USB, 2xUART, GPIO, ADC, SPI". Это получается его самого можно помимо gprs использовать как микроконтроллер?


 
kilkennycat ©   (2012-11-30 12:05) [51]

да их практически все так можно - у всех микроконтроллер. вопрос в документированности и ПО.


 
Jeer ©   (2012-11-30 12:52) [52]


> embedded это вообще из другой оперы.

 Это с какого бодуна ?

"An embedded system is a computer system designed for specific control functions within a larger system, often with real-time computing constraints."


 
miek   (2012-12-03 14:30) [53]

Не парьте человеку мозги, ему нужно простое решение. Ионисторы приплели - хоть сейчас на башорг.
Я в похожем проекте сделал кольцевой буфер из записей фиксированной длины, в каждую запись писалась метка времени. При старте считываем их все, определяем последнюю и начинаем писать за ней.
Размер буфера у меня был во всю карту, но в такой задаче это будет очень медленно. Достаточно 10-20 позиций при перезаписи раз в минуту.


 
Jeer ©   (2012-12-03 15:54) [54]


> ему нужно простое решение


Всем нужно простое решение, даже для сложных задач.


 
brother ©   (2012-12-03 15:56) [55]

обычно просят кАмпАнент...


 
Дмитрий С ©   (2012-12-04 11:22) [56]


> miek   (03.12.12 14:30) [53]

В точку. Идея хорошая, тоже думал над ней.
Хоть одно сообщение в тему.


> kilkennycat ©   (30.11.12 12:05) [51]

Раз уж ты в эту тему заходишь. Просто интересно. Ты пробовал перепрошивать какую нибудь "нокию" под свои нужны?
Просто там тебе и экран и аккумулятор и МК и связь и БП и все это стоит 800 рублей.


 
KilkennyCat ©   (2012-12-04 12:19) [57]


> Дмитрий С ©   (04.12.12 11:22) [56]

нет. я понятия не имею, чем, как и на чем. Наверняка все это удовольствие очень дорогое и потребует обучения. Кроме того, качество и надежность сомнительны, доступа к портам нет (если они вообще есть).


 
uw ©   (2012-12-04 12:26) [58]

>Предположим что взятая SD не имеет такой функции.

Не надо этого предполагать. Выбрось такую SD и купи в магазине первую попавшуюся - это и будет то, что тебе нужно.


 
uw ©   (2012-12-04 12:47) [59]

А против кольцевого буфера я ничего не имею, потому что он по-любому выгоден в смысле ресурса.


 
uw ©   (2012-12-04 12:49) [60]

А может быть, и наоборот :)


 
Дмитрий С ©   (2012-12-04 12:53) [61]


> uw ©   (04.12.12 12:26) [58]

В смысле ты считаешь, что любая карта купленная в магазине сама поддерживает балансировку записи? Даже если я буду писать только в один блок карты - запись будет распределяться?


 
uw ©   (2012-12-04 13:00) [62]

Да, будет. Кольцевой буфер может только навредить, потому что, кроме информации, нужно будет перезаписывать и маркер.

Я, вообще-то, пользовался SD на контроллерах только под управлением uCLinux. Драйвера там написаны под современные карты, и они о сабжевой проблеме не заботятся.


 
icWasya ©   (2012-12-04 13:04) [63]

http://blogs.computerra.ru/46583


 
Inovet ©   (2012-12-04 13:13) [64]

А exFAT почему не упоминали?


 
Дмитрий С ©   (2012-12-05 15:39) [65]


> А exFAT почему не упоминали?

Не подходит по ряду причин.


 
brother ©   (2012-12-05 16:18) [66]

упоминали в [15]



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.005 c
15-1354306589
Dennis I. Komarov
2012-12-01 00:16
2013.03.31
Зима пришла!


15-1354803185
Sinister
2012-12-06 18:13
2013.03.31
Symantec (Versisign) Code Signing Certificate


2-1348681328
Писатель
2012-09-26 21:42
2013.03.31
Как нарисовать квадрат в Image (на увеличеной картинке)


15-1354548691
Дмитрий С
2012-12-03 19:31
2013.03.31
packet/не packet


2-1348818757
ixen
2012-09-28 11:52
2013.03.31
Firebird и текстовое вычисляемое поле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский