Перенос программного обеспечения Windows на встроенные операционные системы реального времени

StackOverflow https://stackoverflow.com/questions/106581

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть существующая кодовая база, ориентированная на среду Windows, и, заглядывая в будущее, я хотел бы сделать ее как можно более кроссплатформенной.Я добился некоторого успеха со стандартными дистрибутивами Linux, используя кроссплатформенные библиотеки, но хотел бы распространить это на операционные системы реального времени и / или встроенные системы.

Можно ли было бы перенести большую часть кодовой базы на такие системы, или для этого потребовались бы повторные внедрения, ориентированные на эту среду?Если детали необходимо воссоздавать заново, требует ли разработка для этих систем иного подхода к проектированию?Некоторые поставщики поставляют свои собственные IDE для разработки, это необходимость или мы можем стандартизировать процесс сборки типа GNU toolchain?

Потенциальной выбоиной могут быть различия в управляемости МПК, но без дальнейшего изучения трудно разобраться в особенностях.

ПРИМЕЧАНИЕ: несмотря на то, что в настоящее время работает на базе Windows, не особенно широко используется Win32 API (в основном COM) или типы Windows.

Спасибо

Редактировать::кодовая база - C \C ++

Это было полезно?

Решение

Если вы используете COM-интерфейс Windows (я предполагаю, что здесь вы говорите не о последовательном порту, а об общей объектной модели), ваш код, возможно, потребуется абстрагировать от этого.

Поскольку вы говорите об IPC, то очевидно, что это кодовая база типа многозадачности / мультиобработки.В таком случае вам придется каким-то образом придумать способ справиться с различиями в окружающей среде.

Прежде всего, вы будет нужна какая-то ОСРВ, поскольку ваше приложение является многозадачным.Поскольку вы создали порт для Linux, возможно, вам захочется рассмотреть возможность использования версии Linux реального времени.Это позволило бы свести к минимуму количество портов, которые вам пришлось бы использовать.

Если вы не хотите использовать Linux в качестве встроенной платформы, сделайте свой код совместимым с POSIX (Linux соответствует) и убедитесь, что выбранные вами RTOS поддерживают POSIX.Таким образом, порт для Linux и встроенной платформы были бы в основном одинаковыми.

В итоге COM станет вашим albatros.

Поскольку вы не упомянули об использовании графического интерфейса, мы не будем рассматривать это банка с червяками :)

Другие советы

Если приложение в основном на C и posix, то это не слишком сложно.Встроенные платформы сегодня могут означать почти полную копию XP или Linux, работающую на компактной флэш-карте.

Для графического интерфейса как QT, так и WX имеют встроенные версии, которые рисуют виджеты напрямую.

Наиболее важным шагом является отделение всех функций, зависящих от операционной системы, от логики проекта.

После того, как вы это сделаете, вы сразу увидите, сколько кода вам нужно перенести для миграции на новую ОС, и сможете начать перенос без проблем.

Зависит от возможностей вашей встроенной платформы.Если это 8-разрядная версия, вам предстоит трудный путь, но если это 32-разрядная версия с приличной оперативной памятью и тому подобным, доступно множество кроссплатформенных библиотек с открытым исходным кодом.

Я использовал DirectFB для моего последнего встроенного приложения с графическим интерфейсом оно было легким и приемлемым, но не кроссплатформенным.Думаю, в следующий раз я попробую wxWidgets ( текстовые файлы ).

Мне не нравится использовать GNU dev tools в Windows, так как MS Dev Studio ооочень приятна, чем любые инструменты GNU, но недавно я поиграл с Разработчик настольных компьютеров Wascana который основан на Eclipse и GCC и показывает многообещающие результаты.

Если вы можете указать, какую операционную систему реального времени / встроенную ОС вы используете, рассматривали ли вы Windows CE?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top