Работа с Arduino из AVR Studio 4



    Хотите знать как прошивать Arduino из AVR Studio 4? Читайте далее.

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

    Последние полгода я начал использовать для целей такой предотладки плату Arduino и макетки которые я навешиваю со всех сторон. К родной среде программирования Arduino я даже не стал привыкать, пользуюсь компиляторами от IAR, AVR-GCC и отладкой в пакете AVR Studio 4.

    Для меня лично в плате Arduino было одно неудобство: невожможность прошивать из AVR Studio без использования командной строки или отдельного программатора. AVR Studio умеет работать только с программаторами производства Atmel, однако если заставить Arduino «прикидываться» для компьютера фирменным программатором, то проблема была бы решена. Сделать это можно при помощи загрузчика — специальной программы в выделенной области флеш-памяти которая может считывать, стирать и модифицировать содержимое флеш-памяти.

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

    Теперь для того чтобы зашить программу из AVR Studio 4 в Arduino нужно замкнуть вывод 12 на землю и нажать на платке RESET, загорится индикатор L, после чего перемычку можно убирать и нажимать Connect из студии и прошивать Arduino как STK500 или AVR-ISP. Для тех кто привык к диалогам прошивки студии дальше все элементарно. Если неудобно использовать вывод 12 — можно этот момент исправить в исходниках и пересобрать самостоятельно.

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

    Похожие публикации

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

      0
      Благодарю, как раз заказал себе комплект на Космодроме :-)
      +1
      По поводу исходников: По линку «You must log in to access this area». Не приятно…
        0
        Выложил depositfiles.com/files/c33tqx1j9
        Если вам интересно иметь дело с AVR советую зарегистрироваться на AVRFreaks в любом случае. Там очень много любительских проектов которые можно смотреть, общаться с авторами, задавать вопросы в форуме. Удобный ресурс по этой теме.
        0
        А чем не подошел атмеловский AVR109 Self-programming?
          –1
          Я ни разу не пользовался функционалом AVRProg встроенного в студию и основанного на протоколе описанном в AVR109. А вот функционалом меню Program AVR пользуюсь постоянно с программаторами AVR-ISP mk2 и AVR Dragon, поэтому загрузчик расчитан на работу через основное меню программирования.
          0
          Не заметил деактивации UART при выходе из бутлоадера. Пины вижу, а уарт?
            0
            Можно добавить:

            UART_STATUS_REG = 0;
            UART_BAUD_RATE_LOW = 0;
            UART_CONTROL_REG = 0;

            При выходе из загрузчика.
            0
            Добавил деактивацию UART для варианта сборки с автовыходом из загрузчика после прошивки и исправил баг с некорректным рапортом версии программатора для студии, плюс внес пару косметических правок. На AVR Freaks лежит там же, кому попроще — depositfiles.com/files/1tcug8ow0.
              0
              Выложите пожалуйста на github.com или gitorious.org
              0
              А совместимость с Arduino IDE сохранена? Честно говоря сходу в коде не понял, вроде функционал шире стандартного бутлодера, но вот совместим ли с настройками avrdude из комплекта arduino не разобрался.

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

              Самое читаемое