Jump to content

    
Sign in to follow this  
haker_fox

Отказоустойчивая ФС, направьте, пожалуйста, в нужном направлении

Recommended Posts

jcxz, в очередной раз от всего сердца благодарю вас за такой развёрнутый ответ! Вот бы поработать с вами в одной команде, мог бы многому научиться)))) Но... до Омска мне далековато)))) В общем мне всё стало понятно!!!!

2 hours ago, iliusmaster said:

На плату ставится система монитора питания, дополнительный ионистор с обвесом и супервизором

Этот вариант мы рассматривали тоже. Но, вариант от уважаемого jcxz мне нравится больше, т.к. он устойчив ко многим типам сбоев, и не требует усложнения системы электропитания прибора, дополнительного ПО для безопасного останова проца. А в этом ПО тоже могут быть ошибки, соответственно, ещё не известно, сохранятся данные или нет...

Share this post


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

Есть память FRAM, в ней ничего не пропадет... Возможно в ней сохранять "последнюю" страницу, которую потом можно переносить во флэшь. Но только флэшь это не 100 тыс циклов, а раз в 10 меньше... Просто они пишут 10 тыс*10 блоков... И получают цифру 100 тыс...

Так что во фрам можно сохранить не только логи, но и текущее состояние. Чтобы потом, после горячего сброса стартовать не с "исходного", а с "текущего"... 

Те пропадания, о которых беспокоится ТС, они не зависят от типа памяти. И для FRAM они тоже справедливы. Только вероятность их многократно меньше, потому что скорость записи во FRAM многократно выше. Потому что питание FRAM тоже может внезапно вырубиться. Или вырубится питание CPU во время отправки данных на запись во FRAM.

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

Мы в своих устройствах использовали и FLASH и FRAM. Часть журналов размещали во FLASH, часть - во FRAM. Те журналы, события в которые писались чаще и непредсказуемо - во FRAM, остальные - FLASH. И там и там - в виде кольца.

 

PS: Да - и с помощью FRAM можно обычную FatFS (на флеши) превратить в устойчивую к сбоям ФС  :smile:

18 минут назад, haker_fox сказал:

jcxz, в очередной раз от всего сердца благодарю вас за такой развёрнутый ответ! Вот бы поработать с вами в одной команде, мог бы многому научиться)))) Но... до Омска мне далековато)))) В общем мне всё стало понятно!!!!

:ok:

Share this post


Link to post
Share on other sites
4 hours ago, haker_fox said:

Спасибо, изучу её. На всякий случай вопросы: она поддерживает несколько разделов? Совместима с FAT (полностью)? Есть ли какие ограничения, прямо не указанные на сайте?

Да разделы поддерживает.

С FAT несовместима, внутренняя организация совершенно другая.

Совсем глубоко не ковырял, но завилась очень легко и работает стабильно. У самой системы есть возможность писать внутренние логи в режиме отладки. Саму файловую систему использовал в связке с SPI флешкой с сектором 4кБ. Начал прикручивать к параллельной NAND, но пока нет времени доделать. Судя по форуму LittleFS, на параллельную NAND тоже встает без проблем.

В целом очень положительное впечатление, до этого работал с FatFS от Chan.

Share this post


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

Ну да - ещё и печку-холодильник в комплект  :shok:

Мой вариант обходится без всего этого, т.е. - значительно дешевле по комплектации. Да и надёжнее. Потому что функционирования по классу А ещё добиться нужно. А это сложно и это тоже деньги.

А ещё нужно умудриться написать прошивку абсолютно без багов. Чтобы не нужен был WDT (чтобы не было перезагрузок по нему). Кто тут умеет писать гарантированно безбажные прошивки? Есть такие?  :biggrin:

1. Ваш вариант - значительно дороже по комплектации. Посмотрите стоимость компонентов индустриального диапазона температур, который вы указали как критерий вашей системы и сравните со стоимостью обычного бытового комплекта. Система нагрева-охлаждения решается вентилятором на радиаторе и 4 резисторами подогрева на том же радиаторе. Стоимость системы нагрева- охлаждения корпуса удорожает систему на 20-30 долларов. 

2.OffTop.

Прошивки встраиваемых систем грешно писать с багами. Весь код вам доступен, в хороших системах он написан на Си и ассемблере, документрован и  все оправдания про невозможность нормального написания - стоны в пользу слабых. Гарантированно "безбажно" можно научить писать всех, вопрос в другом, что редко кто  хочет учиться.  Тяп - ляп и в "продакшен", а сами - хабр окучивать. Такой девиз современных разработчиков. Знакомый занимается только тем, что вычитывает код "индусских" программеров на соответствие требований безбажности написания кода. Иначе не доследит и системы управления огнем американских вооружений бывают отказывают. 

 

46 минут назад, jcxz сказал:

Потому что питание FRAM тоже может внезапно вырубиться. Или вырубится питание CPU во время отправки данных на запись во FRAM.

Вы же проектируете систему. ничего внезапно происходить не должно. Как может выключиться внезапно питание во время записи? Плату взорвете? 

 

 

Share this post


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

1. Ваш вариант - значительно дороже по комплектации. Посмотрите стоимость компонентов индустриального диапазона температур, который вы указали как критерий вашей системы и сравните со стоимостью обычного бытового комплекта.

А каких компонентов, имеющиеся в моём варианте, нет в вашем? Вы обходитесь вообще без флешь? Или лёгким мановением руки превращаете commercial компонент в industrial?  :biggrin:

Мой набор = МК+flash+0; Ваш = МК+flash+ионистор+супервизор+...  Хотите сказать, что "ионистор+супервизор+..." будет дешевле нуля? Т.е. - вам ещё и доплачивает поставщик компонентов за них?  :biggrin:

 

Цитата

Гарантированно "безбажно" можно научить писать всех, вопрос в другом, что редко кто  хочет учиться.

ну-ну... Языком чесать - не мешки ворочать.   :padonak:

 

21 минуту назад, iliusmaster сказал:

Вы же проектируете систему. ничего внезапно происходить не должно. Как может выключиться внезапно питание во время записи? Плату взорвете?

Опять 25... см. выше, безбажный Вы наш сказочник.  :angel:

Share this post


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

"А каких компонентов, имеющиеся в моём варианте, нет в вашем? Вы обходитесь вообще без флешь? Или лёгким мановением руки превращаете commercial компонент в industrial?  :biggrin:

Мой набор = МК+flash+0; Ваш = МК+flash+ионистор+супервизор+...  Хотите сказать, что "ионистор+супервизор+..." будет дешевле нуля? Т.е. - вам ещё и доплачивает поставщик компонентов за них?  :biggrin:"

1. Это относилось к термостатированию, я специально акцентировал на этом внимание. Термостатирование позволяет во многих случаях использовать коммерческое, а не индустривальное исполнение.

2. Да, вы не поверите, но прошивки промышленных контроллеров не имеют багов. Они отрабатывают программы, которые в них заложены и не глючат! И написаны эти программы обычными программистами, просто менее ленивыми относительно своих собратьев.

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

 

Share this post


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

Да, вы не поверите, но прошивки промышленных контроллеров не имеют багов.

Не поверю. Я - атеист, в сверхъестественное не верю. Не бывает программ без багов, бывают программы с пока не проявляющимися багами.   :wink:

 

Share this post


Link to post
Share on other sites

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

Share this post


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

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

Тут всё нормально, ибо мой вопрос был относительно системы, которая работает в условиях подстанции. И здесь экономить на компонентах - самому себе пилить сук)

1 hour ago, iliusmaster said:

Прошивки встраиваемых систем грешно писать с багами.

Вы меня простите за прямоту, но так будет понятнее. Итак, говорить, что код писать грешно может человек с небольшим опытом разработки. Без обид. Который не занимался написанием кода для реальных приборов, которые должны выполнять широкий спектр функций: измерять что-то с датчиков, иметь USB Host/Device, MMC/SD, Ethernet (на нём modbus, web, ftp, ssh, telnet и мн. другое), возможно GUI, вести логи, расчёты. Иметь повторяемость при сборке на производстве. И т.д. и т.п. Предвидя справедливый такой же прямой ответ я поясню свою позицию. Современные компоненты довольно сложны. Возьмите теже АЦП ADS1247, ADS131E08. Описания только на на "банальные" АЦП превышает 100 стр. За всеми нюансами порою уследить невозможно. Когда вы начинаете реализовывать функции, о которых я сказал выше, вы начнёт задействовать такие модули микроконтроллера, как DMA, MAC, MMCSD, различные матрицы и коммутаторы внутренних событий, блоки делителей и умножителей. Некоторая периферия относительно подробно описана в документации, и тем не менее имеет особенности, которые вылазят не сразу, а спустя недели эксплуатации. И это не баг в коде напрямую, а недокументированная особенность периферии. И сразу вы её не отловите, а приборы уже стоят на объектах. Потом - сложность и нетривиальность некоторых измерительных алгоритмов. Вы их отладили в лаборатории, на паре объектов. А на одном из них - раз и вылезла мелкая особенность. И - поездка на объект, сбор данных, разбор в чём дело - правка софта. Мой любимый пример: Airbus A321 летает более 20 лет, а ПО авионики обновляется до сих пор. И это не карты навигации. А уровень тестирования такого ПО - это не уровень пилорамы.

Может быть я в вашем случае ошибаюсь, и вы пишете ПО без ошибок. Я могу в это поверить. Но, скорее всего, вы почти единственный такой, либо выпускаете относительно несложные приборы. Если я не прав, добавьте свой ответ)

1 hour ago, iliusmaster said:

Тяп - ляп и в "продакшен", а сами - хабр окучивать.

Такое случается, но не в этом дело.

1 hour ago, iliusmaster said:

управления огнем американских вооружений бывают отказывают

Обычно ПО такого уровня должно писаться независимыми командами, а блоки управления - троироваться. Либо ПО нужно прогонять через анализаторы кода, и... тестировать, тестировать и тестировать. Другими словами отказ таких систем не должен быть результатом ошибки одного человека, и даже не только одного.

1 hour ago, iliusmaster said:

Да, вы не поверите, но прошивки промышленных контроллеров не имеют багов

Не верю))) Глючат. Сам наблюдал. Siemens S7-300. Но дело не в этом. Надёжность системы управления обеспечивается не только вылизанным кодом, но и резервированием. См. fault-tolerant системы. Здесь и ветка есть интересная. Мы правда там авионику обсуждали)

Share this post


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

Программистов же терпят, программирование, это же так сложно....

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

16 minutes ago, iliusmaster said:

процессоре реализуется через сложение, перенос, инверсию - вполне себе однозначные операции булевой алгебры

Вы как-то забываете, что только компьютер довольно отлично отлаженная железка в силу его распространённости (на каждгом столе стоит). А железо прибора, которое каждый раз уникальное - может содержать новые, ранее неприменяемые, компоненты, недокументированные errata, особенности микросхем и т.п.

В общем, вы, либо троллите, либо действительно ещё не очень опытный разрботчик. Приведите, пожалуйста, примеры своих разработок.

Share this post


Link to post
Share on other sites
21 minutes ago, iliusmaster said:

Если вы не умеете правильно расставить эти базовые основные команды - это ваши проблемы как программиста.

И всё-таки, вы, полагаю, именно такие программы и пишите? Или это потаённое желание души?

Share this post


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

Не поверю. Я - атеист, в сверхъестественное не верю. Не бывает программ без багов, бывают программы с пока не проявляющимися багами.   :wink:

Я немного добавлю...

Ну ясное дело, что монета, когда падает всегда встает на ребро. И об этом знают все начальники, потому что не любят прорабатывать задание на разработку. Просто: "жарьте ребята, масло подвезут"...

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

А вот у нас был вполне реальный случай. Соседний отдел делал систему управления заправкой для "боковушек". Ну это у ракеты - главный бак и "боковушки". Система управления мониторила уровень топлива, управляла заправкой. Естественно, что в программе был реализован алгоритм управления, а по-нашему автомат состояний или FSM... И вот в момент работ по тестированию системы залили топливо в "боковушки", а потом технологи решили пойти другим путем и резко сбросить давление. Что получается с шампанским, когда вытаскивают пробку? Оно вскипает! Так вот в боковушке случилось то-же самое. Пена перемкнула все датчики уровня, резко поменялись физические характеристики топлива в баке. А автомат этого не понял и его заклинило.... Перепуганные технологи вручную открывали клапаны  и кое-как выбрались из этой ситуации. А ведь могло и поплохеть сильно... Потому как монета не захотела упасть...   

Share this post


Link to post
Share on other sites
7 minutes ago, iosifk said:

и кое-как выбрались из этой ситуации

Угу. Это только у теоретиков, всё гладко. У них программы без багов. А то, что баг, по-сути может содержаться в алгоритме, хотя бы по причине не полностью ислледованного и смоделированного (и то и другое иногда сделать невозможно) физического объекта им невдомёк.

Share this post


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

Надо отправить вас к истокам программирования

...

Электронщики же не жалуются, что вот де эта дорожка должна была идти туда, а тут невероятным способом скакнула сюда. 

А Вас надо отправить почитать ерраты на разные МК. Чтобы узнать как "не ошибаются" электронщики.  :umnik2:

Share this post


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

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

Русский язык содержит всего 33 буквы - вполне себе однозначные буквы, но даже Вы, как видно из квоты ниже, "не умеете правильно расставить" их:

2 часа назад, iliusmaster сказал:

1. Это относилось к термостатированию, я специально акцентировал на этом внимание. Термостатирование позволяет во многих случаях использовать коммерческое, а не индустривальное исполнение.

:wink:

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.

Sign in to follow this