И ведь действительно, 24CXX память, которая используется повсеместно не предполагает сама по себе никакой защиты. Достаточно один раз одному битику в адресе неправильно передаться (это совсем не сложно, учитывая мое скептическое отношение к I2C) и кусок данных в памяти будет поврежден.
Из этого примера, можно сделать ряд выводов для разработчиков:
1)В идеале использовать протоколы с защитой от неправильной передачи данных - начиная от проверки четности, кончая хэшами. Это сразу решит почти все проблемы потенциальных ошибок при передаче данных, но это сложное решение.
2)Если уж используется всякая простая и дешевая память типа 24СХХ, то нужно в прошивке предусматривать возможность неправильной передачи данных. Как - вопрос отдельный. Можно, например, хранить резервную копию данных в оперативке или даже поставить вторую микросхему. Но не стоит тупо писать данные, в надежде, что все запишется без ошибок.
3)Ну и последнее, пожалуй самое-самое важное. Даже если что-то записалось один раз криво, то должны быть явные или неявные средства перезаписать это нормально. Так, чтобы не приходилось это делать с помощью паяльника. В данном конкретном случае, один (или не один) раз криво записанные данные каким-то образом из-за
П.С. Впрочем телевизор - не ракета, ему можно и сломаться.
Journal information