SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
Продукты QNX
Операционная система реального времени QNX Neutrino
Операционная система реального времени QNX4
Комплект разработчика QNX Momentics
Встраиваемые СУБД
Аппаратное обеспечение
Главная страница > Продукты > Продукты QNX > Операционная система реального времени QNX Neutrino > Пакеты поддержки плат (BSP) > Руководство по исходным текстам BSP-пакетов и драйверов Сделать страницу стартовой Послать ссылку коллеге Версия для печати

Руководство по исходным текстам BSP-пакетов и драйверов

Введение

В рамках гибридной лицензионной модели компания QNX делает общедоступным исходный текст BSP-пакета и драйверов. Исходный код сделан доступным в соответствии с Лицензией разработчика QNX (QNX Development Licenses, или QDL) и Лицензией об авторских правах Apache версии 2.0. На начальной стадии доступ к коду будет сделан ограниченным: не будет предоставляться никаких версий библиотек, служб или утилит. Процесс выпуска исходных текстов компонентов будет постепенным по мере того, как мы проверим для всех соответствующих кодов права на интеллектуальную собственность.

Начало

Лучше всего выполнять компоновку кода BSP-пакета и драйвера в области технологической подготовки (staging area). Область технологической подготовки представляет собой каталог, используемый файлами QNX BSP Makefiles для инсталляции драйвера и поиска заголовочных файлов и утилит, а также для предварительной компоновки двоичных файлов (утилит, библиотек). Область технологической подготовки может быть простым каталогом или каталогом куда был проинсталлирован BSP-пакет. Лучше использовать каталог с распакованным BSP-пакетом, чем простой каталог. В полный пакет включены утилиты, заголовочные файлы и библиотеки, необходимые для корректной работы драйвера. Самым простым способом создания подобной структуры является загрузка текущей версии BSP-пакета для целевого оборудования с портала Кузница 27 (Foundry27) и разархивирование его в выбранный каталог.

Относительно областей технологической подготовки необходимо помнить следующие важные моменты:

  • в них возможно выполнение компоновки из исходного кода;
  • в этих областях процесс компоновки/инсталляции гарантирует защиту от "затирания"/наложения на стандартную инсталляцию;
  • команда make install произведет инсталляцию бинарного кода драйвера в каталог, указанный в переменной окружения QCONF_OVERRIDE.

В любом случае полезно выполнить компоновку исходного кода QNX, но особенно важным это становится, когда выполняется компоновка дерева BSP и драйверов, поскольку команда make install обычно должна начинаться с корневого уровня, чтобы сборка всех компонентов выполнялась в правильном порядке при удовлетворении всех зависимостей.

Замечание: Поскольку полное дерево разработки загружается со множеством ветвей, то очень важно сделать начальную установку области технологической подготовки на транке (trunk) или в пределах желаемой ветви. Мы рекомендуем иметь для каждой ветви разработки свою область технологической подготовки, чтобы избежать смешивания версий.

По ссылке OS Source Build можно найти описание того, как создавать область технологической подготовки и файл qconf-override.mk (см. шаги 2, 3 и 4). Важно отметить следующее: если не выполнить корректно процедуру начальной установки, есть вероятность записать поверх или испортить свою базовую инсталляцию, что вызовет необходимость деинсталляции/переинсталляции для исправления ситуации.

Пара замечаний по поводу переменной окружения QCONF_OVERRIDE. В ОС Windows, работая через оболочку DOS, используйте команду SET (поскольку экспорт отсутствует). Переменную окружения можно также добавить к имеющемуся списку следующим образом. Щелкните правой кнопкой мыши на иконке "Мой компьютер" и выберите пункт "Свойства". В открывшемся окне перейдите на вкладку "Дополнительно", далее щелкните по кнопке "Переменные среды" (в левом нижнем углу окна для ОС Windows XP). В новом окне щелкните по кнопке "Создать" и введите имя переменной QCONF_OVERRIDE, ее значение и щелкните по кнопке "ОК". В следующий раз, когда будет запущена оболочка DOS, переменная QCONF_OVERRIDE уже будет установлена. Если вы работаете резидентно (или под ОС Linux), то можно добавить в ваш сценарий .profile команду экспорта, и тогда переменная автоматически устанавливаться, как только будет запущена новая терминальная сессия.

Организация дерева

Исходный код выкладывается, начиная с верхнего уровня, по аналогии с другими проектами. Существует главный (trunk) каталог, в котором содержится последняя версия исходного кода разработки. Следует иметь в виду, что все исходные коды в главном каталоге в том или ином виде будут использоваться в итоговом продукте. Однако мы не можем гарантировать, что исходный код в главном каталоге будет скомпонован без ошибок или будет работать корректно, даже если компоновка пройдет успешно. Конечно, мы постараемся приложить максимум усилий для того, чтобы исходный код в главном каталоге компоновался и работал корректно, однако не стоит забывать, что ошибки возможны, — ведь это особенность такого интерактивного процесса разработки!

Код в ветви разработки является стабильным (компонуется и работает корректно) и выпускается в составе официальных релизов. В нем может также содержаться исходный код для экспериментальных разработок, который может неблагоприятно влиять на главную ветвь, или "специализированный" код, который может не войти в состав общего продукта. Для версий 6.4.0 и 6.3.2 были созданы соответствующие ветви: branches/6.4.0/trunk и branches/6.3.0/trunk. В этих ветвях содержатся исходные коды для создания исправлений и обновлений для версий 6.4.0 и 6.3.2, которые при необходимости будут выпускаться в виде патчей обновления для версий 6.x.x.x.

Тег-каталог используется для размещения BSP-пакетов в формате SVN. Выгрузка по BSP-тегу эквивалентна операции распаковки последней версии архива для конкретного BSP-пакета (c соответствующей версией дистрибутива QNX Momentics). Начиная с версии 6.4.1 QNX Momentics, существует возможность непосредственно импортировать SVN-теги и выполнять компоновку BSP-пакета (подробнее см. документацию по IDE).

Ниже приведен пример структуры дерева:

  • bsp
    • /trunk/
      • hardware – содержатся исходный код драйверов устройств, startup и IPL
      • lib – библиотеки (не заполняется)
      • services – службы BSP и драйвера, сгруппированы в алфавитном порядке (не заполняется)
      • tools – инструменты BSP и драйвера (не заполняется)
      • utils – утилиты BSP и драйвера, сгруппированы в алфавитном порядке (не заполняется)
    • branches/6.4.0
      • /trunk/
        • hardware – содержатся драйверы устройств, код начального запуска и начального загрузчика IPL
        • lib – библиотеки (не заполняется)
        • services – службы BSP и драйвера, сгруппированы в алфавитном порядке (не заполняется)
        • tools – инструменты BSP и драйвера (не заполняется)
        • utils – утилиты BSP и драйвера, сгруппированы в алфавитном порядке (не заполняется)
    • branches/6.3.0(не заполняется)
      • /trunk/
        • hardware - содержатся драйверы устройств, код начального запуска и начального загрузчика IPL
        • lib - библиотеки (не заполняется)
        • services - службы BSP и драйвера, сгруппированы в алфавитном порядке (не заполняется)
        • tools - инструменты BSP и драйвера (не заполняется)
        • utils - утилиты BSP и драйвера, сгруппированы в алфавитном порядке (не заполняется)

Как получить исходные тексты?

Исходные тексты для BSP-пакетов и драйверов можно получить в репозитории, находящемся по адресу http://community.qnx.com/sf/scm/do/listRepositories/projects.bsp/scm.

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

  • svn checkout --username <userid> http://community.qnx.com/svn/repos/bsp

где <userid> является адресом электронной почты, используемым для создания вашей учетной записи на сайте QNX. Для загрузки исходных текстов только главной ветви разработки используйте команду:

  • svn checkout --username <userid>
    http://community.qnx.com/svn/repos/bsp/trunk

Для загрузки исходных текстов только ветви разработки для версии 6.4.0 используйте команду:

  • svn checkout --username <userid> http://community.qnx.com/svn/repos/bsp/branches/6.4.0/trunk

Для загрузки исходных текстов только ветви разработки для версии 6.3.0 используйте команду:

  • svn checkout --username <userid> http://community.qnx.com/svn/repos/bsp/branches/6.3.0/trunk

ЗАМЕЧАНИЕ: На настоящий момент нет доступной информации для ветви с версией 6.3.0.

Как запустить компоновку исходного кода?

Если вы не создали корректно область технологической подготовки и соответствующий файл qconf-override.mk, существует вероятность повреждения стандартной инсталляции.

Если вы не подготовили корректно область технологической подготовки, установите патч srcversion для вашего дистрибутива, используя раздел загрузки проекта BSP в качестве корневого.

  1. cd $QNX_TARGET/../..
  2. tar -xpf srcversion-patch-6.X.X.tar
srcversion-patch-6.4.1.tar
srcversion-patch-6.4.0.tar
srcversion-patch-6.3.2.tar

Замечание: Возможность распаковки в другие разделы пока не поддерживается. Как следствие могут возникать проблемы с разрешением зависимостей, если вы не укажете инсталляционный каталог ранее загруженного BSP-пакета в качестве области технологической подготовки.

Из главного каталога выбранной ветви разработки выполните команду:

  • make install

Или, если вы хотите выполнить компоновку для конкретного процессора и варианта, команда должна быть следующей:

  • make CPULIST=arm VARIANTLIST=le install

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

Замечание: При запуске компоновки в каталоге верхнего уровня произойдет сборка необходимых компонентов в правильном порядке, поэтому из вашей области технологической подготовки будут удовлетворяться все зависимости. Простое выполнение команды (cd <подкомпонент> && make) может не работать, пока вы не произведете полную компоновку хотя бы один раз.

Замечание 2: Установка патча srcversion для QNX 6.4.0 должна выполняться суперпользователем root.

  1. cd $QNX_TARGET/../..
  2. tar -xpf srcversion-patch-6.4.0.tar

Источник: http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/Bsp_source_guide

Рассказать друзьям:

     Рейтинг@Mail.ru