Проблемы при переносе кода c / c ++ на VxWorks - PullRequest
3 голосов
/ 09 июня 2009

Мне нужно портировать кодовую базу c / c ++, которая уже поддерживает Linux / Mac, на VxWorks. Я довольно новичок в VxWorks. Не могли бы вы дать мне знать, какие возможные проблемы могут возникнуть?

Ответы [ 4 ]

3 голосов
/ 10 июня 2009

Недавно мы сделали обратное преобразование - мы перенесли код с машины PowerPC под управлением VxWorks на систему Intel под управлением Linux. Я не помню, чтобы я сталкивался со многими трудностями в отношении различий между операционными системами. Очевидно, что любой вызов API для конкретной ОС должен будет измениться, и мы не широко использовали эти функции.

Нашей самой большой проблемой была не разница между операционными системами, а разница между PowerPC и оборудованием Intel. PowerPC - это Big Endian, а Intel - Little Endian. Наше программное обеспечение написано на C и сделало много предположений относительно порядка байтов, и это было абсолютным кошмаром, чтобы заставить его работать снова гладко. Существовали буквально сотни структур, которые определяли битовые поля и должны были быть переупорядочены для правильной работы. В итоге мы реализовали в GCC #pragma, которая обращала эти битовые поля при их определении (#pragma reverse_bitfields).

2 голосов
/ 04 августа 2009

Многое зависит от того, на какую версию VxWorks вы нацеливаетесь, и от самого целевого процессора. Одна вещь, с которой вам придется иметь дело, это то, что нет ни системы постраничной памяти, ни виртуальной памяти - у вас есть то, что есть. Сама среда намного более ограничена, чем система Linux. Иногда работа, связанная с переносом приложений, полностью возвращается к уровню архитектуры, поскольку ресурсы не так безграничны, как в linux.

Некоторые другие советы:

  • лицензия vxworks такая, что у вас есть доступный исходный код
  • использовать реальную физическую цель как можно скорее в цикле разработки; не рассчитывайте на симуляторы, точно подражающие цели
  • при необходимости используйте TSR (запросы технической поддержки); Я не знаю, как они структурируют покупку права на создание TSR, но не позволяйте никому дешеветь на этих
1 голос
/ 30 июля 2009

В зависимости от того, на каком процессоре вы работаете с порядком байтов VxWorks, могут возникнуть проблемы с упаковкой структуры и выравниванием памяти. В прошлый раз, когда я использовал VxWorks, он поддерживал слой pthreads, сокетов и мьютекса, который достаточно легко имитировал среды unix.

0 голосов
/ 10 июня 2009

Трудно сказать, не зная больше о портируемом приложении: какие библиотеки linux и вызовы API он использует? Является ли он автономным или для своей работы он использует множество инструментов и сценариев командной строки linux?

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

...