Общие принципы работы с пакетами поддержки плат
В этой статье:
После установки комплекта разработчика для ЗОСРВ «Нейтрино» можно скачивать пакеты поддержки плат (Board Support Package, BSP) для конкретных процессоров в публичном репозитории, либо запрашивать напрямую у компании «СВД Встраиваемые Системы». Эти пакеты позволяют запускать ЗОСРВ «Нейтрино» на различных аппаратных платформах.
Как правило, в состав пакета поддержки платы входят следующие компоненты:
Пакет поддержки платы размещается в архиве, имя которого соответствует официальному названию соответствующей платы и/или отладочной платформы. BSP поставляются для инструментальных систем под управлением ОС Windows и Linux.
Компоненты пакета поддержки платы предоставляются в виде исходного кода, если это не противоречит обязательствам компании (в противном случае компонент предоставляется только в двоичном виде). Пакет поддержки платы хранится в одном архиве zip, который предназначен для всех инструментальных систем.
Чтобы воспользоваться пакетом поддержки платы, необходимо распаковать zip-архив и выполнить его сборку в командной строке либо импортировать его в комплект разработчика для ЗОСРВ «Нейтрино».
Чтобы вручную установить пакет поддержки платы из архива рекомендуется создать каталог по умолчанию с таким же именем, как у пакета поддержки платы, и распаковать в него архив:
/home/username
). Поскольку архив распаковывается в текущий каталог, необходимо создать специальный каталог для пакета поддержки платы. Пример:
Каждый пакет поддержки платы использует каталог, в который он скопирован, в качестве корневого. Независимо от местоположения этого каталога выполнение в нем утилиты 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
содержит собранные двоичные файлы и заголовочные файлы, которые входят в состав BSP.
Перед сборкой пакета поддержки платы все содержимое каталога prebuilt
копируется в каталог install
с сохранением структуры путей.
Для обработки зависимостей библиотеки, заголовочные и другие файлы, которые находятся в каталоге ./prebuilt, необходимо корректно копировать в каталог
./install, вызывая утилиту make в рабочем каталоге пакета поддержки платы.
«Корень» каталога prebuilt
должен иметь такую же структуру, как корневой каталог системы. Каталог целевой системы и usr повторяют структуру каталога /
.
![]() | Все двоичные файлы для конкретного процессора находятся в каталоге, имя которого соответствует типу процессора. |
Например, каталог 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
формируется в начале процесса сборки пакета поддержки платы. Сначала в него копируются все файлы из каталога prebuilt
, а по мере компиляции — все сгенерированные двоичные файлы. Файлы, которые хранятся в каталоге install
, первыми используются утилитой mkifs.
Перед сборкой компонентов необходимо сначала выполнять сборку исходных кодов на верхнем уровне BSP:
cd рабочий_каталог_bsp make
Эти команды выполняют сборку всех исходных кодов в каталоге ./src
и корректно настраивают подкаталоги ./install
и ./images
.
По завершении начальной сборки можно пересобирать отдельные файлы с исходным кодом.
![]() | После внесения изменений в библиотеку или заголовочный файл необходимо пересобирать исходный код и копировать изменения в каталог ./install командой:
make install |
В этом каталоге хранится исходный код пакета поддержки платы. Чтобы найти в нем исходный код определенного драйвера, следует обратиться к разделу с примечаниями в сопроводительной документации.
Каталог hardware содержит отдельные подкаталоги для драйверов символьных устройств, флеш-накопителей, сетевых драйверов, IPL, startup и других компонентов пакета поддержки платы.
![]() | В каталоге src находятся один или несколько главных файлов построения загрузочного образа (как правило, src/hardware/startup/boards/плата/build ). При выполнении команды
make install файлы построения загрузочного образа копируются в файл |
Каталог lib
содержит отдельные подкаталоги для библиотек, которые используются драйверами и другими утилитами, входящими в состав пакета поддержки платы.
![]() | Некоторые драйверы (например, сетевой драйвер или драйвер главного контроллера USB) реализованы в виде совместно используемых объектов, но их исходные коды находятся в каталоге hardware. |
Каталог utils
содержит отдельные подкаталоги со вспомогательными утилитами для платы. Некоторые утилиты для работы с оборудованием также находятся в каталоге hardware/support
.
Каталог services
содержит отдельные подкаталоги дополнительных служб, которые не входят в базовую конфигурацию.
![]() | При сборке BSP из исходного кода иногда появляются предупреждения от инструментов, которые участвуют в его генерации, например:
Эти предупреждения возникают при преобразовании формата файла, если невозможно сохранить его содержимое (порядок старшинства байт, архитектуру процессора и др.) либо отсутствует необходимая информация. Возникновение таких предупреждений является нормальным и не указывает на проблемы при сборке. |
Чтобы выполнить сборку пакета поддержки платы в командной строке, необходимо перейти в его корневой каталог.
Соберите исходный код с помощью команды make. В Makefile указываются следующие цели:
install
. src:
src
в каталог install
. src
и их копирование в каталог install
. Эта цель также копирует файл построения загрузочного образа из каталога src/hardware/startup/boards/плата/build
и переименовывает его в плата.build
. install/процессор/boot/build/плата.build
символьную ссылку (копию в ОС Windows) на файл images/плата.build
. images
и выполняет в нем Makefile. Этот Makefile генерирует файл IFS из файла построения загрузочного образа, ссылка на который формируется командой make links, а также выполняет всю необходимую дополнительную работу (например, выравнивание IPL или преобразование в другой формат). Если цель не указана, утилита make активирует цель all.
![]() | Рекомендуется собирать образ ОС с использованием утилиты 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.
Чтобы узнать, какие устройства флеш-памяти поддерживаются на текущий момент, обратитесь к следующим источникам:
boards
и mtd-flash
каталога рабочий_каталог_bsp/src/hardware/flash
Драйверы файловых систем флеш-памяти поддерживают один или несколько логических флеш-накопителей, каждый из которых называется разъемом и включает в себя непрерывную область флеш-памяти. Например, в системе с двумя различными типами флеш-устройств, которые расположены по разным адресам, при этом одно устройство содержит загрузочный образ, а другое — файловую систему флеш-памяти, каждый флеш-накопитель находится в отдельном разъеме.
Каждый разъем может состоять из одного или нескольких разделов. Поддерживаются два типа разделов:
Неструктурированный раздел разъема — любой раздел, в котором отсутствует файловая система флеш-памяти. Драйвер файловой системы флеш-памяти распознает только файловую систему флеш-памяти. Неструктурированный раздел может содержать файловую систему образа или данные приложений.
Файловая система флеш-памяти использует неструктурированную точку монтирования для доступа к любым разделам флеш-накопителя, в которых отсутствуют разделы файловой системы флеш-памяти. Следует отметить, что разделы файловой системы флеш-памяти также доступны как неструктурированные разделы.
Раздел файловой системы флеш-памяти содержит POSIX-подобную файловую систему, которая хранит данные на флеш-устройстве в формате, специфичном для ЗОСРВ «Нейтрино». Этот формат несовместим со стандартами Microsoft FFS2 и PCMCIA FTL.
Файловая система флеш-памяти позволяет беспрепятственно создавать и удалять файлы и каталоги. Она освобождает пространство, которое занимают удаляемые файлы, с помощью механизма, аналогичного сбору мусора.
Файловая система флеш-памяти поддерживает все стандартные утилиты POSIX, такие как ls, mkdir, rm, ln, mv, и cp. В ЗОСРВ «Нейтрино» также существуют утилиты для управления файловыми системами флеш-памяти:
Файловая система флеш-памяти поддерживает все стандартные POSIX-функции ввода/вывода, такие как open(), close(), read() и write(). Специальные функции, такие как стирание данных, поддерживаются вызовом devctl().
Каждый пакет поддержки платы содержит двоичный и исходный коды подходящего драйвера файловой системы флеш-памяти, однако платформа разработки ПО ЗОСРВ «Нейтрино» включает в себя соответствующие заголовочные файлы и библиотеки.
Выполнение команды make в каталоге рабочий_каталог_bsp
приводит к генерации двоичного кода файловой системы флеш-памяти. Обычно не требуется пересобирать драйвер файловой системы флеш-памяти, если размер конфигурации на флеш-накопителе платы (количество, размеры и типы частей, чередование и др.) не изменялся.
![]() | Если IPL объединен с файловой системой образа, необходимо смещать начало файловой системы флеш-памяти как минимум на размер IPL и файловой системы образа. Например, если комбинированный образ с IPL файловой системы образа загружается на флеш-накопитель с нулевым смещением, во избежание перезаписи комбинированного образа файловая система флеш-памяти должна начинаться со смещением, равным размеру комбинированного образа +1. В противном случае необходимо создать раздел. |
Независимо от того, с каким пакетом поддержки платы вы работаете, необходимо выполнить следующую процедуру:
![]() | В следующем примере рассматривается плата Renesas Biscayne, которую можно загружать из DMON или флеш-памяти. |
/dev
появляется раздел fs0p0
.
В системе появятся следующие записи:
Запись | Описание |
---|---|
/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 |
Предыдущий раздел: перейти