Пакет поддержки Embedded Board
Как я понимаю, BSP (Board Support Package) содержит загрузчик, ядро и драйвер устройства, которые помогают ОС работать на HW. Но я запутался, потому что ОС также содержит ядро. Так в чем же разница между ядром в ОС и ядром в BSP?
6 ответов
Из чего состоит BSP, зависит от контекста; Обычно это код или библиотеки для поддержки конкретной конструкции платы. Это может быть предоставлено в виде общего кода от поставщика платы для использования в "голой железной" системе или для интеграции с ОС, или оно может быть специфическим для конкретной ОС, или оно может даже включать ОС. В любом случае он обеспечивает платную поддержку программного обеспечения более высокого уровня.
Ядро не зависит от платы (хотя часто зависит от архитектуры процессора) и не имеет прямого доступа к оборудованию, не свойственному архитектуре процессора, на которой оно работает. Обычно для ОС или приложения требуется уровень абстрагирования оборудования (HAL); HAL вполне может быть построен с использованием BSP, или BSP на самом деле может быть HAL. Поставщик может даже упаковать HAL и ОС и называть это BSP.
Термин означает, что это значит для того, кто его использует - контекст - это все. Например, в VxWorks WindRiver использует термин BSP для обозначения уровня, который поддерживает выполнение приложения на основе VxWorks на конкретном оборудовании. Поставщик платы, с другой стороны, может предоставить полный дистрибутив Linux, портированный на плату, и обозначить его как BSP.
Однако и в какой степени конкретный поставщик или разработчик выбирает поддержку платы, является пакетом поддержки платы, независимо от того, сколько или мало он может содержать.
Определение BSP является широким. Это вспомогательный программный пакет для конкретной платы. BSP для крошечного микроконтроллера, вероятно, просто содержит драйверы HW для своей периферии. С другой стороны, для встроенного процессора он может содержать драйверы HW, загрузчик и ядро ОС, а что нет.
Таким образом, ядро в BSP (пакет поддержки платы) - это просто конкретная версия ядра ОС, которая была перенесена на вашу плату.
Я, наверное, просто говорю то же самое, что уже сказал.
У вас есть чип и / или плата, которую вы хотите продать другим разработчикам программного обеспечения. Используется эталонный дизайн (плата) с рассматриваемым чипом (ами). BSP - это неопределенный термин, означающий программное обеспечение, которое предоставляется вам как разработчику программного обеспечения, чтобы в идеале облегчить вам жизнь при использовании этого продукта (микросхемы и / или платы), а также при добавлении к нему программного обеспечения или разработке для него. Так что, если это платформа Linux или RTOS или другой операционной системы, и поставщик (предоставляющий BSP) считает, что пользователям нужна операционная система и конкретная операционная система, то вместо того, чтобы вам приходилось переносить ОС на эту цель, они делают это для вас. Если что-то наподобие linux с открытым исходным кодом, то вам либо говорят, какие источники linux загрузить, затем добавляются исправления, сделанные bsp, и / или bsp содержит полные исходные коды для всего уже исправленного. Драйверы, приложения, которые поставщик считает необходимыми, и т. Д. Может поддерживаться несколько операционных систем, если поставщик считает, что это необходимо для привлечения клиентов к покупке этой платы или чипа.
Весь пакет программного обеспечения, который вы получаете от них, чтобы превратить этот чип / плату в ваш собственный продукт, - это BSP.
Ядро vxWorks, которое вы можете запустить на плате, содержит ядро vxWorks и "другие компоненты", которые могут меняться в одной среде. Ядро ядра содержит необходимые программы, такие как планировщик, диспетчер памяти, базовые файловые системы, функции безопасности и т. Д. Эти "другие компоненты", которые являются частью BSP, могут быть необязательными или могут варьироваться от системы к системе и помогают функциям ядра ядра.
Проще говоря, изображение не раскрывает определение BSP. Пожалуйста, поправьте меня, если я ошибаюсь
Я бы сказал, что для хорошо структурированной кодовой базы прикладной уровень должен быть абстрагирован от нижних уровней уровнем HAL. Это позволит сделать уровень приложений переносимым, если мы захотим перенести систему на новую плату. Если вы видите, что у вас есть специфичная для платы/ЦП логика на уровне приложения, вы знаете, что нарушили переносимость. Тела функций уровня HAL должны содержать специфичный для платы код, и здесь в игру вступает код уровня BSP. Когда мы хотим перенести систему на новую плату, изменения кода должны происходить в телах функций HAL, в то время как объявление функций HAL не должно меняться, что приводит к тому, что уровень приложения остается прежним.