web-dev-qa-db-ja.com

Yocto / bitbakeのみでデバイスツリーをすばやく再構築しますか?

そのため、デバイスツリーを変更するたびに、通常、カスタムレシピのdtsを変更し、イメージを再構築します。カーネル全体を再構築するため、再構築には長い時間がかかります。その後、イメージを構築し、最終的にターゲットデバイスに展開する必要があります。

デバイスツリーのみを再構築する私が見逃しているトリックはありますか?

UPDATE:

G0hl1nの答えは、私の質問に対する答えであるため、正しいものとしてマークしました。しかし、Yoctoでカーネルを操作するのは非常に面倒であることがわかりました:カーネルがtmp/workで構築されている間に、奇妙で長いパスと各再構築でファイルが上書きされるリスク、tmp/work-sharedのカーネルのソース。

代わりに、カーネル開発をYoctoから移動しました。 Yoctoには、SDKを作成するための優れたツール(populate_sdkタスクを参照)があり、それにより、迅速な再構築と手動(またはスクリプト化)展開でカーネル開発用の環境を簡単にセットアップできます。作業が完了したら、git diffを使用して変更をレシピに移動できます。

次のページの指示は非常に役に立ちました。 http://jumpnowtek.com/beaglebone/Working-on-the-BeagleBone-kernel.html

17
Jonatan

私の知る限り、これを行うには2つの異なる方法があります。

  1. kernel way:カーネルが提供するスクリプトを使用する

    • カーネルソースディレクトリ(<build dir>/tmp/work/<machine>/<kernel-name>/<kernel-version>/git/
    • デバイスツリーコンパイラを実行します:./scripts/dtc/dtc -I dts -O dtb -o ./devicetree.dtb path/to/devicetree.dts
  2. bitbake way:カーネルのデプロイジョブを使用する

    • $ bitbake <kernel-name> -f -c deploy
    • 生成されたdevice-tree-blobは、<build dir>/tmp/work/<machine>/<kernel-name>/<kernel-version>/build/Arch/arm/boot/dts/

少なくとも私にとっては、両方のバージョンが簡単なテストで機能しました。

UPDATE:ネット上でyoctoを使用してdtbを構築する3番目のバージョンを知りました。その1つは、カーネル構築のyoctoのdevshellを使用します。詳細については、 https://splefty.blogspot.co.at/2015/09/compiling-device-tree-using-yocto.html の元の著者ページを参照してください。

16
g0hl1n

Bitbakeを使用してデバイスツリーを再生成した私にとって、次のように機能しました。

コマンド:$ bitbake <kernel-name> -f -c compile

例:$ bitbake linux-fslc -f -c compile

ヨクト相撲を使用してテスト済み。

2
Tobias Braune