Виртуальная машина отладки (AVDM)
- Войдите на сайт для отправки комментариев
Вс, 23/10/2016 - 01:08
Ссылка: avdm-20161022.7z (~800 МБ)
Описание:
Это набор файлов виртуальной машины VMWare Workstation 12.0. ПО в составе виртуальной машины позволяет собирать проекты Arduino и отлаживать их в Proteus 7.7. Сборку можно выполнить двумя путями: через Arduino IDE либо через командную строку, используя Makefile (последний способ предпочтительнее).
Состав виртуальной машины:
- операционнаяя система Mini Windows XP;
- Proteus 7.7 SP2;
- Arduino SDK 1.6.10;
- прочее: Far, Total Commander, Notepad++, Serial Port Monitor, Virtual Serial Port Driver, Tiny C Compiler, PuTTY, Daemon Tools;
- дополнительные шрифты: Consolas, Inconsolata, GOST.
А под VirtualBox без танцев с бубнами ее можно конвертнуть?
Я сначала в VirtualBox её собирал, но там что-то трудно поставить сборку ОС, которую я использовал (драйвера автоматом не встали). Поэтому бросил и сделал на VMWare. Я могу попробовать другую сборку XP, если будут желающие работать под VirtualBox.
Набор ПО небольшой, можно под любой виртуалкой собрать, наверное.
Да просто с VirtualBox под Linux намного удобней, чем с VMWare. А я сына приучил уже только под Linux жить. Если винда нужна, то или в Wine или под VirtualBox
Если что - особо не напрягайтесь. У меня образ WinXP для VB есть готовый. Поищу на maintracker Proteus.
Теоретически вам виртуальная машина может вообще тогда не понадобиться, если Proteus запустится под winehq. Если мне удастся его запустить под Ubuntu, я покажу как можно отлаживать там.
Этот топик для ардуинщиков , дружащих с пингвинами? Много раз устанавливал Линух, задолго до появления в моей жизни ардуино. Понимаю, что хорошо знать Линух- это большой плюс.. Но как-то не пошло..
Пользуюсь Протеус 8.5 Виндовс 7х64.
Теоретически вам виртуальная машина может вообще тогда не понадобиться, если Proteus запустится под winehq. Если мне удастся его запустить под Ubuntu, я покажу как можно отлаживать там.
Будут результаты - поделись . С удовольствием попробую поработать в Ubuntu с симуляцией ардуино.
Нет, это топик про отладку Arduino кода вообще, не важно на какой платформе.
Версию Proteus 8.5 я тоже протестирую. Не пользуюсь 8-ками, так как они были глючными, может поправили чего, посмотрим.
Пример отладки кода из темы Нужна помощь добрых людей-программистов
Где-то напутал с подключением датчика температуры. Зато кнопка отрабатывает как надо и индикатор тоже.
Видео-инструкции пока сделать не могу, т.к. ноут, который я использую, слабоват.
Proteus 8.5 на XP под VirtualBox встал. Проблема нашлась, там где не ждал. Не встало ArduinoIDE. Ни одни проект не собирает с заявлением
collect2.exe: error: ld returned 5 exit status
Разобрался. Гугл помог. Поставил режим совместимости с Windows 98 на ld.exe и ожил он.
А Proteus вообще C код может показывать или только руками по ассемблерному листингу разбираться?
Может конечно.
Вы Arduino IDE как windows приложение ставили что-ли?
Я через пару часиков выложу новую версию машины с дополнительным ПО (для работы с modbus и пр) и покажу видео демку как у меня собирается и отлаживается проект.
Вы Arduino IDE как windows приложение ставили что-ли?
Ну да. А как надо было?
Я забыл, что на виртуалке Windows у вас. Это правильно, что там поставлена среда. Можете теперь попробовать отладить проект. Нужно включить опцию демонстрации процесса компиляции и посмотреть в какую временную папку Arduino IDE складывает всё, что наработала. Там среди прочего будет файл с расширением .elf. Вот этот файл нужно указывать в свойства мк в Proteus. Там где нужно указать прошивку. При запуске отладки можно будет выбрать исходники из списка, т.к. elf-файл содержит в себе ссылки на файлы проекта.
elf то он открывает, а вот исходники не просит. Максимум, что позволяет - дизассемблировать этот elf (
elf то он открывает, а вот исходники не просит. Максимум, что позволяет - дизассемблировать этот elf (
Звучит странно. Исходники он просить и не должен. При активной отладке в свойствах мк можно выбрать Sources и там в появившемся окне сверху должен быть выпадающий список со всеми исходными файлами, которые участвовали в сборке.
Вот моё краткое видео: Пример сборки и отладки скетча
Новая версия виртуалки: AVDM-20161024.7z (~ 1 ГБ)
a5021, загружали elf из временной папки или собственный как у меня? Это же arduino исходник?
Протеус 8.5 понимает ардуиновские скетчи. Отлаживаться -- милое дело.
Понимает? В каком это смысле? Он сам их собирает или нужно его ткнуть в elf файл?
Разобрался. Очевидная бага Proteus. Видя относительные пути в DebugInfo elf файла он их меряет не от директории, где находится этот файл, а от директории, где находится проект Proteus. То есть, если у вас в elf файле есть относительные пути к исходникам, необходимо сохранить проект Proteus в той же директории, что и elf файл. Прикольно...
Собирать он тоже умеет, но в нем это делать жутко не удобно. Уж лучше я в Eclipse останусь.
Диск для VirtualBox с Windows XP и Proteus 8.5 у меня в итоге появился. Если надо, выложу на свой домашний сервер.
Потестирую новую Arduino IDE и Proteus 8.5. Может добавлю их (с заменой) в следующую версию виртуальной машины. У меня есть средней тяжести проекты, которые Proteus старше 7.7 не мог загрузить. Поэтому я и не пользуюсь 8-ками.
Диск выкладывайте, я могу добавить туда свой вариант сборки через Makefile.
Понимает? В каком это смысле? Он сам их собирает или нужно его ткнуть в elf файл?
VSM for Arduino Demo
Proteus 8.5 c Arduino IDE 1.6.11 и FAR 3.0 под Windows XP SP3 (32бит) для VirtualBox http://ptrhome.no-ip.org/WXP_PROTEUS.7z
Понимает? В каком это смысле? Он сам их собирает или нужно его ткнуть в elf файл?
Просто кидаете код из среды ардуино в окно (по-моему) "code source" и пользуетесь.
Если надо - закидываете hex -файл через св-ва микроконтроллера.Но вы же хотите отлаживать код ардуино?.
Кстати, 8.5 версия стабильно работает (Вин7х64, Вин10х64 проверено).
И все-таки я не понял - зачем вам Virtualbox?
Спасибо, не знал, что 8-ка настолько продвинулась в интерфейсной части. Подключение тулчейнов - хорошая возможность. К сожалению, у меня проекты были навороченные и Proteus просто не мог их загрузить, поэтому я не мог пользоваться старшими версиями. Дело ещё в том, что раньше я код компилировал одновременно в двух разных компиляторах: gcc и iar, а Proteus в старших версиях не загружал объектные файлы iar'а от моих проектов.
Была ещё одна причина - это подключение VSM к AVR Studio. Раньше можно было ходить по исходникам прямо в студии и видеть периферию через неё. Потом это выпилили. К сожалению, сейчас такой режим мне завести не удалось.
У меня есть проект панельного файлового менеджера, попробую новую версию на нём.
Proteus 8.5 c Arduino IDE 1.6.11 и FAR 3.0 под Windows XP SP3 (32бит) для VirtualBox http://ptrhome.no-ip.org/WXP_PROTEUS.7z
Спасибо, доработаю под себя.
И все-таки я не понял - зачем вам Virtualbox?
Гиммороиться с установкой Proteus под Wine не было никакого желания. Использовать VMWare под (k)ubuntu - тоже гимморой, особенно когда есть свободный и доступный VirtualBox.
И все-таки я не понял - зачем вам Virtualbox?
У меня vmware, а с virtualbox'ом легче жить под linux. Виртуальная машина нужна для хранения отладочного окружения, чтобы всегда была в готовом состоянии.
Мой вариант сборки сложнее стандартного. Ведь я могу не только Arduino-код компилировать, я, к примеру, могу добавлять вообще сторонний код и перемежать его вместе со скетчами. У меня есть пример работы scmRTOS и кода из Arduino Framework'а (telnet-сервер, двух-поточная программа).
П.С. Могу, кстати, в следующем коротком ролике показать отладку операционной системы, которая будет использовать код из Arduino Framework'а. Например, я могу мигать светодиодами действительно "параллельно", без всяких там дополнительных ухищрений, если таковыми не считать использование ОС.
Могу делать "параллельный" вывод в консоль из разных потоков.
Новая версия виртуалки: AVDM-20161024.7z (~ 1 ГБ)
Notepad++ коза болду.
Proteus 8.5 c Arduino IDE 1.6.11 и FAR 3.0 под Windows XP SP3 (32бит) для VirtualBox http://ptrhome.no-ip.org/WXP_PROTEUS.7z
Виртуалку посмотрел, русифицировал. Как наполню аналогичным софтом, буду выкладывать две версии параллельно.
Образ диска для VirtualBox: avbdm-20161029.7z (vdi, ~1,66 ГБ)
Состав практически такой же как и у виртуальной машины VMWare, только Proteus 8-й версии. Это дополненная виртуальная машина от ptr. Arduino IDE 1.16.12 версии.
Чтобы получить виртуальную машину в VirtualBox, её нужно создать (на основе Windows XP) и подключить vdi диск из архива.
Спасибо, скачаю попробую.
Это дополненная виртуальная машина от ptr.
То есть мне уже можно свою со своего HTTP сервера сносить?
:) по желанию. Моя версия значительно обновлена и приукрашена (русифицирована в т.ч.). Нужно только видеоруководства создать, чтобы было понятно как этим пользоваться.
Да место занимает. Я же не на Яндекс-диск, а на свой домашний сервер под Gentoo выкладывал )
Здравствуйте Вячеслав, рад Вас здесь видеть :)
Не могли бы вы мне помочь в создании makefile для этого проекта ?
Делал моного попыток, но преокт не компилируется!?
Доброго.
Кроме исходников мне нужны ещё все нестандартные используемые библиотеки (IRremote, RemoteXY, ...). Makefile практически одинаковый для всех проектов. Нужно лишь добавить зависимости от используемых библиотек.
Вот пример как добавляются библиотеки (см пример Projects\Arduino\Test3):
При запуске сборки, если закомментировать ARDUINO_QUIET = 1, то обнаруженные библиотеки будут отображены в начале так
Можно попробовать добавить название используемой библиотеки в строку ARDUINO_LIBS через пробел. Ещё желательно изменить расширение ino на cpp, хотя вроде бы это не обязательно и я не пробовал (это для единообразия).
Если добавите в архив полный набор исходников вместе с библиотеками, то я покажу как собрать. Забыл ещё добавить, что нужно выбрать платформу, на которой собирается (тип Ардуино). Сейчас у меня две используется с мк ATmega2560 (mega) и ATmega324(8)P (uno).
Т.е. нужно ещё указать мне какую Arduino используете.
П.С. Я скоро обновлю виртуальные машины, добавлю немного программ, синхронизирую их по наполнению. Также добавлю возможность делать аналогичную сборку при помощи Notepad++ и Makefile для любителей BASCOM. Можно будет также собирать и отлаживать проекты на бейсике для avr.
Работаю в atmel studio без visimicro (висит мертвым грузом а, прошивку реализовал через external tools )
Все что вы перечислили пробовал, но не получилось, к сожалению логи ошибок не скопировались, вечером еще раз попробую и отпишусь.
п.с. Возможно ли настроить сам atmel studio ? Пробовал вставлять полученный при компиляции файл в протеус, все работает, но исходного кода нет ...
п.п.с. За виртуальную пашину спасибо.
Не знаю по поводу Atmel Studio, но обычный Visual Studio настроить можно. Я этой средой пользуюсь сам для работы с С/C++ кодом. Не включил её в виртуалку из-за занимаемого места. Вообще, можно сделать папку проектов общей для виртуалки и хоста, на котором она работает. Тогда код можно писать на Visual Studio 20xx в основной системе, а собирать и отлаживать на виртуальной машине.
В Visual Studio нужно создать проект типа Makefile Project (находится в разделе C++/General). Там для сборки указать любой .cmd файл, к примеру, build.cmd, в котором прописать команду make. Это в самом простом варианте. Утилиту make можно взять откуда-нибудь. На самом деле нужно ещё преобразовать вывод результатов компиляции, чтобы иметь возможность переходитьпо ошибке на строку, где компилятор её нашёл.
В моём репозитории с проектами для avr я использую такую технику. Но она сложна для понимания простыми пользователями Arduino, которые мыслят "простыми категориями". Поэтому я упростил сборку и делаю её в Notepad++. Его, кстати, тоже можно настроить на переход по ошибке (будет время доделаю).
По поводу Proteus. Чтобы там можно было видеть исходники нужно несколько вещей:
1. При сборке должны использоваться отладочные флаги (они есть у меня в Makefile).
2. Нужно использовать отладочный elf-файл, который обычно должен располагаться в папке с исходниками. В виртуальной машине это не так, т.к. у меня все отладочные файлы располагаются в допонительной подпапке и это работает. Не знаю почему.
Чтобы я смог помочь нужно найти файлы библиотек, которые были скопированы локально в качестве библиотек Arduino. Это могли быть и просто zip-архивы. У меня на виртуалке нет этих библиотек (RemoteXY) и если их не скопировать, то ничего не соберётся. Насколько я понимаю RemoteXY в стандартную IDE не входит.
Тут есть ещё одна фишка. Если эти библиотеки скачать через IDE, то она может их поместить не к себе в место установки среды, а в локальную папку пользователя в виде zip-файла. Так вот, нужно распаковывать эти архивы и скопировать по стандартным путям, т.к. моя системы сборки этим не занимается ничего не знает про библиотеки в виде zip-архивов.
Спасибо за развернутый комментарий!
Atmel Studio есть нечто иное как, обрезанная Visual Studio...
Могли бы выложить инструкцию или ссылку на материал по созданию такого проекта в Visual Studio ?
Где можно почитать про преобразование вывода результатов компиляции?
RemoteXY можно взять тут.
з.ы. при сборке в Atmel Studio у меня получался elf файл, и протеус его принимал, но исходного кода во время отладки небыло...
Мне удалось собрать исходники для Arduino Mega 2560 (я так и не понял что у вас используется), но потребовались некоторые действия для этого. Для начала нужно добавить библиотеку RemoteXY и заменить RobotIRremote на Arduino-IRremote, назвав последнюю просто IRremote.
Дальше нужно поправить исходники. Описывать не буду, дам архив.
Спасибо Вам большое...
День добрый Вячеслав, небыло времени, затем сидел разбирался...
Помогите пожалуйста понять, в чем может быть дело ?
Компиляция завершается с шибкой, не пойму в чем дело, но папка build-uno пустая...
ссылка на проект.
Я сейчас немного занят, не могу разобраться в чём отличие от моего окружения (хотя машины эти я делал специально, чтобы условия сборки были идентичными). Мне приходится полностью пересобирать виртуалки, т.к. возникли проблемы с их обновлением. Как доделаю, добавлю в них ваш пример.
Ещё я, пожалуй, папку со своими проектами для виртуалки выложу на github, чтобы потом проще было их импортировать на виртуальную машину по выбору (не засорять её).
П.С. Ещё мне удалось собрать интерпретатор C для Arduino Mega2560, который называется picoc. Пока только есть проблема с ОЗУ, т.к. все строковые константы размещены там и занимают больше 8 КБ. Ближайший месяц буду в нём ковырятся, чтобы заставить интерпретировать простые конструкции языка C, может чего и выйдет. Буду занят переносом всех строк во флеш, их там около 800 шт.
В любом случае спасибо за Вашу работу. Я постораюсь разобраться сам... С нетерпением жду новую сборку.
Я сейчас немного занят, не могу разобраться в чём отличие от моего окружения (хотя машины эти я делал специально, чтобы условия сборки были идентичными). Мне приходится полностью пересобирать виртуалки, т.к. возникли проблемы с их обновлением. Как доделаю, добавлю в них ваш пример.
Ещё я, пожалуй, папку со своими проектами для виртуалки выложу на github, чтобы потом проще было их импортировать на виртуальную машину по выбору (не засорять её).
П.С. Ещё мне удалось собрать интерпретатор C для Arduino Mega2560, который называется picoc. Пока только есть проблема с ОЗУ, т.к. все строковые константы размещены там и занимают больше 8 КБ. Ближайший месяц буду в нём ковырятся, чтобы заставить интерпретировать простые конструкции языка C, может чего и выйдет. Буду занят переносом всех строк во флеш, их там около 800 шт.
Здравствуйте Вячеслав, очень интересуют ваши изыскания...
Экспериментирую c picoc на виртуальной машине. В реальном железе пока не могу, т.к. в Proteus пришлось подключить внешнюю SRAM, чтобы запустить picoc в работу. Для доработки нужно время, а меня тут отвлекают по основной работе (командировки и пр.).
Пока в планах "перебросить" все константы из ОЗУ во флеш (не закончено пока). Это нудная и кропотливая работа. После этого нужно оценить насколько обычная Arduino Mega2560 подходит для написания программ на C с интерпретацией. Я хочу сделать поддержку интерпретации набора C-файлов. Потом нужно придумать способ реализации callback функций для обработчиков прерываний и прочих функций (modbus, например). Далее я соберу на базе Arduino Mega2560 макет ПЛК с экраном, кнопками, светодиодами, Ethernet платой с SD-картой, тремя развязанными RS-485 интерфейсами и одним развязанным RS-232. Дискретные входы и выходы по остаточному принципу, также как и аналоговые.
У меня уже есть варианты по используемым экрану и кнопкам (стандартные шилды). Для начала я хочу иметь дешёвый модуль CPU с последовательными интерфейсами, встроенным Modbus-RTU и управляемый С подобной программой. Пусть и интерпретируемой.
Если заработает, то я нарисую свою плату в компакном виде для этого.
П.С. Ещё меня отвлекает проект PLC Open. С его помощью тоже можно иметь дешёвый ПЛК, но он ещё не развит. В идеале я хотел бы иметь ПЛК на базе роутера TL-MR3020 (или другого дешёвого), но сборка runtime для этого случая мне пока не под силу. Там всё на несколько порядков сложнее.