Если прошивку обновляет клиент - она должна быть криптована. Соответственно для несовместимых версий железа используются разные ключи криптования и "неправильная" прошивка не будет расшифрована и, следовательно, будет отвергнута загрузчиком. Другое дело, если основной функционал прошивок для разных модификаций железа сильно схож - тогда может иметь смысл хранить в области загрузчика идентификатор версии железа и в одной глобальной прошивке предусмотреть поддержку всех вариантов железа с ветвлением по прочитанному из загрузчика идентификатору. В этом случае загрузчик может в начале обновления получать информацию о версии прошивки и сравнивая с минимально допустимой версией отвергать либо принимать ее. Причем идентификатор версии имеет смысл заложить изначально, даже если не планируете ветвление по нему. Со временем захочется прийти к объединенному варианту прошивок, а все необходимое для поддержки такого варианта у вас уже будет даже в старых приборах.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|