|
Кросс-компиляторный шаблон (EC++, IAR, GCC), Попытка правильного проектирования сверху |
|
|
|
Jul 17 2011, 21:07
|

Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-04-06
Из: Екатеринбург
Пользователь №: 15 809

|
Доброго, уважаемый форумчане. Хочу предложить вашему вниманию пробный проект на C++ для объединения в одно целое процесса проектирования для микроконтроллеров AVR. Я пытаюсь «подружить»: SVN (VisualSVN для VS2008), Proteus 7.6 (ISIS), Enterprise Architect, VS2008, IAR 5.51, WinAVR-20100110, AVR Studio 4 и AVR Studio 5… ух, короче, всё это в одном проекте. Думается мне, что если писать на чистом C++, без особых выкрутасов, то можно иметь кросс-компиляторный проект в одном почти флаконе. Конкретно этот у меня компилируется и в IAR 5.51 и в WinAVR-20100110. Цели: 1. Проектирование сверху (UML2). 2. Использование удобной IDE VS2008. 3. Рабочая виртуальная модель для тестов. Ссылка на хранилище (svn): https://mysvn.ru/cop/Example/ (доступ: чтение) Клиент для SVN под Windows: TortoiseSVN Краткое описание есть там в readme.txt. Отлаживаю одновременно в: ISIS, IAR и AVR Studio (через ubrof8, который генерится IAR'ом специально для этого). Я пишу «образ» проекта в EA, используя редактор UML2, потом генерю образ(ы) класса(ов) в виде исходников и подключаю их в VS2008. Там же в студии через Makefile компилирую. Отладку, симуляцию можно делать где угодно. Переключение компилятора в Defines.h (одном месте). Моделируемая схема: Example.dsn — Proteus ISIS 7.6. Вся необходимая инфа по сборке исходника в плане используемых портов и пинов находится в файле: Configuration.hХочу собрать вирутальную модель модуля АСУТП, работающего по MODBUS (припомощи com2com или аналога). После этого: - найти свободный OPC сервер и установить на компе; - подключить модель Proteus к OPC серверу через COM-порт и MODBUS; - взять китайску подделку а-ля iPad с версией Android не менее 1.6; - найти OPC-клиент на Java для Android; - написать самопальный HMI, который по WiFi будет подсоединяться через OPC-клиент к OPC-серверу; - повесить планшетник на стенку, приделать в модели Протеуса 1-Wire термометр и любоваться на планшетнике температуру в модели. ------------------------------------ Кто-нить занимался чем-то подобным? В смысле кросс-компиляторности. Интересует использование строк, которые хранятся в памяти программ, т.е. универсальный подход для IAR и GCC.
Просто когда-то я был привлёчён вот к такому проектик для AVR'ки. Мягко говоря, он мне показался слегка запутанным и кроме самого кода никаких больше доков. Эту схемку нарисовала уже студия 2008. Самый крайний правый класс - это пример того как не надо проектировать классы  он у меня в несколько экранов даже в таком виде не помещается.
Сообщение отредактировал uni - Jul 17 2011, 21:07
--------------------
Россия навсегда!
|
|
|
|
|
 |
Ответов
|
Jul 20 2011, 19:09
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
QUOTE (uni @ Jul 18 2011, 00:07)  Цели: 1. Проектирование сверху (UML2). 2. Использование удобной IDE VS2008. 3. Рабочая виртуальная модель для тестов. При таком подходе следовало бы опереться на методологию TDD. Пунктом 1.а создавать тест, пунктом 1.б создавать тестируемый модуль. Пунктом 2.а запускать сборку модульных тестов и выполнять их. При успешном прохождении модульных тестов, делать тестовую сборку всего приложения, и опять запускать тесты (или тестера  ).
|
|
|
|
|
Jul 21 2011, 04:03
|

Участник

Группа: Участник
Сообщений: 31
Регистрация: 5-04-06
Из: Екатеринбург
Пользователь №: 15 809

|
Цитата(ig_z @ Jul 21 2011, 01:09)  При таком подходе следовало бы опереться на методологию TDD. Пунктом 1.а создавать тест, пунктом 1.б создавать тестируемый модуль. Пунктом 2.а запускать сборку модульных тестов и выполнять их. При успешном прохождении модульных тестов, делать тестовую сборку всего приложения, и опять запускать тесты (или тестера  ). Принято  По поводу тестирования. Понятия не имею как писать тесты под МК, но думается мне, что если что-то подобное делать, то можно тестировать ПО через Proteus (эмулируемый COM порт), либо через реальный интерфейс с реальным железом. Не знаю как это будет выглядеть. Не тестировать же классы на ПК - среда не та. -------------------------------- neiver, я прочитал Вашу статью про указатели. Получается, что перегрузка методов в avr-gcc не пашет именно для такого случая? В IAR'е я могу написать просто дополнительный метод с другим типом параметра для чтения, без использования шаблонов. Жалко, однако, это больше на костыль похоже для моего случая. Буду думать. -------------------------------- Что касаемо OPC, то он нужен не для Android, а для Java. Какая разница вообще платформа. Это открытый интерфейс для работы в промышленности. Я потому к нему и веду. Если будет завязка: MODBUS + OPC, то можно будет эту поделку вполне реально применять совместо с огромной кучей имеющегося софта АСУТП верхнего уровня. Вот в чём смысл то. Поделки на AVR типа зажигания светодиодов, чтения температуры и т.д. уже пора оставить в прошлом  Давай-те чё-нить посерьёзней. К тому же, если я смогу реализовать эту свою задумку, то применение такого "шаблона" проектирования на C++ можно будет использовать и в простых проектах. Не обязательно совмещать такую кучу всего в одном проекте. Зато, если ты знаешь, что ЭТО работает в сложном проекте, то в малом будет и подавно. Цитата(MrYuran @ Jul 20 2011, 23:07)  Смысла в этом нету никакого, поскольку ОРС под андроид нету вообще. Ввиду нахренникомуненужности. Видал статейку однажды, как в андроид встраивают драйвера FTDI. Вот это ещё можно прикрутить. Либо через ВТ. Ещё раз повторюсь: смысл ОРС сервера в стандартном сопряжении с ОРС-клиентами. При отсутствии готовых клиентов смысл сервера теряется напрочь. Или возможно я чего-то недопонял. Сервер будет не на планшетнике, а на стационарном компе. Смысл в том, чтобы использовать дешёвый ПК с тачскрином (можно КПК, хотя он и есть смартфон на Линуксе) в качестве клиента OPC. Там на борту есть всё: тачскрин, ява, wifi - что ещё нужно для написания юзабельного интерфейса для доступа к промышленной сети? Никто не мешает купить нормальную панель с Windows для тех же целей и писать на WinCC или Intouch. Без разницы будет. Дело в том, что я хочу показать на "простом" примере. А WinCC и Intouch - это не совсем просто
--------------------
Россия навсегда!
|
|
|
|
|
Jul 21 2011, 06:18
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123

|
Цитата(uni @ Jul 21 2011, 08:03)  Не тестировать же классы на ПК - среда не та. Почему нет? БОльшую часть встроенного приложения можно успешно тестировать на ПК - модульные тесты рулят. На целевой платформе нужно тестировать тоько низкоуровневый код, работающий непосредственно с железом. Тестирование на целевой платформе должно быть сведено к разумному минимуму. По поводу OPC и COM/DCOM в частности, те, кто использовал эти технологии 10 лет назад сейчас активно от них избавляются в пользу веб служб. У DCOM очень большие проблемы обеспечения безопасности в распределённых сетях - админы с него волками воют. COM/DCOM, которые лежат в основе OPC слишком сложные и "замшелые" технологии. То для чего Вы хотите использовать MODBUS + OPC + Android сейчас обычно делается так: Промышленное устройство, которым нам надо управлять удалённо, имеет какой либо стандартный сетевой интерфейс (Ethernet, Wi-fi или еще что-нибудь) и подключено к корпоративной сети. На нём работает веб-служба (не путать в веб пользовательским итерфейсом), позволяющая управлять устройством. Далее, имеется большой и масштабируемый веб-сервер, который знает все устройства в сети и умеет с ними работать. Он предоставляет веб пользовательским итерфейс (WEB-UI), которым работают пользователи. Клиент такой системы может быть на любой платформе - главное, чтоб был браузер, а что это будет не важно - ПК, Android, iPhone, что угодно. Цитата(ReAl @ Jul 21 2011, 10:14)  И вообще пусть Accessor::Read() сразу принимает указатель на uint8_t, раз уж он по-uint8_t-шно читает. Согласен.
|
|
|
|
Сообщений в этой теме
uni Кросс-компиляторный шаблон (EC++, IAR, GCC) Jul 17 2011, 21:07 uni Пример чуть усложнился. Привык я к винде, поэтому ... Jul 19 2011, 11:14 ReAl Цитата(uni @ Jul 19 2011, 14:14) в GCC я ... Jul 19 2011, 12:16 SasaVitebsk Цитата(uni @ Jul 18 2011, 00:07) ух, коро... Jul 19 2011, 12:15 neiver Цитата(uni @ Jul 18 2011, 01:07) Кто-нить... Jul 20 2011, 14:15 ReAl Цитата(neiver @ Jul 20 2011, 17:15) У мен... Jul 20 2011, 14:54 neiver Цитата(ReAl @ Jul 20 2011, 18:54) Код // ... Jul 20 2011, 15:45 uni Таак... попробую ответить по-порядку.
Раз уж я об... Jul 20 2011, 15:41 MrYuran Цитата(uni @ Jul 20 2011, 19:41) Хоть я к... Jul 20 2011, 17:07 ReAl Цитата(uni @ Jul 20 2011, 18:41) Вот мне ... Jul 21 2011, 06:29 MrYuran Цитата(uni @ Jul 20 2011, 19:41) форматы ... Nov 23 2012, 13:26  demiurg_spb Мне Ваш подход нравится. Молодчина! Jul 21 2011, 05:10  ReAl Цитата(uni @ Jul 21 2011, 07:03) Получает... Jul 21 2011, 06:14 uni Читать и писать не успеваю.
Закоммитил новый ... Jul 21 2011, 11:23 uni Ревизия 15.
Совместная работа индикатора и клавиа... Jul 22 2011, 06:40 uni Оказывается китайцы уже давно (года 4, не меньше) ... Jul 22 2011, 13:06 uni Ревизия 16.
Подключена внешняя SRAM на 32К. До эт... Jul 22 2011, 15:02 uni Я сначала не обратил внимания, а оказывается, найд... Jul 22 2011, 23:09 uni Итак, я исправил проект и вернул его в более менее... Jul 23 2011, 07:50 uni Ревизия 18.
Добавил в шаблон (SmartPtr.h) от neiv... Jul 23 2011, 11:22 uni Ревизия 20.
Версия: 0.0.0.74
Добавлена поддержка ... Jul 24 2011, 15:33 uni Вот чего я не видел на многочисленных сайтах, так ... Jul 25 2011, 03:11 uni Некоторые подвижки в шаблоне на примере отладочной... Feb 29 2012, 22:32 uni Ссылка на svn репозиторий:
Шаблоны: https://mysv... Nov 23 2012, 13:06 uni MrYuran, это просто клад, как же меня заколебало G... Nov 23 2012, 14:14 MrYuran Цитата(uni @ Nov 23 2012, 18:14) Спасибо... Nov 23 2012, 14:46  _Артём_ Цитата(MrYuran @ Nov 23 2012, 16:46) Прос... Nov 23 2012, 14:54  SyncLair Цитата(MrYuran @ Nov 23 2012, 18:46) меня... Nov 23 2012, 15:04 uni Я не то, чтобы студии апологет, я привык к Windows... Nov 23 2012, 15:05 uni 6-минутный ролик, демонстрирующий работу простого ... Dec 8 2012, 07:05 uni Обновлены все проекты шаблонов.
Переход всех проек... Oct 26 2013, 08:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|