Несколько слов об общей безопасности эмбеда. Разрабатывая девайсы для дома, электронщики часто пренебрегают множеством вещей, которые кажутся им лишними и «слишком специализированными». К сожалению, к ним относится и чтение errata — в том числе и потому что у некоторых производителей файлы ерраты не стандартизированы и неудобны для изучения. Хотя к чести других производителей, например ST, стоит признать что еррату они выделяют ярче и размещают выше, чем даташит — и даже снабжают призывной надписью.

Незамеченные ограничения

Но страшно даже не это. Страшно непонимание процессов, происходящих в коде и электронике, и игнорирование ограничений (кстати, описанных в даташитах). Чего стоит только то, что EEPROM нынче пихают везде, куда ни попадя — забывая про естественный лимит на количество записей, обусловленный физикой процесса записи в такую память. В итоге получаем мониторы и магнитолы, в которых значение яркости (или громкости) пишется в EEPROM при каждом изменении яркости — в том числе, прямо в процессе регулирования её в меню. Натурально, изменили яркость с 100 до 0 и обратно до 100 — двести раз обновили значение в одной ячейке памяти. С годами ресурс ячейки (смешные 10 тысяч записей) вырабатывается, и монитор начинает показывать всегда на 50% яркости. Вот ещё один пример.

«EEPROM дешёвые — почему бы их не использовать?» — я думаю, это лежит в нашем менталитете. Даже если хочется сделать дешевле — тогда нужно предусмотреть механизмы равномерного износа ячеек.

Я бы сделал так: делим всю память на маленькие "страницы". В нулевом байте EEPROM лежит смещение текущей страницы памяти, сначала это 0. По мере износа (допустим, после примерно двух-трёх-десяти тысяч записей) инкрементируем смещение страницы и начинаем использовать следующую страницу. Так будет достигнут более-менее равномерный износ - правда, непонятно где хранить износ текущей страницы. Возможно, его можно хранить в первом байте самой страницы, или проще - инкрементировать по времени, допустим раз в месяц-полгода.

Запредельные режимы работы

Туда же излюбленное использование компонентов в запредельных режимах. Ни один фирменный (т.е. не китайский) полевой транзистор не сгорит, если его использовать в документированном режиме. Если же он сгорел — это полностью ваша вина. Может быть, превышен не ток или напряжение, а временнЫе характеристики, вроде скорости нарастания этих параметров. Или не учли ёмкость Миллера, или индуктивность выводов. Забывают даже про внутренний диод. И ведь самое главное — это всё есть в даташитах или аппноутах (да, иногда действительно полезные вещи прячут в аппноуты), нужно только им следовать и проверять свои произведения искусства на полное соответствие им.

Ну и наконец, питание

Хорошее питание — притча во языцех. Не экономьте на качественных конденсаторах — электролитах, танталах (только не забывайте об областях их применимости), керамике, и даже плёнке.

  • Танталы очень легко пробить немного повышенным напряжением — они не так стойки, как электролиты. К тому же, при пробивании они взрываются с искрами и горячими каплями.
  • Электролиты содержат жидкость, поэтому склонны к замерзанию и высыханию. При пробивании высоким напряжением с них просто срывает корпус, иногда с вылетанием ленточных обкладок.
  • SMD-керамические конденсаторы часто делают на дешёвой сегнетокерамике. Она хороша высокой диэлектрической константой, но мало кто знает что ёмкость такого конденсатора очень сильно зависит от напряжения. Этого недостатка лишены другие диэлектрики, но такие конденсаторы и стоят дороже.
  • Плёнку можно пробить, но она обладает свойством самолечения — с пробитого участка испаряется металл обкладок, цепь разрывается и конденсатор снова продолжает работать с крайне незначительным уменьшением ёмкости. Правда, тонкое напыление обкладок сильно ограничивает предельный ток.

Разделяйте силовую, аналоговую и цифровую землю, следите за путями тока в них и между ними. Цифровую землю в некоторых случаях тоже стоит разделить на чистую и грязную.

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

Безопасность во встраиваемых системах / программа