Bootloader arduino

Тема в разделе "Arduino & Shields", создана пользователем DKo, 13 апр 2016.

  1. DKo

    DKo Нерд

    Добрый вечер!

    Есть маленький вопросик: можно ли использовать загрузчик ардуино с прошивками на Си (я понимаю, что можно, ибо есть куча программ на основе avrdude, и сам пользовался одной, но вопрос не в этом): не будет ли каких-нибудь "подводных камней" при этом походе?
    Или, если Вам не сложно, отправьте меня на изучение более подходящего и проверенного для этого загрузчика (через UART)....... если в нем еще будет и возможность выбора: стереть или нет EEPROM, то это будет совсем шикарно:)

    Заранее спасибо!
     
  2. ostrov

    ostrov Гуру

    Что по вашему есть прошивки на Си? Они все в машинных кодах, а написаны могут быть хоть на Бейсике. И работать прошивка будет хоть с бутлоадером, хоть нет (если она работоспособна, конечно). Функция БЛ в том, чтобы загрузить прошивку через UART, а не сугубо через программатор, т.к. это проще, а в ряде случаев и вовсе незаменимо. Но иногда БЛ не нужен и даже вреден, ибо отжирает память, например в готовых изделиях, где прошивка не планирует меняеться столетиями.

    Вы то какую цель преследуете? Исследовательскую или практическую?
     
  3. Тоже заинтересовала данная тема, а именно, можно ли как то изменить бутлоадер, что бы Дуня загружалась быстрее ?
     
  4. ostrov

    ostrov Гуру

    Она у вас по десять минут загружается?
     
  5. Ну естественно нет, но хотелось бы ускорить загрузку. Как я понял, даже если изменить бутлоадер, то зашить его получится только с помощью программатора ?
     
  6. ostrov

    ostrov Гуру

    Под загрузкой вы что имеете ввиду? Запуск скетча при включении платы или скорость записи нового скетча на плату?
     
  7. Загрузка при включении.
     
  8. Radius

    Radius Гик

    А какая у вас задержка при включении? Микроконтроллер обычно ждет несколько миллисекунд команды на зашивку после RESETа, если команда не пришла, то начинает выполняться программа из FLASH.
     
  9. ostrov

    ostrov Гуру

    65ms максимум. Сомневаюсь, что это можно заметить на глаз. Может в самом скетче задержка?
     
  10. AlexU

    AlexU Гуру

    Текущий бутлоадер заметно тормозит загрузку только при перезагрузке контроллера (например, по нажатию кнопки RESET). После перезагрузки по RESET бутлоадер ждёт секунду (watchdog так настроен) и если в последовательный порт ничего не посылать, то контроллер уходит в перезагрузку. И при следующей загрузке бутлоадер сразу передаст управление основной программе.
    Да, только с помощью программатора. Но если у Вас есть программатор, то и бутлоадер может не понадобиться.
     
    DKo нравится это.
  11. DKo

    DKo Нерд

    Бутлодер duemilanove на голом контроллере atmega328p ждет секунду-две, прежде чем запустить основую программу.... Зато кнопку reset спокойно успеваешь нажать.
     
  12. DKo

    DKo Нерд

    А есть ли особенности какие-от в бутлодере для ардуино, которые способствовали выбору именного его для этой платформы?
     
  13. AlexU

    AlexU Гуру

    Что значит "выбору" -- бутлоадеры писались под Arduino'ы. Исходники бутлоадеров можно найти в каталоге 'hardware/arduino/avr/bootloaders/' (это путь относительно каталога, в который установлена Arduino IDE). Для Arduino UNO используется бутлоадер 'optiboot' ('hardware/arduino/avr/bootloaders/optiboot/'). Можно поправить исходники и собрать свои бутлоадеры, либо написать "с нуля". Как говориться -- "всё в Ваших руках"...
     
    DKo нравится это.
  14. DKo

    DKo Нерд

    А ну я это и хотел понять, что этот бутлодер был специально написан для arduino.
    Спасибо)
     
  15. akl

    akl Гуру

    есть инструкция по сборке оптибутов https://github.com/Optiboot/optiboot/wiki/CompilingOptiboot
    там рекомендуется использовать мейкфайл и соответственно запускать компиляцию командой
    make <options> <platform>
    Но я так понимаю, что в виндоусе это не работает и надо как-то извращаться чтобы запустить мейкфайл?
    А если использовать авр-студию и там поставить галочку "использовать внешний мейкфайл", то как тогда задать параметры <options> и <platform> ?
    и вообще, если кто-то шарит - объясните - как правильно скомпилировать свой оптибут в виндоусе?
     
  16. AlexU

    AlexU Гуру

    Извращаться надо и много, это Вам не linux, где всё из коробки работает. Но заставить работать 'make' можно -- MinGW и MSys (http://www.mingw.org/) Вам в помощь.
     
    akl нравится это.
  17. akl

    akl Гуру

    ага, спасибо. вот еще нагуглил про это http://we.easyelectronics.ru/Papandopala/kak-zapustit-makefile-pod-windows.html
    только неочень понятно - будут ли с этим методом работать параметры <options> и <platform>
    А есть какие-то нормальные способы через авр-студию скомпилировать этот оптибут?
     
  18. b707

    b707 Гуру

    не надо извращаться, make-файлы не запускаются, ибо они не исполняемые :) Чтобы воспользоваться сборкой с помощью make-файлов. нужно иметь в системе утилиту make. В линуксе. как уже сказали выше/ make есть "мз коробки". поэтому там все проще. Но make можно установить и в винду. Бутлоадеры не компилировал, а прошивку под STM32 собирал при помощи make под виндой- все получилось.
     
    akl нравится это.
  19. b707

    b707 Гуру

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

    akl Гуру

    а есть какой-то стопроцентный пошаговый алгоритм действий? типа такого http://we.easyelectronics.ru/Papandopala/kak-zapustit-makefile-pod-windows.html только попроще и понадежнее, а то тут мало того что две программы устанавливать надо, так еще и все эти прописи путей не внушают доверия и не факт что для моего случая подойдут.