цифровая электроника
вычислительная техника
встраиваемые системы

 



Две прошивки одновременно (dual boot) для Arduino

Автор: Mike(admin) от 26-10-2016, 09:25

Двойная загрузка или dual boot для обычных настольных компьютеров представляется сегодня вполне нормальным явлением. Так, пользователь может запускать на своем компьютере две операционные системы, например, Linux для работы и Windows для игр и развлечений.


Две прошивки одновременно (dual boot) для Arduino

Если это справедливо для больших вычислительных систем, то почему бы такое не реализовать для малых вычислительных систем, например, для Arduino. Тогда бы пользователь Arduino мог бы менять прошивки «на лету» в зависимости от текущих задач без необходимости подключения платы к компьютеру через порт USB и перепрограммирования этой платы. И, к счастью, двойную загрузку можно сделать для Arduino, потребуется лишь дополнительная микросхема энергонезависимой памяти (EEPROM).


В данном случае была «проапгрейдена» миниатюрная плата Arduino Pro Mini. В качестве чипа EEPROM использовалась микросхема M24512 с интерфейсом I2C и объемом памяти 64 КБ. Ниже представлена схема подключения M24512 к Arduino посредством линий SCL и SDA интерфейса I2C.


Две прошивки одновременно (dual boot) для Arduino

Из-за отсутствия свободного места на плате микросхему памяти M24512 можно аккуратно напаять непосредственно на микроконтроллер.


Две прошивки одновременно (dual boot) для Arduino

В Arduino необходимо записать специальный загрузчик (bootloader), обеспечивающий возможность двойной загрузки. Скачать этот бутлоадер можно с репозитория Github. Работает механизм двойной загрузки следующим образом. Когда кнопка сброса (reset) платы Arduino нажата, происходит вход в режим загрузчика. В данном случае в режиме загрузчика происходит проверка того, закорочены ли выводы 10 и 11. Если это так, то светодиод на плате будет светиться одну секунду. Если убрать перемычку между линиями 10 и 11, прежде чем светодиод погаснет, система войдет в режим двойной загрузки и начнет обмен информацией между внутренней flash-памятью микроконтроллера и внешней EEPROM-памятью. То есть программа, которая выполнялась на микроконтроллере перестанет выполняться и будет записана во внешнюю энергонезависимую память, где будет в последствии храниться, а программа из этой внешней памяти будет записана в микроконтроллер и начнет выполняться вместо предыдущей. Чтобы вернуть все на место, нужно снова закоротить выводы 10 и 11, нажать кнопку сброса и успеть убрать перемычку до того, как погаснет светодиод.


Вот так просто можно реализовать режим двойной загрузки в Arduino. Он может понадобиться, например, если вы хотите запускать стабильный и «сырой» код на одном устройстве. В любом случае dual boot открывает новые возможности для разработчиков малых встраиваемых систем.




© digitrode.ru


Теги: Arduino, загрузчик




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий