Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Запуск системы, быстрая активация устройств > Построение встраиваемых систем > Статьи руководства > Работа с пакетами поддержки плат (ППМ, BSP)



Работа с пакетами поддержки плат (ППМ, BSP)

Общие принципы работы с пакетами поддержки плат

В этой статье:

Знакомство с пакетом поддержки платы
Использование пакета поддержки платы в командной строке
Структура пакета поддержки платы
Подкаталог prebuilt
Подкаталог install
Подкаталог src
Сборка исходного кода в командной строке
Поддержка дополнительных устройств
Передача образа ОС на плату
Передача образа ОС
Работа с файловой системой флеш-памяти
Неструктурированные (raw) разделы
Разделы файловой системы флеш-памяти
Исходный код файловой системы флеш-памяти
Как создать раздел?
Тестирование ЗОСРВ «Нейтрино» на плате
Дальнейшие действия
Соглашение об именах файлов

Знакомство с пакетом поддержки платы

После установки комплекта разработчика для ЗОСРВ «Нейтрино» можно скачивать пакеты поддержки плат (Board Support Package, BSP) для конкретных процессоров в публичном репозитории, либо запрашивать напрямую у компании «СВД Встраиваемые Системы». Эти пакеты позволяют запускать ЗОСРВ «Нейтрино» на различных аппаратных платформах.

Как правило, в состав пакета поддержки платы входят следующие компоненты:

Пакет поддержки платы размещается в архиве, имя которого соответствует официальному названию соответствующей платы и/или отладочной платформы. BSP поставляются для инструментальных систем под управлением ОС Windows и Linux.

Компоненты пакета поддержки платы предоставляются в виде исходного кода, если это не противоречит обязательствам компании (в противном случае компонент предоставляется только в двоичном виде). Пакет поддержки платы хранится в одном архиве zip, который предназначен для всех инструментальных систем.

Чтобы воспользоваться пакетом поддержки платы, необходимо распаковать zip-архив и выполнить его сборку в командной строке либо импортировать его в комплект разработчика для ЗОСРВ «Нейтрино».

Использование пакета поддержки платы в командной строке

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

  1. Измените каталог, в который будет извлечен пакет поддержки платы (например, /home/username). Поскольку архив распаковывается в текущий каталог, необходимо создать специальный каталог для пакета поддержки платы. Пример:

    mkdir /home/username/имя_bsp

  2. Распакуйте пакет поддержки платы в созданный каталог:

    cd /home/username/имя_bsp unzip bspname.zip

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

Все необходимое для сборки, за исключением стандартных системных заголовочных файлов, находится в каталоге пакета поддержки платы. Все результаты сборки также устанавливаются в этот каталог. Makefile, которые входят в состав пакета поддержки платы, копируют содержимое каталога prebuilt в каталог install. Двоичные файлы создаются из исходного кода с помощью заголовочных файлов и библиотек объектных модулей, которые находятся в каталоге install.

Структура пакета поддержки платы

После распаковки архива с BSP его корневой каталог имеет следующую структуру:

рабочий_каталог_bsp/ |--> images/ |--> install/ |--> prebuilt/ | |--> bin/ | |--> lib/ | |--> sbin/ | |--> usr/ | | |--> bin/ | | |--> include/ | | |--> lib/ | | `--> sbin/ | | | `--> target/ | `--> src/ `--> hardware/ |--> devc/ |--> devnp/ |--> flash/ |--> ipl/ |--> startup/ `--> ...

Каталог, в который установлен пакет поддержки платы (например, /home/username/my_BSPs/integrator), обозначается в документации как рабочий_каталог_bsp. В его состав входят следующие подкаталоги:

Подкаталог images содержит загрузочные образы, которые генерируются в результате сборки, и, как минимум, Makefile, который управляет сборкой. В этом каталоге также могут находиться:

Подкаталог prebuilt

Подкаталог prebuilt содержит собранные двоичные файлы и заголовочные файлы, которые входят в состав BSP.

Перед сборкой пакета поддержки платы все содержимое каталога prebuilt копируется в каталог install с сохранением структуры путей.

Для обработки зависимостей библиотеки, заголовочные и другие файлы, которые находятся в каталоге ./prebuilt, необходимо корректно копировать в каталог ./install, вызывая утилиту make в рабочем каталоге пакета поддержки платы.

«Корень» каталога prebuilt должен иметь такую же структуру, как корневой каталог системы. Каталог целевой системы и usr повторяют структуру каталога /.


Note: Все двоичные файлы для конкретного процессора находятся в каталоге, имя которого соответствует типу процессора.

Например, каталог prebuilt может выглядеть следующим образом:

Пример каталога prebuilt:

prebuilt/ |--> boot/ | |--> build/ | | `--> board.build | | | `--> sys/ | |--> ipl-board | `--> startup-board | |--> ppcbe/ | |--> lib/ | | |--> lib*S.a | | `--> libstartup.a | | | `--> sbin/ | `--> devb-eide | |--> sbin/ | |--> devc-ser* | |--> devnp-* | `--> pci-* | `--> usr/ `--> include/ `--> ...

Подкаталог install

Содержимое каталога install формируется в начале процесса сборки пакета поддержки платы. Сначала в него копируются все файлы из каталога prebuilt, а по мере компиляции — все сгенерированные двоичные файлы. Файлы, которые хранятся в каталоге install, первыми используются утилитой mkifs.

Перед сборкой компонентов необходимо сначала выполнять сборку исходных кодов на верхнем уровне BSP:

cd рабочий_каталог_bsp make

Эти команды выполняют сборку всех исходных кодов в каталоге ./src и корректно настраивают подкаталоги ./install и ./images.

По завершении начальной сборки можно пересобирать отдельные файлы с исходным кодом.


Note: После внесения изменений в библиотеку или заголовочный файл необходимо пересобирать исходный код и копировать изменения в каталог ./install командой:

make install


Подкаталог src

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

Каталог hardware содержит отдельные подкаталоги для драйверов символьных устройств, флеш-накопителей, сетевых драйверов, IPL, startup и других компонентов пакета поддержки платы.


Note: В каталоге src находятся один или несколько главных файлов построения загрузочного образа (как правило, src/hardware/startup/boards/плата/build). При выполнении команды

make install

файлы построения загрузочного образа копируются в файл install/target/boot/build/board.build. Затем корневой Makefile создает в подкаталоге images ссылки на эти файлы или их копии. Необходимо внести изменения в нужный файл построения загрузочного образа и сохранить их.


Каталог lib содержит отдельные подкаталоги для библиотек, которые используются драйверами и другими утилитами, входящими в состав пакета поддержки платы.


Note: Некоторые драйверы (например, сетевой драйвер или драйвер главного контроллера USB) реализованы в виде совместно используемых объектов, но их исходные коды находятся в каталоге hardware.

Каталог utils содержит отдельные подкаталоги со вспомогательными утилитами для платы. Некоторые утилиты для работы с оборудованием также находятся в каталоге hardware/support.

Каталог services содержит отдельные подкаталоги дополнительных служб, которые не входят в базовую конфигурацию.

Сборка исходного кода в командной строке


Note: При сборке BSP из исходного кода иногда появляются предупреждения от инструментов, которые участвуют в его генерации, например:
  • ntox86-objcopy: Warning: Output file cannot represent architecture UNKNOWN!
  • ntox86-ld: Warning: could not find any targets that match endian ness requirement

Эти предупреждения возникают при преобразовании формата файла, если невозможно сохранить его содержимое (порядок старшинства байт, архитектуру процессора и др.) либо отсутствует необходимая информация. Возникновение таких предупреждений является нормальным и не указывает на проблемы при сборке.


Чтобы выполнить сборку пакета поддержки платы в командной строке, необходимо перейти в его корневой каталог.

Соберите исходный код с помощью команды make. В Makefile указываются следующие цели:

all
Активирует цели install, links и images.
prebuilt
Выполняет рекурсивное копирование содержимого каталога prebuilt в каталог install.
install
Активирует цель prebuilt и выполняет следующие команды в каталоге src:
links
Создает в каталоге install/процессор/boot/build/плата.build символьную ссылку (копию в ОС Windows) на файл images/плата.build.
images
Переходит в каталог images и выполняет в нем Makefile. Этот Makefile генерирует файл IFS из файла построения загрузочного образа, ссылка на который формируется командой make links, а также выполняет всю необходимую дополнительную работу (например, выравнивание IPL или преобразование в другой формат).

Если цель не указана, утилита make активирует цель all.


Note: Рекомендуется собирать образ ОС с использованием утилиты make. Если она вызывается непосредственно, необходимо указывать путь к двоичным файлам с помощью параметра -r. Дополнительную информацию см. в описании утилиты mkifs.

Поддержка дополнительных устройств

Все платы оснащены различным оборудованием — устройствами ввода, последовательными портами, флеш-накопителями и PCI-устройствами. Каждый пакет поддержки включает в себя файл построения загрузочного образа, с помощью которого можно генерировать образ ОС для соответствующей платы. Этот файл построения загрузочного образа находится в каталоге рабочий_каталог_bsp/src/hardware/startup/boards/плата и содержит команды запуска драйверов устройств (некоторые из которых могут быть закомментированы). Чтобы изменить или раскомментировать эти команды, необходимо отредактировать файл построения загрузочного образа. Вместе с командой также необходимо раскомментировать все строки, которые помещают в образ ее двоичные файлы.

Дополнительную информацию см. в документации к BSP и содержимом файла построения загрузочного образа; дополнительную информацию о них см. в описании утилиты mkifs.

После внесения изменений в файл построения загрузочного образа соберите образ ОС, как описано ранее в этой главе.

Передача образа ОС на плату

После завершения сборки образа ОС необходимо передать его на плату.

Интегрированная среда разработки взаимодействует с целевой системой и позволяет скачивать образ ОС через последовательный интерфейс или по сети и с помощью протокола TFTP (Trivial File Transfer Protocol, простейший протокол передачи файлов). Если на плате отсутствует ROM-монитор, то, скорее всего, службы скачивания будут недоступны для использования, и необходимо передавать образ на плату другим способом (например, через интерфейс JTAG).

Передача образа ОС

Существуют несколько способов передачи образа ОС:

Действие Способ загрузки
Загрузка образа по сети (например, через TFTP) Сеть

Загрузка образа по последовательному порту (например, COM1 или COM2) ROM-монитор

Запись IPL и образа ОС на загрузочное флеш-устройство с последующей полной загрузкой системы из флеш-памяти IPL и ОС

Запись IPL на загрузочное флеш-устройство с последующей загрузкой образа ОС через последовательный порт IPL и загрузочное флеш-устройство

Генерация файловой системы флеш-памяти с последующим размещением в ней различных файлов и утилит Файловая система флеш-памяти

Метод передачи образа ОС зависит от конфигурации платы. Доступные методы для конкретной платы указаны в пакете ее поддержки; плата может поддерживать как некоторые, так и все из перечисленных методов загрузки образа.

Работа с файловой системой флеш-памяти

Драйверы файловых систем флеш-памяти реализуют POSIX-подобный интерфейс для работы с флеш-накопителями типа NOR. Эти драйверы представляют собой отдельные исполняемые файлы, которые содержат код файловой системы и код взаимодействия с флеш-накопителем. Существуют различные версии драйверов файловых систем флеш-памяти для различных встраиваемых систем и карт памяти PCMCIA.

Имена драйверов файловых систем флеш-памяти имеют вид devf-система, где система соответствует названию встраиваемой системы. Например, драйвер devf-800fads предназначен для отладочной платы 800FADS PowerPC.

Чтобы узнать, какие устройства флеш-памяти поддерживаются на текущий момент, обратитесь к следующим источникам:

Драйверы файловых систем флеш-памяти поддерживают один или несколько логических флеш-накопителей, каждый из которых называется разъемом и включает в себя непрерывную область флеш-памяти. Например, в системе с двумя различными типами флеш-устройств, которые расположены по разным адресам, при этом одно устройство содержит загрузочный образ, а другое — файловую систему флеш-памяти, каждый флеш-накопитель находится в отдельном разъеме.

Каждый разъем может состоять из одного или нескольких разделов. Поддерживаются два типа разделов:

Неструктурированные (raw) разделы

Неструктурированный раздел разъема — любой раздел, в котором отсутствует файловая система флеш-памяти. Драйвер файловой системы флеш-памяти распознает только файловую систему флеш-памяти. Неструктурированный раздел может содержать файловую систему образа или данные приложений.

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

Разделы файловой системы флеш-памяти

Раздел файловой системы флеш-памяти содержит POSIX-подобную файловую систему, которая хранит данные на флеш-устройстве в формате, специфичном для ЗОСРВ «Нейтрино». Этот формат несовместим со стандартами Microsoft FFS2 и PCMCIA FTL.

Файловая система флеш-памяти позволяет беспрепятственно создавать и удалять файлы и каталоги. Она освобождает пространство, которое занимают удаляемые файлы, с помощью механизма, аналогичного сбору мусора.

Файловая система флеш-памяти поддерживает все стандартные утилиты POSIX, такие как ls, mkdir, rm, ln, mv, и cp. В ЗОСРВ «Нейтрино» также существуют утилиты для управления файловыми системами флеш-памяти:

flashctl
удаляет, форматирует и монтирует разделы флеш-памяти
deflate
сжимает файлы, которые находятся в файловых системах флеш-памяти
mkefs
создает файлы образов файловых систем флеш-памяти

Файловая система флеш-памяти поддерживает все стандартные POSIX-функции ввода/вывода, такие как open(), close(), read() и write(). Специальные функции, такие как стирание данных, поддерживаются вызовом devctl().

Исходный код файловой системы флеш-памяти

Каждый пакет поддержки платы содержит двоичный и исходный коды подходящего драйвера файловой системы флеш-памяти, однако платформа разработки ПО ЗОСРВ «Нейтрино» включает в себя соответствующие заголовочные файлы и библиотеки.

Выполнение команды make в каталоге рабочий_каталог_bsp приводит к генерации двоичного кода файловой системы флеш-памяти. Обычно не требуется пересобирать драйвер файловой системы флеш-памяти, если размер конфигурации на флеш-накопителе платы (количество, размеры и типы частей, чередование и др.) не изменялся.


Note: Если IPL объединен с файловой системой образа, необходимо смещать начало файловой системы флеш-памяти как минимум на размер IPL и файловой системы образа. Например, если комбинированный образ с IPL файловой системы образа загружается на флеш-накопитель с нулевым смещением, во избежание перезаписи комбинированного образа файловая система флеш-памяти должна начинаться со смещением, равным размеру комбинированного образа +1. В противном случае необходимо создать раздел.

Как создать раздел?

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

  1. запустить драйвер файловой системы флеш-памяти

  2. стереть все содержимое флеш-накопителя

  3. отформатировать раздел

  4. завершить работу драйвера файловой системы флеш-памяти

  5. перезапустить драйвер файловой системы флеш-памяти


Note: В следующем примере рассматривается плата Renesas Biscayne, которую можно загружать из DMON или флеш-памяти.

  1. Чтобы загрузиться из DMON, введите следующую команду запуска драйвера файловой системы флеш-памяти:

    devf-generic -s0xe8000000,32M &

  2. Чтобы загрузиться с флеш-накопителя, введите следующую команду запуска драйвера файловой системы флеш-памяти:

    devf-generic -s0x0,32M

    В каталоге /dev появляется раздел fs0p0.

  3. Чтобы подготовить для него область памяти, необходимо полностью удалить содержимое флеш-накопителя. Введите команду

    flashctl -p/dev/fs0 -ev

  4. Чтобы отформатировать раздел, введите команду

    flashctl -p/dev/fs0p0 -f

  5. Завершите работу драйвера файловой системы флеш-памяти:

    slay devf-generic

  6. Наконец, перезапустите драйвер:

    devf-generic &

В системе появятся следующие записи:

Запись Описание
/dev/fs0p0 Образ ОС (32 Мбайт)
/dev/fs0p1 Раздел файловой системы флеш-памяти (32 Мбайт)

Тестирование ЗОСРВ «Нейтрино» на плате

Для тестирования ЗОСРВ «Нейтрино» можно использовать встроенные команды командного интерпретатора или команды, которые входят в состав образа ОС. Например, если ввести команду ls, на экране отображается список каталогов, поскольку утилита ls находится в образе системы по умолчанию.

Дальнейшие действия

Теперь вы хорошо знакомы с применением BSP в разработке встраиваемой системы и можете приступать к работе над приложениями. Следующая таблица содержит полезные ссылки на документацию ЗОСРВ «Нейтрино», которые могут помочь в освоении конкретных тем:

Тема Ссылка
Написание простейшей программы Начало работы
Настройка драйвера Ethernet Настройка Ethernet соединений
Подключение USB устройств USB устройства
Написание менеджеров ресурсов Разработка менеджеров ресурсов

Для получения дополнительной информации см. следующие главы настоящего руководства:

Дополнительная информация Ссылка
Организация загрузочных образов Создание загрузочного образа
IPL Руководство по разработке начального загрузчика (IPL)
модуль startup-* Руководство по разработке модуля startup

Соглашение об именах файлов

В пакетах поддержки плат для ЗОСРВ «Нейтрино» используются следующие соглашения об именах файлов:

Часть имени файла Описание Пример
.bin Суффикс файлов двоичного формата ifs-artesyn.bin
.raw Суффикс "сырых" загрузочных образов ifs-artesyn.raw
.build Суффикс файла построения загрузочного образа sandpoint.build
efs- Префикс файла встроенной файловой системы (генерируется mkefs) efs-sengine.srec
.elf Суффикс исполняемого файла формата ELF (Executable and Linking Format) ipl-ifs-mbx800.elf
ifs- Префикс файла файловой системы образа (генерируется mkifs) ifs-800fads.elf
ipl- Префикс файла начального загрузчика IPL ipl-eagle.srec
.openbios Суффикс файла формата OpenBIOS ifs-walnut.openbios
.prepboot Суффикс файла формата Motorola PRePboot ifs-prpmc800.prepboot
.srec Суффикс файла с S-записями ifs-malta.srec




Предыдущий раздел: перейти