Виртуальная машина отладки (AVDM)

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Виртуальная машина отладки для Arduino

Ссылка: 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.

ptr
Offline
Зарегистрирован: 28.05.2016

А под VirtualBox без танцев с бубнами ее можно конвертнуть?

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Я сначала в VirtualBox её собирал, но там что-то трудно поставить сборку ОС, которую я использовал (драйвера автоматом не встали). Поэтому бросил и сделал на VMWare. Я могу попробовать другую сборку XP, если будут желающие работать под VirtualBox.

Набор ПО небольшой, можно под любой виртуалкой собрать, наверное.

ptr
Offline
Зарегистрирован: 28.05.2016

Да просто с VirtualBox под Linux намного удобней, чем с VMWare. А я сына приучил уже только под Linux жить. Если винда нужна, то или в Wine или под VirtualBox

Если что - особо не напрягайтесь. У меня образ WinXP для VB есть готовый. Поищу на maintracker Proteus.

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Теоретически вам виртуальная машина может вообще тогда не понадобиться, если Proteus запустится под winehq. Если мне удастся его запустить под Ubuntu, я покажу как можно отлаживать там.

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Этот топик для ардуинщиков , дружащих с пингвинами? Много раз устанавливал Линух, задолго до появления в моей жизни ардуино. Понимаю, что хорошо знать Линух- это большой плюс.. Но как-то не пошло..

Пользуюсь Протеус 8.5  Виндовс 7х64.

uni пишет:

Теоретически вам виртуальная машина может вообще тогда не понадобиться, если Proteus запустится под winehq. Если мне удастся его запустить под Ubuntu, я покажу как можно отлаживать там.

Будут результаты - поделись . С удовольствием попробую поработать в Ubuntu с симуляцией ардуино.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Нет, это топик про отладку Arduino кода вообще, не важно на какой платформе.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Версию Proteus 8.5 я тоже протестирую. Не пользуюсь 8-ками, так как они были глючными, может поправили чего, посмотрим.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Пример отладки кода из темы Нужна помощь добрых людей-программистов

Где-то напутал с подключением датчика температуры. Зато кнопка отрабатывает как надо и индикатор тоже.

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

ptr
Offline
Зарегистрирован: 28.05.2016

Proteus 8.5 на XP под VirtualBox встал. Проблема нашлась, там где не ждал. Не встало ArduinoIDE. Ни одни проект не собирает с заявлением

collect2.exe: error: ld returned 5 exit status

 

ptr
Offline
Зарегистрирован: 28.05.2016

Разобрался. Гугл помог. Поставил режим совместимости с Windows 98 на ld.exe и ожил он.

ptr
Offline
Зарегистрирован: 28.05.2016

А Proteus вообще C код может показывать или только руками по ассемблерному листингу разбираться?

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Может конечно.

Вы Arduino IDE как windows приложение ставили что-ли?

Я через пару часиков выложу новую версию машины с дополнительным ПО (для работы с modbus и пр) и покажу видео демку как у меня собирается и отлаживается проект.

ptr
Offline
Зарегистрирован: 28.05.2016

uni пишет:

Вы Arduino IDE как windows приложение ставили что-ли?

Ну да. А как надо было?

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Я забыл, что на виртуалке Windows у вас. Это правильно, что там поставлена среда. Можете теперь попробовать отладить проект. Нужно включить опцию демонстрации процесса компиляции и посмотреть в какую временную папку Arduino IDE складывает всё, что наработала. Там среди прочего будет файл с расширением .elf. Вот этот файл нужно указывать в свойства мк в Proteus. Там где нужно указать прошивку. При запуске отладки можно будет выбрать исходники из списка, т.к. elf-файл содержит в себе ссылки на файлы проекта.

ptr
Offline
Зарегистрирован: 28.05.2016

elf то он открывает, а вот исходники не просит. Максимум, что позволяет - дизассемблировать этот elf (

a5021
Offline
Зарегистрирован: 07.07.2013

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

ptr пишет:

elf то он открывает, а вот исходники не просит. Максимум, что позволяет - дизассемблировать этот elf (

Звучит странно. Исходники он просить и не должен. При активной отладке в свойствах мк можно выбрать Sources и там в появившемся окне сверху должен быть выпадающий список со всеми исходными файлами, которые участвовали в сборке.

Вот моё краткое видео: Пример сборки и отладки скетча

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Новая версия виртуалки: AVDM-20161024.7z (~ 1 ГБ)

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

a5021, загружали elf из временной папки или собственный как у меня? Это же arduino исходник?

a5021
Offline
Зарегистрирован: 07.07.2013

Протеус 8.5 понимает ардуиновские скетчи. Отлаживаться -- милое дело.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Понимает? В каком это смысле? Он сам их собирает или нужно его ткнуть в elf файл?

ptr
Offline
Зарегистрирован: 28.05.2016

Разобрался. Очевидная бага Proteus. Видя относительные пути в DebugInfo elf файла он их меряет не от директории, где находится этот файл, а от директории, где находится проект Proteus. То есть, если у вас в elf файле есть относительные пути к исходникам, необходимо сохранить проект Proteus в той же директории, что и elf файл. Прикольно...

Собирать он тоже умеет, но в нем это делать жутко не удобно. Уж лучше я в Eclipse останусь.

 

ptr
Offline
Зарегистрирован: 28.05.2016

Диск для VirtualBox с Windows XP и Proteus 8.5 у меня в итоге появился. Если надо, выложу на свой домашний сервер.

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Потестирую новую Arduino IDE и Proteus 8.5. Может добавлю их (с заменой) в следующую версию виртуальной машины. У меня есть средней тяжести проекты, которые Proteus старше 7.7 не мог загрузить. Поэтому я и не пользуюсь 8-ками.

Диск выкладывайте, я могу добавить туда свой вариант сборки через Makefile.

a5021
Offline
Зарегистрирован: 07.07.2013

uni пишет:

Понимает? В каком это смысле? Он сам их собирает или нужно его ткнуть в elf файл?

VSM for Arduino Demo

ptr
Offline
Зарегистрирован: 28.05.2016

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

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

uni пишет:

Понимает? В каком это смысле? Он сам их собирает или нужно его ткнуть в elf файл?

Просто кидаете код из среды ардуино в окно (по-моему) "code source" и пользуетесь.

 Если надо - закидываете  hex -файл  через св-ва микроконтроллера.Но вы же хотите отлаживать код ардуино?.

Кстати, 8.5 версия стабильно работает (Вин7х64, Вин10х64 проверено).

И все-таки я не понял - зачем вам Virtualbox?

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Спасибо, не знал, что 8-ка настолько продвинулась в интерфейсной части. Подключение тулчейнов - хорошая возможность. К сожалению, у меня проекты были навороченные и Proteus просто не мог их загрузить, поэтому я не мог пользоваться старшими версиями. Дело ещё в том, что раньше я код компилировал одновременно в двух разных компиляторах: gcc и iar, а Proteus в старших версиях не загружал объектные файлы iar'а от моих проектов.

Была ещё одна причина - это подключение VSM к AVR Studio. Раньше можно было ходить по исходникам прямо в студии и видеть периферию через неё. Потом это выпилили. К сожалению, сейчас такой режим мне завести не удалось.

У меня есть проект панельного файлового менеджера, попробую новую версию на нём.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

ptr пишет:

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

Спасибо, доработаю под себя.

ptr
Offline
Зарегистрирован: 28.05.2016

Штирлиц пишет:

И все-таки я не понял - зачем вам Virtualbox?

Гиммороиться с установкой Proteus под Wine не было никакого желания. Использовать VMWare под (k)ubuntu - тоже гимморой, особенно когда есть свободный и доступный VirtualBox.

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Штирлиц пишет:

И все-таки я не понял - зачем вам Virtualbox?

У меня vmware, а с virtualbox'ом легче жить под linux. Виртуальная машина нужна для хранения отладочного окружения, чтобы всегда была в готовом состоянии.

Мой вариант сборки сложнее стандартного. Ведь я могу не только Arduino-код компилировать, я, к примеру, могу добавлять вообще сторонний код и перемежать его вместе со скетчами. У меня есть пример работы scmRTOS и кода из Arduino Framework'а (telnet-сервер, двух-поточная программа).

П.С. Могу, кстати, в следующем коротком ролике показать отладку операционной системы, которая будет использовать код из Arduino Framework'а. Например, я могу мигать светодиодами действительно "параллельно", без всяких там дополнительных ухищрений, если таковыми не считать использование ОС.

Могу делать "параллельный" вывод в консоль из разных потоков.

nik182
Offline
Зарегистрирован: 04.05.2015

uni пишет:

Новая версия виртуалки: AVDM-20161024.7z (~ 1 ГБ)

Notepad++ коза болду.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

ptr пишет:

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

Виртуалку посмотрел, русифицировал. Как наполню аналогичным софтом, буду выкладывать две версии параллельно.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Arduino VirtualBox Debug Machine

Образ диска для VirtualBox: avbdm-20161029.7z (vdi, ~1,66 ГБ)

Состав практически такой же как и у виртуальной машины VMWare, только Proteus 8-й версии. Это дополненная виртуальная машина от ptr. Arduino IDE 1.16.12 версии.
Чтобы получить виртуальную машину в VirtualBox, её нужно создать (на основе Windows XP) и подключить vdi диск из архива.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Спасибо, скачаю попробую. 

ptr
Offline
Зарегистрирован: 28.05.2016

uni пишет:

Это дополненная виртуальная машина от ptr.

То есть мне уже можно свою со своего HTTP сервера сносить?

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

:) по желанию. Моя версия значительно обновлена и приукрашена (русифицирована в т.ч.). Нужно только видеоруководства создать, чтобы было понятно как этим пользоваться.

ptr
Offline
Зарегистрирован: 28.05.2016

Да место занимает. Я же не на Яндекс-диск, а на свой домашний сервер под Gentoo выкладывал )

 

_mikka
Offline
Зарегистрирован: 01.11.2015

Здравствуйте Вячеслав, рад Вас здесь видеть :)

Не могли бы вы мне помочь в создании makefile для этого проекта ?

Делал моного попыток, но преокт не компилируется!?

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Доброго.

Кроме исходников мне нужны ещё все нестандартные используемые библиотеки (IRremote, RemoteXY, ...). Makefile практически одинаковый для всех проектов. Нужно лишь добавить зависимости от используемых библиотек.

Вот пример как добавляются библиотеки (см пример Projects\Arduino\Test3):

ARDUINO_LIBS = Wire OneWire DallasTemperature LiquidCrystal

При запуске сборки, если закомментировать ARDUINO_QUIET = 1, то обнаруженные библиотеки будут отображены в начале так

-                      ARDUINO_LIBS =
- [SYSTEM]               DallasTemperature
- [SYSTEM]               LiquidCrystal
- [SYSTEM]               OneWire
- [PLATFORM]             Wire

Можно попробовать добавить название используемой библиотеки в строку ARDUINO_LIBS через пробел. Ещё желательно изменить расширение ino на cpp, хотя вроде бы это не обязательно и я не пробовал (это для единообразия).

Если добавите в архив полный набор исходников вместе с библиотеками, то я покажу как собрать. Забыл ещё добавить, что нужно выбрать платформу, на которой собирается (тип Ардуино). Сейчас у меня две используется с мк ATmega2560 (mega) и ATmega324(8)P (uno).

# Device type as listed in `boards.txt` or `make show_boards`.
BOARD_TAG = uno

# Microcontroller model.
# Usually can be auto-detected as `build.mcu` from `boards.txt`
MCU = atmega324p

Т.е. нужно ещё указать мне какую Arduino используете.

П.С. Я скоро обновлю виртуальные машины, добавлю немного программ, синхронизирую их по наполнению. Также добавлю возможность делать аналогичную сборку при помощи Notepad++ и Makefile для любителей BASCOM. Можно будет также собирать и отлаживать проекты на бейсике для avr.

_mikka
Offline
Зарегистрирован: 01.11.2015

Работаю в atmel studio без visimicro (висит мертвым грузом а, прошивку реализовал через external tools )

Все что вы перечислили пробовал, но не получилось, к сожалению логи ошибок не скопировались, вечером еще раз попробую и отпишусь.

п.с. Возможно ли настроить сам atmel studio ? Пробовал вставлять полученный при компиляции файл в протеус, все работает, но исходного кода нет ...

п.п.с. За виртуальную пашину спасибо.

 

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Не знаю по поводу 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-архивов.

_mikka
Offline
Зарегистрирован: 01.11.2015

Спасибо за развернутый комментарий!

Atmel Studio есть нечто иное как, обрезанная Visual Studio...

Могли бы выложить инструкцию или ссылку на материал по созданию такого проекта в Visual Studio ?

Где можно почитать про преобразование вывода результатов компиляции?

RemoteXY можно взять тут.

з.ы. при сборке в Atmel Studio у меня получался elf файл, и протеус его принимал, но исходного кода во время отладки небыло...

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015
C:/Arduino/hardware/tools/avr/bin/avr-size --mcu=atmega2560 -C --format=avr build-mega/program.elf
AVR Memory Usage
----------------
Device: atmega2560

Program:   23122 bytes (8.8% Full)
(.text + .data + .bootloader)

Data:        506 bytes (6.2% Full)
(.data + .bss + .noinit)

Мне удалось собрать исходники для Arduino Mega 2560 (я так и не понял что у вас используется), но потребовались некоторые действия для этого. Для начала нужно добавить библиотеку RemoteXY и заменить RobotIRremote на Arduino-IRremote, назвав последнюю просто IRremote.

Дальше нужно поправить исходники. Описывать не буду, дам архив.

_mikka
Offline
Зарегистрирован: 01.11.2015

Спасибо Вам большое...

_mikka
Offline
Зарегистрирован: 01.11.2015

День добрый Вячеслав, небыло времени, затем сидел разбирался...

Помогите пожалуйста понять, в чем может быть дело ?

Компиляция завершается с шибкой, не пойму в чем дело, но папка build-uno пустая...

make
Process started >>>
-------------------------
Arduino.mk Configuration:
- [AUTODETECTED]       CURRENT_OS = WINDOWS
- [USER]               ARDUINO_DIR = C:/Arduino
Usage: egrep [OPTION]... PATTERN [FILE]...
Try `egrep --help' for more information.
- [USER]               ARDMK_DIR = C:/Projects/Arduino
- [AUTODETECTED]       ARDUINO_VERSION = 161
- [USER]               ARCHITECTURE = avr
- [DEFAULT]            ARDMK_VENDOR = arduino
- [DEFAULT]            ARDUINO_SKETCHBOOK =  
- [USER]               AVR_TOOLS_DIR = C:/Arduino/hardware/tools/avr
- [COMPUTED]           ARDUINO_LIB_PATH = C:/Arduino/libraries (from ARDUINO_DIR)
- [COMPUTED]           ARDUINO_PLATFORM_LIB_PATH = C:/Arduino/hardware/arduino/avr/libraries (from ARDUINO_DIR)
- [COMPUTED]           ARDUINO_VAR_PATH = C:/Arduino/hardware/arduino/avr/variants (from ARDUINO_DIR)
- [COMPUTED]           BOARDS_TXT = C:/Arduino/hardware/arduino/avr/boards.txt (from ARDUINO_DIR)
- [DEFAULT]            USER_LIB_PATH = /libraries (in user sketchbook)
- [DEFAULT]            PRE_BUILD_HOOK = pre-build-hook.sh
- [USER]               BOARD_TAG = uno
- [COMPUTED]           CORE = arduino (from build.core)
- [COMPUTED]           VARIANT = standard (from build.variant)
- [COMPUTED]           OBJDIR = build-uno (from BOARD_TAG)
- [COMPUTED]           ARDUINO_CORE_PATH = C:/Arduino/hardware/arduino/avr/cores/arduino (from ARDUINO_DIR, BOARD_TAG and boards.txt)
- [USER]               MONITOR_BAUDRATE = 9600
- [DEFAULT]            OPTIMIZATION_LEVEL = s
- [DEFAULT]            MCU_FLAG_NAME = mmcu
- [DEFAULT]            CFLAGS_STD =  
- [USER]               CXXFLAGS_STD = = -std=gnu++11
- [AUTODETECTED]       DEVICE_PATH =  
- [DEFAULT]            FORCE_MONITOR_PORT =  
- [AUTODETECTED]       Size utility: AVR-aware for enhanced output
-
-                      ARDUINO_LIBS =
- [SYSTEM]               IRremote
- [SYSTEM]               RemoteXY
- [COMPUTED]           BOOTLOADER_PARENT = C:/Arduino/hardware/arduino/avr/bootloaders (from ARDUINO_DIR)
- [COMPUTED]           ARDMK_VERSION = 1.5
- [COMPUTED]           CC_VERSION = 4.9.2 (avr-gcc)
-------------------------
mkdir -p build-uno
C:/Arduino/hardware/tools/avr/bin/avr-g++ -MMD -c -Wno-sign-compare -Wno-narrowing -mmcu=atmega328 -DF_CPU=16000000L -DARDUINO=161 -DARDUINO_ARCH_AVR -D__PROG_TYPES_COMPAT__ -IC:/Arduino/hardware/arduino/avr/cores/arduino -IC:/Arduino/hardware/arduino/avr/variants/standard    -IC:/Arduino/libraries/IRremote/src    -IC:/Arduino/libraries/RemoteXY   -Wall -ffunction-sections -fdata-sections  -O1 -gdwarf-2 -gstrict-dwarf -fno-exceptions = -std=gnu++11 EEPROM2.cpp -o build-uno/EEPROM2.cpp.o
avr-g++: error: =: No such file or directory
make: *** [build-uno/EEPROM2.cpp.o] Error 1
<<< Process finished. (Exit code 2)
================ READY ================



ссылка на проект.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Я сейчас немного занят, не могу разобраться в чём отличие от моего окружения (хотя машины эти я делал специально, чтобы условия сборки были идентичными). Мне приходится полностью пересобирать виртуалки, т.к. возникли проблемы с их обновлением. Как доделаю, добавлю в них ваш пример.

Ещё я, пожалуй, папку со своими проектами для виртуалки выложу на github, чтобы потом проще было их импортировать на виртуальную машину по выбору (не засорять её).

П.С. Ещё мне удалось собрать интерпретатор C для Arduino Mega2560, который называется picoc. Пока только есть проблема с ОЗУ, т.к. все строковые константы размещены там и занимают больше 8 КБ. Ближайший месяц буду в нём ковырятся, чтобы заставить интерпретировать простые конструкции языка C, может чего и выйдет. Буду занят переносом всех строк во флеш, их там около 800 шт.

_mikka
Offline
Зарегистрирован: 01.11.2015

В любом случае спасибо за Вашу работу. Я постораюсь разобраться сам... С нетерпением жду новую сборку.

_mikka
Offline
Зарегистрирован: 01.11.2015

uni пишет:

Я сейчас немного занят, не могу разобраться в чём отличие от моего окружения (хотя машины эти я делал специально, чтобы условия сборки были идентичными). Мне приходится полностью пересобирать виртуалки, т.к. возникли проблемы с их обновлением. Как доделаю, добавлю в них ваш пример.

Ещё я, пожалуй, папку со своими проектами для виртуалки выложу на github, чтобы потом проще было их импортировать на виртуальную машину по выбору (не засорять её).

П.С. Ещё мне удалось собрать интерпретатор C для Arduino Mega2560, который называется picoc. Пока только есть проблема с ОЗУ, т.к. все строковые константы размещены там и занимают больше 8 КБ. Ближайший месяц буду в нём ковырятся, чтобы заставить интерпретировать простые конструкции языка C, может чего и выйдет. Буду занят переносом всех строк во флеш, их там около 800 шт.

Здравствуйте Вячеслав, очень интересуют ваши изыскания...

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Экспериментирую 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 для этого случая мне пока не под силу. Там всё на несколько порядков сложнее.