BSP против драйверов устройств

Хотя я понимаю каждый сам по себе (а может и нет), похоже, я далек от понимания практических различий между ними.

Насколько я понимаю, BSP — это пакет драйверов и параметров конфигурации, который позволяет образу ядра загружать плату (и является ее частью). Драйвер отдельного устройства работает с определенным компонентом (HW), взаимодействуя с одной стороны с ядром ядра, а с другой стороны с самим устройством.

Глядя на ядро ​​Linux, мне непонятно, где начинается роль BSP и заканчивается роль драйвера устройства. Конкретно я привык видеть по одному BSP на плату на образ, однако родовое ядро ​​Linux может быть загружено на любом семействе архитектур с одним и тем же образом (понятно, что для разных семейств разные образы: x86, amd64, arm, и т. д.), где драйверы конкретной платы и периферийных устройств загружаются по мере необходимости из файла initrd.

Существует ли BSP для распространенных дистрибутивов ядра Linux? Или BSP актуален только для плат специального назначения?

Это поведение похоже на другие ядра? ВксВоркс?

И последний вопрос: часто ли объединяют разные BSP/s для создания единого образа, подходящего для разных плат?


person EdwardH    schedule 05.08.2012    source источник
comment
Верно ли сказать, что BSP содержит список необходимых драйверов устройств и обеспечивает их добавление в образ? Но не содержит самих драйверов устройств...   -  person EdwardH    schedule 05.08.2012


Ответы (6)


Я вижу взаимосвязь между BSP и драйверами устройств как "имеет". Пакеты поддержки платы включают драйверы устройств.

Различия между BSP и ядрами различить непросто. Ядро транслирует инструкции аппаратному обеспечению. Ядра часто записываются для определенных семейств оборудования, поэтому они не так переносимы. или общие, как они кажутся. Это сводится к различным перестановкам кода для каждого семейства архитектур.

BSP действует как нечто обратное: он предоставляет инструменты и инструкции для работы с конкретным набором аппаратного обеспечения этой платы. В определенных контролируемых ситуациях эту работу может выполнять ядро. Но BSP позволяет любому совместимому стеку ядра/ОС/приложений использовать эту плату, следуя ее инструкции по настройке.

Если вам просто нужен доступ к процессорным циклам и памяти, возможно, к нескольким протоколам (USB, Ethernet, пара типов видео), ядро ​​с широкой поддержкой архитектуры — это фантастика, и было время, когда широта этой аппаратной абстракции ценилась предпоследним образом. . Но теперь учтите, что на плате может быть набор датчиков (акселерометр, магнитометр, гироскоп, свет, приближение, атмосферное давление и т. д.), телефония, может быть несколько процессоров, несколько графических процессоров , и так далее. Ядро может быть написано для предоставления VGA/DVI/HDMI/DisplayPort и нескольких комбинаций ЦП/ГП, если/когда кто-то использует эти конкретные аппаратные пакеты, но писать поддержку для всех теоретических контекстов нецелесообразно по сравнению с использованием BSP, созданный для конкретной платы. И даже тогда это было бы для одного ядра; плата способна поддерживать Linux, Windows, Android, Symbian и т. д.

Вот почему существуют такие усилия, как Yocto, чтобы еще больше отделить ядро ​​от оборудования. BSP делают наборы оборудования расширяемыми за пределы стека ядра/ОС/приложения или двух, в то время как ядра делают конкретный стек ОС/приложения переносимым на несколько аппаратных архитектур.

person Jacob Stevens    schedule 27.03.2014

По моему опыту, BSP гораздо шире. он включает в себя загрузчик, rootfs, ядро ​​и драйверы и т. д., а это означает, что наличие BSP делает вашу плату способной загружаться самостоятельно. Драйверы заставляют устройства работать и являются лишь частью BSP.

Драйверы не равны BSP.

person doufunao    schedule 13.08.2012

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

  • Ядро (содержащее обработку задач, планирование, управление памятью)
  • Стек (который является верхним уровнем драйверов устройств и предоставляет реализации протоколов для I2C, SPI, Ethernet, SDIO, последовательного порта, файловой системы, сети и т. д.)
  • BSP = драйверы устройств (которые обеспечивают доступ к любым регистрам контроллера на оборудовании, таким как регистры I2C, SDIO, SPI, Ethernet_MAC, UART (последовательный) и обработка прерываний (ISR).

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

person Sajjad Ahmed    schedule 03.05.2017

Пакет поддержки платы включает в себя все, что необходимо для использования платы приложением. К ним относятся драйверы устройств на плате и служебное программное обеспечение для прикладных программистов. Оконная среда также доступна на мультимедийных платах. Системные инженеры могут дополнительно добавлять расширения на плату. Некоторые приложения требуют повторной реализации некоторой части bsp для улучшения. Здесь BSP играет роль эталонной реализации или отправной точки для таких требований.

Путаница заключается в бизнес-модели. Эталонная или отладочная плата не является конечным/потребительским продуктом, таким как мобильное устройство. Он играет важную роль в разработке и разработке таких продуктов, как iPhone или Samsung Galaxy.

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

Не зацикливайтесь на ядре и пользовательском пространстве, поскольку также доступны микроядра. Здесь драйверы являются частью пользовательского пространства! Снова подумайте о плате с низким энергопотреблением, которая имеет только один фрагмент кода без какого-либо ядра. Таким образом, все сводится к программному обеспечению, которое поддерживает плату для выполнения ее работы.

person Shahbaz Khan    schedule 04.01.2015

Существует концептуальная связь между пакетами поддержки платы и HAL (уровень аппаратной абстракции) в том смысле, что драйверы устройств/модули ядра выполняют аппаратную абстракцию, а пакет поддержки платы предоставляет интерфейс для драйверов устройств или сам является уровнем аппаратной абстракции. .

Таким образом, в основном BSP имеет функциональные возможности, аналогичные BIOS эпохи DOS:

Кроме того, BSP должен выполнять следующие операции.

  • Инициализировать процессор
  • Инициализировать шину
  • Инициализировать контроллер прерываний
  • Инициализировать часы
  • Инициализировать настройки ОЗУ
  • Настройте сегменты
  • Загрузите и запустите загрузчик с флешки

из: https://en.wikipedia.org/wiki/Board_support_package

BIOS в современных ПК инициализирует и тестирует аппаратные компоненты системы и загружает загрузчик с запоминающего устройства, которое затем инициализирует операционную систему. В эпоху DOS BIOS обеспечивал уровень аппаратной абстракции для клавиатуры, дисплея и других устройств ввода/вывода (драйверов устройств), который стандартизировал интерфейс для прикладных программ и операционной системы.< /strong> Более поздние операционные системы не используют BIOS после загрузки, а напрямую обращаются к аппаратным компонентам.

источник: https://en.wikipedia.org/wiki/BIOS

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

Загрузчик U-boot и подготовка к отправке

Дуг Эбботт, Linux для встроенных приложений и приложений реального времени (четвертое издание), 2018 г.

Дерево устройств

Одной из самых больших проблем при переносе операционной системы, такой как Linux, на новую платформу является описание аппаратного обеспечения. Это связано с тем, что описание оборудования разбросано по нескольким десяткам или около того драйверов устройств, ядра и загрузчика, и это лишь некоторые из них. Конечным результатом является то, что эти различные части программного обеспечения становятся уникальными. для каждой платформы количество вариантов конфигурации растет, и для каждой платы требуется уникальный образ ядра.

Было несколько подходов к решению этой проблемы. Понятие «пакет поддержки платы» или BSP пытается собрать весь аппаратно-зависимый код в нескольких файлах в одном месте. Можно утверждать, что все поддерево arch/ дерева исходных текстов ядра Linux представляет собой гигантский пакет поддержки платы.

Взгляните на поддерево arch/arm/ ядра. Там вы найдете большое количество каталогов в форме mach-* и plat-*, предположительно сокращенных от «машина» и «платформа» соответственно. Большинство файлов в этих каталогах предоставляют информацию о конфигурации для конкретной реализации архитектуры ARM. И, конечно же, каждая реализация описывает свою конфигурацию по-разному.

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

Периферийные устройства в системе можно охарактеризовать по ряду параметров. Есть, например, символьные и блочные устройства. Существуют устройства с отображением памяти и те, которые подключаются через внешнюю шину, такую ​​как I2C или USB. Затем есть платформенные устройства и обнаруживаемые устройства.

Обнаруживаемые устройства — это те, которые находятся на внешних шинах, таких как PCI и USB, которые могут сообщить системе, что они из себя представляют и как они настроены. То есть они могут быть «обнаружены» ядром. Идентифицировав устройство, довольно просто загрузить соответствующий драйвер, который затем опрашивает устройство, чтобы определить его точную конфигурацию.

Устройства платформы, с другой стороны, не имеют механизма для идентификации себя. Реализации системы на кристалле (SoC), такие как Sitara, изобилуют этими платформенными устройствами — системными часами, контроллерами прерываний, GPIO, последовательными портами, и это лишь некоторые из них. Механизм дерева устройств особенно полезен для управления устройствами платформы.

Концепция дерева устройств развилась в ветви ядра PowerPC, и именно там она, по-видимому, используется чаще всего. Фактически, теперь требуется, чтобы все платформы PowerPC передавали дерево устройств ядру во время загрузки. Текстовое представление дерева устройств представляет собой файл с расширением .dts. Эти файлы .dts обычно находятся в дереве исходного кода ядра по адресу arch/$ARCH/boot/dts.

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

В листинге 15.1 приведен образец дерева устройств, взятый с веб-сайта devicetree.org. Он ничего не делает, кроме иллюстрации структуры. Здесь у нас есть два узла с именами node1 и node2. node1 имеет два дочерних узла, а node2 имеет один дочерний узел. Свойства представлены именем=значением. Значения могут быть строками, списками строк, одним или несколькими числовыми значениями, заключенными в квадратные скобки, или одной или несколькими «ячейками», заключенными в угловые скобки. Значение также может быть пустым, если свойство передает логическое значение своим присутствием или отсутствием.

источник: https://www.sciencedirect.com/topics/computer-science/board-support-package

Через наложения дерева устройств модули ядра могут быть загружены во время загрузки, т. е. в RPi добавление dtoverlay=lirc-rpi к /boot/config.txt загружает lirc-pi модуль ядра/драйвер устройства:

Будущий файл config.txt по умолчанию может содержать такой раздел:

 # Uncomment some or all of these to enable the optional hardware interfaces
 #dtparam=i2c_arm=on
 #dtparam=i2s=on
 #dtparam=spi=on

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

 dtoverlay=lirc-rpi 
 dtparam=gpio_out_pin=16 
 dtparam=gpio_in_pin=17
 dtparam=gpio_in_pull=down

источник: https://www.raspberrypi.org/documentation/configuration/device-tree.md

При сборке BSP с помощью Yocto собирается вся аппаратная информация, разбросанная по драйверам устройств, ядру, загрузчику и т. д. Вот руководство разработчика, как это можно сделать в Yocto https://www.yoctoproject.org/docs/2.5/bsp-guide/bsp-guide.html

[Документация Yocto]... утверждает, что BSP «… касается только аппаратных компонентов. В конечной точке распространения вы можете отправить BSP вместе с системой сборки и другими инструментами. Однако важно сохранять различие в том, что это отдельные компоненты, которые объединяются в определенные конечные продукты».

источник: https://www.microcontrollertips.com/board-support-package/

person ralf htp    schedule 01.02.2020

Драйвер — это программа, которая сообщает ядру о поведении устройства... Устройство может быть USB-устройством, камерой, Bluetooth или чем угодно. Основываясь на размере операции, мы классифицируем ее на три символьные, блочные, сетевые. Но он дает доступ только к каждому устройству ... Он настраивает только устройство, не настраивая память, скорость процессора. Он не дает инструкции для этого процессора или контроллера. Это работа над этим процессором или контроллером. Кто включает этот микроконтроллер, кто определяет функции,.... кто дает отправную точку микроконтроллера... Кто дает инструкции. Теперь приходит ответ вроде BSP........... Bsp - это пакет поддержки платы, который включает загрузчик. Это дает поведение системы. Рассмотрим два сценария: 1. у одного есть ПК в ПК с опцией USB-разъема, все в порядке, это первый сценарий 2. Второй: у меня есть ПК, только плата на плате с USB. Плата должна общаться с USB, что может Я делаю...

  1. В этом случае у меня есть компьютер с ОС, поэтому мне не нужно думать о поведении системы. Поэтому я просто включаю поведение устройства с ОС.

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

person Sathya Priya    schedule 20.06.2019