Jump to content

    
Ruslan1

надежная файловая система для SD (чтоб не появлялись bad blocks или чтоб была малочуствительна к ним)

Recommended Posts

18 minutes ago, jcxz said:

Просто везёт. Запустите миллион ваших устройств, работающих 24/7 и непрерывно пишущих на диск.... и проблемы посыпятся потоком.

Ну, хорошая случайность должна быть тщательно подготовлена.

Я специально боролся за уменьшение времени нахождения карточки в состоянии записи: открываю файлы для записи только на короткое время, и использую быстрые карточки. Ну и с интерфейсом поработал для оптимизации.  Еще есть резервная батарея дла  шутдауна, и некорректное выключение запрещено инструкцией. То есть уже застраховался от резких выключений как мог, и ради этого точно не буду менять файловую систему. 

Но это, конечно, всегда вопрос статистики.

 

18 minutes ago, jcxz said:

Если нет уверенности, что выравнивание износа работает в карте, то почти единственный путь (если всё-же такие карты использовать) - реализовать собственный слой выравнивания износа на уровне low-level IO.

Тут уже стратегия: если писать софт-то и деньги и слава крутого программера мне, а если покупать супер-карточку-то все бонусы (и слава и деньги) уходят в зрительный зал  к производителю карточек. Тоже немаловажный аргумент в принятии решения :) Но, думаю, лень победит.

Share this post


Link to post
Share on other sites
4 часа назад, jcxz сказал:

Одинаково - разрушается содержимое.

Совсем даже нет. Почитайте статью во вложении: Memory forensic data recovery utilising RAM cooling methods.pdf

Да, время сохранения данных в памяти зависи от температуры, но тем не менее даже при комнатной температуре содержимое не пропадает мгновенно и в некоторых случаях это нужно учитывать. Например, если программа полагается на флаги в ОЗУ, сбрасываемые при пропадании питания. Если они будут размещены в динамической памяти, то есть далеко ненулевая вероятность, что при кратковременном пропадании питания они сохранятся и это может сломать логику восстановления.

3 часа назад, Ruslan1 сказал:

Тут уже стратегия: если писать софт-то и деньги и слава крутого программера мне, а если покупать супер-карточку-то все бонусы (и слава и деньги) уходят в зрительный зал  к производителю карточек. Тоже немаловажный аргумент в принятии решения :) Но, думаю, лень победит.

Лень не единственный фактор для принятия решения. Если исходить из концепции черного ящика по отношению к логике работы алгоритма выравнивания износа в карте, то в общем случае невозможно разработать надежный алгоритм выравнивания поверх ненадежного неизвестного. Поэтому выход только один: нести деньги производителю правильных карточек. :beach:

Share this post


Link to post
Share on other sites
1 hour ago, makc said:

что при кратковременном пропадании питания они сохранятся и это может сломать логику восстановления.

Добавить супервизор по питанию, который гарантированно сбросит процессор. А тот выполнить startup и инициализирует ячейки памяти согласно стандарту языка Си. Нет?)

Share this post


Link to post
Share on other sites
5 часов назад, Ruslan1 сказал:

Но, думаю, лень победит.

Ну вообщем решать-то вам, единственное, смотрю 3 страницы обсуждения что лучше безопасное отключение или доработка ФС журналами вплоть до портирования ext4... Про себя скажу, когда-то давно, при разработке 1го устройства а сд карте при бесконтрольных отключениях клиентами во время записи, постоянно возникали проблемы с картой и фс, что я сделал - просто добавил небольшой аккумулятор и схему подзарядки, проблем не стало от слова вообще. Никаких журналов я не делал, обычная fatfs, и хорошие сд карты, вот и думайте...

Share this post


Link to post
Share on other sites
52 минуты назад, haker_fox сказал:

Добавить супервизор по питанию, который гарантированно сбросит процессор. А тот выполнить startup и инициализирует ячейки памяти согласно стандарту языка Си. Нет?)

Вариант. Есть и другие варианты. Но речь шла лишь о том, что разное ОЗУ ведёт себя по-разному в условиях пропадания питания и это может негативно сказаться на работе ФС/ПО и т.п.

Share this post


Link to post
Share on other sites
4 часа назад, makc сказал:

Вариант. Есть и другие варианты. Но речь шла лишь о том, что разное ОЗУ ведёт себя по-разному в условиях пропадания питания и это может негативно сказаться на работе ФС/ПО и т.п.

Да никак это не скажется: по вектору сброса процессор перейдёт на начало прошивки, выполнит стартап-код, который инициализирует ОЗУ необходимыми значениями.

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

Share this post


Link to post
Share on other sites

погуглил немного, понял что SLC или pSLC хочу.

про pSLC раньше как-то и не знал, вполне достойная замена для TLC (в 10-20 раз больше ресурс ячейки).

В разных местах эту pLC по разному называют: enhanced MLC(eMLC), superMLC, iSLC, advanced MLC (aMLC)

Даже на дижикее цены уже начинаются от 8 долларов за 4GB. Я, как бы культурно сказать, удивлен. Думал сильно дороже: до 20-30 баксов за штуку вполне устраивает но оказвается можно сильно бюджетней найти.

Вот подсказку себе сохранил:

image.thumb.png.d7aaa7e5bc7b603e50200d1962df5ffb.png

 

И еще в интернете есть мнение (маркетологи, блин) The multi-level cell ( MLC ) is a memory element capable of more than a single bit of information

Так что назовут память TLC (или QLC) в описании как MLC и не поморщатся.

Share this post


Link to post
Share on other sites
2 часа назад, Ruslan1 сказал:

погуглил немного, понял что SLC или pSLC хочу.

SLC, конечно, идеальный вариант, но только когда это предназначено ну для очень ценной информации, имхо... А то, если энергообеспечение позволяет, так может дешевле оказаться писать резервную копию на вторую карточку MLC. А вот с pSLC совсем непонятно: за счёт чего она дешевле, если тоже только один бит в ячейке хранит? Вам удалось выяснить?

Share this post


Link to post
Share on other sites
6 minutes ago, Herz said:

SLC, конечно, идеальный вариант, но только когда это предназначено ну для очень ценной информации, имхо... А то, если энергообеспечение позволяет, так может дешевле оказаться писать резервную копию на вторую карточку MLC. А вот с pSLC совсем непонятно: за счёт чего она дешевле, если тоже только один бит в ячейке хранит? Вам удалось выяснить?

Вижу что именно pSLC можно купить, причем очень бюджетно, а SLC дорогое и редкое.  В теории, им достаточно просто взять MLC/TLC и писать не каждую ячейку, а сразу группу, составлющую этот cell. Скорее, на уровне матрицы адресации  ячеек это сделано. Нет, в физику не вдавался.

Share this post


Link to post
Share on other sites
24 minutes ago, Herz said:

А вот с pSLC совсем непонятно: за счёт чего она дешевле, если тоже только один бит в ячейке хранит? Вам удалось выяснить?

Ну вот у меня лежит флешка от ISSI типа IS21ES08G, она из коробки размером 8Гб в режиме MLC,

затем некой неизвестной мне командой её можно перевести в режим pSLC вроде как размера 4Гб,

причём почему-то говорят что только один раз.

 

Думаю pSLC дешевле т.к. MLC более массовый сейчас чем SLC.

 

Вот только когда брал я этот ISSI из-за pSLC не ожидал что он при подаче питания, вплоть до окончания инициализации,

а это более 1000мС, жрёт на 150мВт больше чем SanDisk - угробит аккумулятор....

 

Ну и как pSLC получить из MLC - пока загадка.

Share this post


Link to post
Share on other sites

нашел в интернете супербюджетные Кингстон pSLC, 8 гиг за примерно 15 баксов в розницу (не алиэкспресс). Если это так, то бОльшая часть вопроса решена. Мне их 30k записей хватит (сейчас у меня в лучшем случае MLC и 5k, но не уверен: официально неизвестно, Сандиск это такой сандиск...).

Чесный SLC тоже можно найти 1 Гиг за 25 баксов, тоже не так чтобы разорение, но мне и pSLC хватит. 

И да, правильно тут пишут- индастриал нужно смотреть, эта надпись важна.

 

Натыкался еще в интернете на карты от Кактус - они очень странные цифры дают: 2 миллиона на  SLC и 100k на pSLC.  Соотношение  ожидаемое, но сами величины непонятные. Но фирма не однодневка, думаю просто методы подсчета у них свои.

Share this post


Link to post
Share on other sites

А существует ли для SD, хотя бы промышленных, система самоконтроля типа SMART как для харддисков и SSD накопителей? Чтобы можно было статистику использования флеша  и прогнозируемое время работы  контролировать.

Share this post


Link to post
Share on other sites
8 minutes ago, khach said:

А существует ли для SD, хотя бы промышленных, система самоконтроля типа SMART как для харддисков и SSD накопителей? Чтобы можно было статистику использования флеша  и прогнозируемое время работы  контролировать.

Да, есть карты с такой опцией, но не все. Вот тут неплохой обзор для начала:

https://www.hdsentinel.com/how_to_monitor_sd_card_health_status.php

 

Share this post


Link to post
Share on other sites
1 hour ago, Ruslan1 said:

Да, есть карты с такой опцией, но не все. Вот тут неплохой обзор для начала:

Большое спасибо, теперь бы найти спецификации протокола а лучше реализацию его на гитхабе, да еще чтобы с FatFS не конфликтовало.

Share this post


Link to post
Share on other sites
59 minutes ago, khach said:

Большое спасибо, теперь бы найти спецификации протокола а лучше реализацию его на гитхабе, да еще чтобы с FatFS не конфликтовало.

Я не думаю что там что-то суперхитрое. Например, в первой попавшейся документации от Свиссбит на их серию 46u написано, что это есть в SSR регистре (картинка ниже).

image.thumb.png.9be36bef0dc9a7f81ea67048bda40b79.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.