Создание графической среды программирования для встроенных микроконтроллеров - PullRequest
0 голосов
/ 27 мая 2011

Меня попросили создать графическую среду программирования для встроенных 8-битных и 32-битных микроконтроллеров.Это должно быть так же просто, как использовать LabVIEW, но мне не нужны такие функции, как отладка или симуляция (по крайней мере, пока).По сути, приложение должно позволять пользователю настраивать логические элементы, в то время как / для циклов, операторов case, сравнений, управления потоком и т. Д. После завершения программы она должна сгенерировать код C, скомпилировать и записать программу на подключенном микроконтроллере.Прямо сейчас они нацелены на процессоры Atmel и Freescale и будут использовать DIO, аналоговый ввод-вывод для измерения тока, шину CAN, ШИМ и, возможно, еще кое-что, чего мне не хватает.

Я понимаю, что это ОГРОМНОЕ начинаниеразработка займет очень много времени, но это программное обеспечение, которое моя компания хочет предоставить клиентам, когда они покупают наше оборудование.Чтобы сделать резервную копию и дать вам небольшую справочную информацию, наша компания создает модули ввода-вывода, которые работают на шине CAN или автономно.Сегодня единственный способ запрограммировать микроконтроллер на нашей печатной плате - это использовать IDE от Atmel (AVR Studio) или Freescale (CodeWarrior).Проблема в том, что у клиента не всегда есть ноу-хау для программирования на C. Итак ... введите графическую среду IDE.LabVIEW слишком дорог для клиента, поэтому мы застряли в создании собственного.

Итак, мой вопрос: каков хороший способ создания этой IDE?Я планирую разработать это на C # / WPF, но мне интересно, насколько сложно будет преобразовать созданную пользователем логику в код C, который может быть скомпилирован компилятором Atmel / Freescale.Или, может быть, есть лучший метод там?Кто-нибудь делал что-нибудь подобное?

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

Рассматривали ли вы создание разъема LabView, чтобы ваши клиенты могли использовать LabView?

Это даст им зрелый, стабильный набор инструментов, и «все», что вам нужно сделать, это склеить его вместе.

Я не буду использовать работу «просто» в этом контексте.

2 голосов
/ 27 мая 2011

Требование больше похоже на язык 4GL / RAD для генерации кода на C, чем на IDE.

Лично я бы предложил альтернативный подход, который заключается в том, чтобы взять небольшой язык сценариев, такой как Lua или TCL, и встроить некоторые пользовательские расширения в C-код. Ваши клиенты могут затем кодировать в Lua или TCL, используя вашу библиотеку расширений.

Для самой IDE я бы подумал о создании плагина eclipse. Базовое затмение содержит 90% того, что вам понадобится, а архитектура плагина является солидной и зрелой с множеством примеров для подражания.

0 голосов
/ 01 июня 2011

У нас была довольно похожая проблема.Нашей целью было создать инструмент графического моделирования, который генерировал бы код на C или C ++ из конечных автоматов UML.Можно подумать, что такие инструменты должны быть очень распространены, но оказывается, что они не очень хорошо поддерживают вложение состояний и не генерируют достаточно качественный код для встроенных микроконтроллеров.

После сравнения нескольких вариантовНапример, интеграция с существующими графическими инструментами, мы остановились на разработке всего этого в Qt (qt.nokia.com).Оглядываясь назад, мы очень довольны этим выбором, потому что мы можем контролировать каждый аспект инструмента.

Фреймворк Qt предоставляет множество инфраструктур, таких как 2D-графическая сцена и графические элементы, которыми пользователи могут манипулироватьс помощью мыши.У вас есть поддержка XML для хранения вашей модели на диске.И у вас есть скрипт-движок, если вам нужно предоставить какой-нибудь скриптовый интерфейс.Одной вещью, которая очень помогла нам начать работу с Qt, была книга «Программирование на C ++ с использованием Qt 4 (2nd Edition)».

В любом случае, созданный нами инструмент можно загрузить бесплатно и использовать бесплатно (http://www.state -machine.com / qm), чтобы вы могли поиграть с ним и посмотреть, как он работает.

...