Найти тему

Почему слетают прошивки?

Я, как и многие кто с этим сталкивается, задаюсь подобным вопросом. А так как сталкиваюсь я с этим уже много лет, то решил как-то систематизировать накопленный опыт и оформить в виде околонаучной (философической :)) статьи. Заодно можно подискутировать на эту тему и возможно общими усилиями найти ещё какие-то причины и закономерности.

Принцип хранения информации в основных микросхемах энергонезависимой памяти.

Для начала приведём к общему знаменателю основные типы носителей информации (прошивок) в электронной технике EEPROM, SPI-FLASH, NAND, NOR, EMMC. Несмотря на сильные различия в объемах, интерфейсах записи-считывания, скорости работы и пр. у всех этих технологий есть общее ключевое свойство - это способ хранения информации. Главным хранителем одного бита информации в этих микросхемах является полевой транзистор с плавающим затвором. Если простыми словами, это такой полевик у которого, между затвором и каналом установили ещё один затвор, но ни к чему его не подсоединили. Но всё таки с помощью определенных манипуляций (эффект квантового туннелирования) при записи туда можно "затолкать" заряд в виде электронов, или наоборот высосать имеющийся.

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

ВЫВОД. Если простыми словами, прошивка хранится в ячейках памяти в виде зарядов конденсаторов - ёмкостей плавающих затворов.

Первая причина слёта прошивки. Очевидная.

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

-2

Причина вторая. Человеческая.

Точнее программерская, но так как программист это человек (пока), а не машина, поэтому назову её так чтоб конкретизировать.

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

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

А ещё программист может сознательно запрограммировать в устройство какой нибудь баг, чтоб таким образом например, подстраховать себя от кидалова на деньги. В случае не выплаты ему вознаграждения за работу, когда возникнет баг, к нему придется обратиться. Такие ситуации, конечно вряд ли могут быть в больших проектах, где работают коллективами, но вот с какой нибудь коробочкой типа DVB-T2 приставки, где прошивку запросто напишет студент-практикант, вполне имеет место быть.

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

Причина третья. Технологическая.

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

Транзистор под микроскопом.
Транзистор под микроскопом.

Перечитав кучу материала на эту тему, я нигде не нашел внятного объяснения причины износа. Все в голос утверждают, что количество циклов перезаписи влияет на износ. Там что, фиксики бегают, ячейки перезаписывают? Правда я и не нашел ни одного материала на эту тему от технического специалиста, пишут в основном маркетологи про сроки службы и надежность различных микросхем-носителей информации. И вот что заметил, срок службы резко сокращается с увеличением объема памяти микросхемы (при прочих равных условиях). Выскажу свою точку зрения по "износу" микросхемы памяти. Для этого вспомним опыт из школьного учебника физики про диффузию в твердых телах.

-4

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

Просто плавающий затвор "уплывает" со временем, диффундирует, в силу своих размеров.

Причина четвертая. Неочевидная (квантовая).

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

А вот десяток и более лет назад, когда смарты были ещё не так распространены, а на обычных телевизорах прошивки были довольно надежными и программатором приходилось пользоваться раз в месяц, а то и реже, вот тогда то и возникали внезапные "всплески" слётов прошивок. Бывало в течении недели обращалось сразу несколько человек, причём с разными телевизорами и живущими в разных местах и даже населенных пунктах. То есть связать это со сбоями электроснабжения нельзя.

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

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

-5

И ещё туда же можно отнести воздействие радиации, даже не обязательно большое. Вспомнился случай, установили на атомном ледоколе пожарную сигнализацию с адресными датчиками на микроконтроллерах. Так вот этих датчиков там было несколько сотен и постоянно процентов 5 из них приходилось менять и прошивать МК заново. Точно такие же датчики безотказно работали на других объектах.

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

Всем пока. Хорошего настроения и До новых встреч на моем канале!

РЕКЛАМА

Какие бы причины не были , но думаю, что эта "швейная машинка" не думая устранит любую из них. RT809H