This service is available only in Japanese-language.

BSPをカスタマイズする際の注意点は

社内エンジニアから良くある質問です。

あるBSPをベースに、新規に起こしたボード向けのBSPを作成する際の注意点を教えてください。

既存の類似したボード向けのBSPをベースに開発を進める場合がほとんどと思いますが、
作業を始めるにあたって、ベースとなったBSPのアップデートが有った場合に、変更点が
失われてしまうことを防ぐため新規にレイヤーを作成し、その中にBSPとして作成する
ファイルを保存するようにすることをお勧めします。

新規レイヤーの作成ですが、yocto-2.4 までは、yocto-layer コマンドの create-layer
サブコマンドを使用する方法が一般的でしたが、永らくアップデートが行われておらず、
bitbake-layers に create-layerサブコマンドが追加されたこともあり、yocto2.5からは
bitbkae-layers create-layer を使用して新規レイヤーを作成します。

2.3以前のyocto互換の一部BSPの場合、yocto-layerコマンドが使えないケースがあります。
そのような場合は、お使いのBSPと互換性のあるpokyを入手し、環境をセットアップした上で
レイヤーを作成したい場所でyocto-layer create を実行することで、layerの作成は可能です。
2.4以降はbitbake-layersが使用可能となっているので、pokyを含まないBSPでも、レイヤーを
作成するユーティリティが利用できます。

ここのところメンテナンスが行われておらず、yocto2.5から配布が中止となったyocto-bspコマンドですが
対話的に実行するこのコマンドの生成物を確認することで、どのようなファイルを作成する必要があるかを
理解する助けになります。

yocto-bsp create myboard arm の実行で以下のファイルが生成されています。

meta-myboard
|-- COPYING.MIT
|-- README
|-- README.sources
|-- binary
|-- conf
| |-- layer.conf
| `-- machine
| `-- myboard.conf ← このファイルがMACHINで指定するボード名となります。
|-- recipes-bsp
| `-- formfactor
| |-- formfactor
| | `-- myboard ← このボード向けのハードウェア設定ファイルを格納するディレクトリ
| | `-- machconfig ← 内容は、touch screen/keyboard のサポートの有無となります
| `-- formfactor_0.0.bbappend ←新規マシン向けの設定が追加となったので、bbappend が生成されます。
|-- recipes-graphics
| `-- xorg-xserver
| |-- xserver-xf86-config
| | `-- myboard
| | `-- xorg.conf ←ボード向けのxorg.conf をこの位置に保存します。
| `-- xserver-xf86-config_0.1.bbappend ←ボード向けにxorg.confを追加したため、bbappendが生成されます。
`-- recipes-kernel
`-- linux ← 以下ベースとなったkernelに対する差分を記述するファイル郡となります。
|-- files
| |-- myboard-non_hardware.cfg
| |-- myboard-preempt-rt.scc
| |-- myboard-standard.scc
| |-- myboard-tiny.scc
| |-- myboard-user-config.cfg
| |-- myboard-user-features.scc
| |-- myboard-user-patches.scc
| |-- myboard.cfg
| `-- myboard.scc
`-- linux-yocto_4.4.bbappend

今回の例では、bootloaderに関しては特に指定を行わずにコマンドを実行しましたが、
bootloaderに関する質問に別の答えを行うことで、boot loader向けのカスタマイズ例も
生成されます。

他のBSPむけの.confを参考にボード名.confを作成する場合、以下の項目が必要となります。
TARGET_ARCH
  arm arm64 x86 x86_64 powerpc powerpc64 mips mipsel のいずれかを指定します。
 
PREFERRED_PROVIDER_virtual/kernel
  どのカーネルを使用するのかlinuix-yocto linux-yocto-tiny といった形式で指定します。

MACHINE_FEATURES
  そのボードに備わる機能を記述します。
  https://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#ref-fea... 
  に指定可能な一覧があります。