34

それぞれを単独で理解していますが(または理解していない可能性があります)、2つの実際の違いを理解するにはほど遠いようです。

私の理解では、BSP はドライバーと構成設定のパッケージであり、カーネル イメージがボードを起動できるようにします (ボードの一部です)。個々のデバイス ドライバーは、特定のコンポーネント (HW) で動作し、一方ではコア カーネルとインターフェイスし、他方ではデバイス自体とインターフェイスします。

Linux カーネルを見ると、BSP の役割がどこで始まり、デバイス ドライバーの役割がどこで終わるかがわかりません。具体的には、イメージごとにボードごとに 1 つの BSP を表示するのに慣れていますが、一般的な Linux カーネルは、同じイメージを使用して任意のアーキテクチャ ファミリにロードできます (ファミリごとに異なるイメージがあることは明らかです: x86、amd64、arm、 etc...)、必要に応じて initrd から特定のボードおよび周辺機器ドライバーがロードされます。

一般的な Linux カーネル ディストリビューション用の BSP はありますか? それとも、BSP は特別なケースのボードにのみ関連していますか?

この動作は他のカーネルでも同様ですか? VxWorks?

最後に、異なるボードに適合する単一のイメージを生成するために、異なる BSP をマージするのは一般的ですか?

4

6 に答える 6

25

私は、BSP とデバイス ドライバーの関係を"has-a"と見なしています。ボード サポート パッケージには、デバイス ドライバーが含まれています。

BSP とカーネルの違いを区別するのは簡単ではありません。カーネルは命令をハードウェアに変換します。カーネルは多くの場合、ハードウェアの特定のファミリに合わせて作成されるため、見かけほど移植性や汎用性が高くありません。これは、アーキテクチャ ファミリごとにコードの順列が異なることになります。

BSP は一種の逆の働きをします。BSP は、そのボードの特定のハードウェア セットを操作するためのツールと指示を提供します。特定の制御された状況では、カーネルがこの作業を実行できます。しかし、BSP は、互換性のあるカーネル/OS/アプリケーション スタックがそのボードを使用できるようにします

CPUサイクルとメモリ、おそらくいくつかのプロトコル(USB、イーサネット、いくつかのビデオタイプ)にアクセスする必要があるだけの場合、幅広いアーキテクチャをサポートするカーネルは素晴らしく、そのハードウェア抽象化の幅広さが最後から2番目に評価された時期がありました. しかしここで、ボードに一連のセンサーが搭載されている可能性があることを考慮してください。(加速度計、磁力計、ジャイロスコープ、光、近接、大気圧など)、テレフォニー、複数の CPU、複数の GPU などがある場合があります。誰かがこれらの特定のハードウェア パッケージを使用する場合、VGA/DVI/HDMI/DisplayPort、および CPU/GPU の組み合わせのいくつかの順列を提供するようにカーネルを作成できますが、すべての理論的コンテキストのサポートを作成することは、特定のボード用に構築された BSP。それでも、それは 1 つのカーネルの場合です。このボードは、Linux、Windows、Android、Symbian など、あらゆるものをサポートできます。

カーネルとハードウェアをさらに分離するためのYoctoのような取り組みが存在するのはそのためです。BSP はハードウェア セットを 1 つまたは 2 つのカーネル/OS/アプリ スタックを超えて拡張可能にしますが、カーネルは特定の OS/アプリ スタックを複数の HW アーキテクチャに移植できるようにします

于 2014-03-27T23:01:15.397 に答える
14

私の経験に基づくと、BSP ははるかに広い範囲です。これには、ブートローダー、rootfs、カーネル、およびドライバーなどが含まれます。つまり、BSP を使用すると、ボードが自動的に起動できるようになります。ドライバーはデバイスを機能させるものであり、BSP の一部にすぎません。

Drivers は BSP と等しくありません。

于 2012-08-13T18:59:56.570 に答える
1

ボード サポート パッケージには、アプリケーションでボードを使用するために必要なすべてが含まれています。これらには、ボード上のデバイス用のデバイス ドライバと、アプリケーション プログラマ用のユーティリティ ソフトウェアが含まれます。マルチメディアボードでは、ウィンドウ環境も利用できます。システム エンジニアは、ボードにさらに拡張機能を追加できます。一部のアプリケーションでは、拡張のために bsp の一部を再実装する必要があります。ここで、bsp はリファレンス実装またはそのような要件の開始点の役割を果たします。

混乱はビジネスモデルにあります。リファレンスまたは開発ボードは、モバイル デバイスのような最終消費者向け製品ではありません。iPhoneやSamsung Galaxyなどの製品を設計・開発する上で重要な役割を果たしています。

一般的な bsp はほとんどの場合最適化されていないため、初心者向けのモデルまたは最適化が必要な場合にのみ一般的な bsp を期待できます。安価なボードの場合、BSP は非常に汎用的です。

マイクロカーネルも利用できるので、カーネルとユーザー空間に関してあまり強調しないでください。ここで、ドライバーはユーザー空間の一部です! ここでも、カーネルを持たないコードが 1 つしかない低電力ボードを考えてみましょう。つまり、ボードがその仕事をするのをサポートするソフトウェアに要約されます。

于 2015-01-04T00:30:26.163 に答える
-1

ドライバーは、デバイスの動作のようにカーネルに伝えるプログラムです...デバイスは、USBデバイス、カメラ、Bluetooth、または何でもかまいません。操作のサイズに基づいて、char、block、network の 3 つに分類します。しかし、それは各デバイスへのアクセスを提供するだけです...メモリ、CPU速度を構成するのではなく、デバイスのみを構成します。そのプロセッサまたはコントローラに指示を与えるわけではありません。そのプロセッサまたはコントローラでの作業です。機能を定義するマイクロコントローラを有効にするのは誰か、マイクロコントローラの出発点を与えるのは誰か、指示を与えるのは誰か。今度は BSP のような答えが来ます......... Bsp は、ブートローダを有効にするボード サポート パッケージです。システムの動作を示します。1. 2 つのシナリオを考えてみましょう。

  1. この場合、私はOSを備えたPCを持っているので、システムの動作について考える必要はありません。そのため、システムOSを備えたデバイスの動作を有効にするだけです

  2. この場合、ボードとは、すべての周辺機器を備えたプロセッサを意味します.....この場合、OS がないため、そのデバイスの動作を有効にするか有効にする必要があります......

于 2019-06-20T05:21:47.417 に答える