wata2ki
 名前: wata2ki (watatuki)
◦ 元はハードウェアで画像処理をやっていましたが、現在は組
み込み屋をやっています
◦ 最近はJetson-TK1/TX1向けのアンオフィシャルYocto BSP
を作り、そのうえでディスクトップ環境や別ボード向けのディス
トロを動かして遊んでいます
◦ GitHub
 https://github.com/watatuki
 今日は、Jetson-TK1のOSSベースのBSPを作った時
のやりかたを説明します
 L.F.(Linux Foundation)のプロジェクトで、正式名称は
Yocto Project
◦ https://www.yoctoproject.org/
 Linuxのディストリビューションを作るのに必要なツー
ル・データを提供
◦ 最終的にはpokyという名前のリファレンスディストロとして提
供される
◦ OpenEmbedded(http://www.openembedded.org/)コミュニティ
由来のプロジェクトで、ツールも共同開発している
 GentooLinuxがクロスビルドになったようなもの
 bitbake
◦ Yoctoの根幹となるツールで、クロスビルド環境を提供してくれる
◦ ディストリビューションの構成するソフトのコンフィグやバージョンを
Recipeで管理する
 oe-core
◦ bitbakeで使うレシピのセットで、glibc, x.org, waylandからQtまで、様々
なOSSを標準でビルドできるようにしてくれる
◦ クロスビルド用のgccもoe-coreが提供してくれる
 リファレンスBSP
◦ pokyが標準でサポートしているボード向けのBSP
 Qemu, x86, x86-64, beagleboneなど
 LinuxのカーネルやU-boot, OpenGL(mesa)をそのボード向けの設定でビル
ドできるようにするレシピの形で提供される
 リファレンスBSPに関しては、少なくともビルドが通ることが確認されている
(はず。。。)
 Yoctoでは、自分の作りたいディストロをlayerを組み合
わせて構築する
自分の作りたいディストロ
meta (oe-core layer)
meta-yocto (yocto layer)
meta-jetson (BSP layer)
meta-mydistro (my layer)
標準Layer
meta-windowmng (layer)
BSP Layer
ターゲットボード用のカーネルや、ファーム
ウェア等
さらに追加したいコンポーネントが入っ
たLayerを積み上げる
今回はここの話
 Jetson-TK1でwayland環境を構築したい
◦ コンポーネントを一つ一つビルド・インストールして動かす環
境をNVIDIAが提供しているが、継続的に使えるようYoctoに
組み込みたい
 Kernelは、Upstream Kernel
 L4Tではなくnouveau/mesaベース
 L4TはX.orgのみでwaylandをサポートしていない
 使えるものは極力Yoctoのリリースに含まれるものを使う
 Jetson-TK1(最近はTX1も)向けのwayland環境を
NVIDIAがgithubで公開している
◦ https://github.com/NVIDIA/tegra-nouveau-rootfs
◦ Ubuntu14.04(ARM)のrootfsにパッチをあてたカーネル、nouveauや
mesaをビルド・インストールするスクリプトのセット
◦ westonのディスクトップシェルが動作するrootfsを作ってくれる
 ビルドが通れば…
これをベースにBSPを作成
 Yocto/OEのLayerは決まったファイルを置くだけ
◦ レイヤのスケルトンはyocto-layer create を使って作成
 Layerの設定が書かれたlayer.confを自動作成してくれる
 今回は、サンプルレシピの作成は行わない
◦ Layerディレクトリ名前はmeta-jetson
$ yocto-layer create jetson
Please enter the layer priority you'd like to use for the layer: [default: 6] 6
Would you like to have an example recipe created? (y/n) [default: n] n
Would you like to have an example bbappend file created? (y/n) [default: n] n
New layer created in meta-jetson.
Don't forget to add it to your BBLAYERS (for details see meta-jetsonREADME).
meta-jetson
├── COPYING.MIT
├── README
└── conf
└── layer.conf
 BSPを作る場合はmachine設定を新規に作成
◦ ARM/x86といったアーキテクチャの設定、最適化設定などを記載する
meta-jetson
├── README.md
└── conf
├── layer.conf
└── machine
└── jetson-tk1-upstream.conf
require conf/machine/include/tune-cortexa15.inc
DEFAULTTUNE = "cortexa15hf-neon"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-upstream"
PREFERRED_PROVIDER_virtual/mesa ?= "mesa"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
SERIAL_CONSOLE = "115200 ttyS0"
KERNEL_IMAGETYPE = "zImage"
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " 
bootconfig 
kernel-image 
kernel-devicetree 
linux-firmware-nvidia 
linux-firmware-rtl8168g 
kernel-modules 
libdrm-tegra 
libdrm-kms 
mesa-megadriver 
"
IMAGE_FSTYPES = "tar.bz2"
アーキテクチャ設定と、コンパイラの最適化オプション設定
TegraK1はCortex-A15なので、A15を設定
Kernelレシピを指定
Yoctoで用意されているカーネルは古いので、最新のカーネルを
使えるように独自のレシピを使うように設定
このmachine設定を選択した場合に強制的にインストールする
パッケージを指定
bootconfig : jetson-tk1でu-boot起動する設定ファイル
kernel-image : /boot にカーネル
kernel-devicetree : /boot にdtb
kernel-firmware-* : ファームウェア
kernel-modules : カーネルモジュール(nouveu等)
libdrm-* : libdrmのtegra用パッケージ
mesa-megadriver : mesaのドライバパッケージ(nouveau)
 ベースは別のカーネルレシピを流用
◦ TIのBSPから流用したファイルをベースに作成
 defconfigは、arch/arm/configsの下のファイル名を指定する
 カスタムコンフィグにしたい場合は、別途bbappendレシピを使って上書きすると、ディスト
ロごとにBSPレイヤを作り直さなくて済む
 Patchは必須ではないが、jetsonの場合はDTBでGPUを有効化したいので、そのため
のpatchを追加
◦ ベースのlinux-firmwareにnvidiaのファームウェアのパッケージがなかったので、
新規作成
 中の構成が頻繁にかわるためappendではなくカスタムレシピを作成。
 今回はnvidiaゆえに必要だっただけで、通常は作成しなくてよい
meta-jetson
├── README.md
├── conf
└── recipes-kernel
├── linux
├── linux-upstream
│ │ ├── defconfig
│ │ └── linux4.3_tegrak1_gpu_hdmi.patch
│ ├── linux-dtb.inc
│ ├── linux-upstream_4.7.bb
│ └── setup-defconfig.inc
└── linux-firmware
└── linux-firmware_git.bb
TIのレシピの流用品
パッチファイル(GPU有効化)
GPUとEtherファームのために作成したファームウェアレシピ
 カーネルレシピはほぼ定型文
◦ メンテ時は以下の個所しか変更していません
SECTION = "kernel"
DESCRIPTION = "Upstream Linux Kernel recipe."
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
KERNEL_IMAGETYPE = "zImage"
inherit kernel
require recipes-kernel/linux/linux-dtb.inc
require recipes-kernel/linux/setup-defconfig.inc
DEFAULT_PREFERENCE = "-1"
S = "${WORKDIR}/linux-4.5.2"
PR = "r2"
SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.5.2.tar.xz 
file://linux4.3_tegrak1_gpu_hdmi.patch 
file://defconfig"
SRC_URI[md5sum] = "eae8f700463ea73185027caece5f1c5d"
SRC_URI[sha256sum] =
"e32339db8365f0f10b873928095da47dd3e8a40f8ea5edd5501320d4ff30209f"
KERNEL_DEVICETREE = "tegra124-jetson-tk1.dtb"
カーネルのソースを指定
gitにするとcloneがとんでもなく遅いので、tar.xzを使うようにしてい
るが、gitでとってくることも可能
カスタムカーネルを使用したい場合は、自宅のgitを指すようにする
Gitの場合は、
SRC_URI = “git://192.168.1.1/linux-omap.git;protocol=git”
SRCREV = "02a84e66b30a9c9e1c00112892f0226a71098753“
というように、SRC_URIを書いて、md5/shaハッシュではなくリビジョ
ンを指定する
カーネルレシピでは、解凍先のディレクトリを指定しないといけない
必要なdtbを指定。
SUMMARY = "libdrm Tegra K1 append recipe"
EXTRA_OECONF += " --enable-tegra-experimental-api 
"
PACKAGES =+ " ${PN}-tegra "
RRECOMMENDS_${PN}-drivers += " ${PN}-tegra "
FILES_${PN}-tegra = "${libdir}/libdrm_tegra.so.*"
 libdrmが必要だが、デフォルトのレシピではTegra用のビルドがされない
◦ libdrmのメインラインにTegraK1の対応が取り込まれているので、configureの設定を変更
してビルドされるようにする
◦ そのままではrpm(ipk/deb)パッケージが作られないので、その設定も追加する
meta-jetson
├── README.md
├── conf
├── recipes-graphics
│ ├── drm
│ │ └── libdrm_%.bbappend
│ ├── mesa
│ │ ├── mesa.inc
│ │ ├── mesa_11.0.9.bb
│ │ └── mesa_11.0.9.bbappend
│ └── wayland
│ ├── weston
│ └── weston_1.9.0.bbappend
└── recipes-kernel
EXTRA_OECONFにtegra用のconfigure
オプションを追加
bbappendレシピを作成
libdrm_tegraのパッケージを作るための記述
SUMMARY = "mesa nouveau append recipe"
PACKAGECONFIG_append = " gallium "
DIR3_FEATURES = "dri3proto presentproto "
DIR3_FEATURES += " ${@bb.utils.contains('DISTRO_FEATURES', 'x11',
'libxshmfence', '', d)} "
PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, ${DIR3_FEATURES} "
GALLIUMDRIVERS = "nouveau"
DRIDRIVERS_append = ",nouveau"
 mesaもlibdrmと同様にnouveauを有効化しないといけない
◦ Mesaはnouveauの不具合対応が頻繁に行われるため、bbレシピも追加
 実際は、コピーしてきてバージョンをかえただけ
 バージョンを変えただけだとビルドが通らない場合があるので、その時は内容も修正
◦ Tegra対応は分離したいので、nouveauを有効化する部分のみbbappendに切り出し
meta-jetson
├── README.md
├── conf
├── recipes-graphics
│ ├── drm
│ │ └── libdrm_%.bbappend
│ ├── mesa
│ │ ├── mesa.inc
│ │ ├── mesa_11.0.9.bb
│ │ └── mesa_11.0.9.bbappend
│ └── wayland
│ ├── weston
│ └── weston_1.9.0.bbappend
└── recipes-kernel
Mesaのベースレシピとbbappendレシピを追加
bbappendの内容は、nouveauを有効化するための記述のみ
galliumの有効化記述もあるが、nouveauを使うために連鎖的に有
効化が必要になっただけ
FILESEXTRAPATHS_prepend := "${THISDIR}/weston:"
SRC_URI += "file://0001-compositor-drm-Add-new-gbm-struct-to-allow-for-a-sep.patch 
file://0002-compositor-drm-Add-support-for-Tegra-Jetson-TK1.patch 
file://0003-Add-glFinish-to-DRM-backend-to-avoid-tearing.patch 
"
 nvidiaのwestonは、westonにパッチをあてているため、Yoctoのレシピで同じ
ようにパッチをあてる
◦ libdrm-tegraのためのパッチなので、nvidia以外では必要ないことも
◦ このパッチがwestonのバージョン依存で当たらなくなるため、ポーティングが結構
めんどくさい
meta-jetson
├── README.md
├── conf
├── recipes-graphics
│ ├── drm
│ │ └── libdrm_%.bbappend
│ ├── mesa
│ │ ├── mesa.inc
│ │ ├── mesa_11.0.9.bb
│ │ └── mesa_11.0.9.bbappend
│ └── wayland
│ ├── weston
│ └── weston_1.9.0.bbappend
└── recipes-kernel
Mesaのベースレシピとbbappendレシピを追加
bbappendの内容は、パッチディレクトリの指定と、パッチあての指
定のみ
#MACHINE ?= "beaglebone"
#MACHINE ?= "genericx86"
#MACHINE ?= "genericx86-64"
#MACHINE ?= "mpc8315e-rdb"
#MACHINE ?= "edgerouter"
#
# This sets the default machine to be qemux86 if no other
machine is selected:
MACHINE ??= "jetson-tk1-upstream“
 作ったBSPレイヤの使い方は簡単
◦ bblayers.confに作ったbspレイヤを参照する設定を追加
◦ local.confのMACHINE設定をstep2で作ったbspのconfファイルの名
前にする
meta-jetson
├── README.md
└── conf
├── layer.conf
└── machine
└── jetson-tk1-upstream.conf
あとはいつものようにbuildするだけ!!
 Yocto用のbspレイヤを作ってみた
◦ 今回はリファレンスボード用のbspを作成した
◦ 実際にこの実例が生きるのは、カスタムボード用のbspを作る場合
 想定ユースケース
 カスタムボード用に移植したカーネルを組み込みたい
 専用のファームウェアを組み込みたい
◦ 今回の実例はこちら参照
 https://github.com/watatuki/meta-jetson
 今回は省略しましたが、/bootの下にブートローダのコンフィグを組み込む
ようなレシピも実例にはあります
中華パッド用のカスタムbspとかいかがでしょうか?

Yocto bspを作ってみた

  • 1.
  • 2.
     名前: wata2ki(watatuki) ◦ 元はハードウェアで画像処理をやっていましたが、現在は組 み込み屋をやっています ◦ 最近はJetson-TK1/TX1向けのアンオフィシャルYocto BSP を作り、そのうえでディスクトップ環境や別ボード向けのディス トロを動かして遊んでいます ◦ GitHub  https://github.com/watatuki
  • 3.
  • 4.
     L.F.(Linux Foundation)のプロジェクトで、正式名称は YoctoProject ◦ https://www.yoctoproject.org/  Linuxのディストリビューションを作るのに必要なツー ル・データを提供 ◦ 最終的にはpokyという名前のリファレンスディストロとして提 供される ◦ OpenEmbedded(http://www.openembedded.org/)コミュニティ 由来のプロジェクトで、ツールも共同開発している  GentooLinuxがクロスビルドになったようなもの
  • 5.
     bitbake ◦ Yoctoの根幹となるツールで、クロスビルド環境を提供してくれる ◦ディストリビューションの構成するソフトのコンフィグやバージョンを Recipeで管理する  oe-core ◦ bitbakeで使うレシピのセットで、glibc, x.org, waylandからQtまで、様々 なOSSを標準でビルドできるようにしてくれる ◦ クロスビルド用のgccもoe-coreが提供してくれる  リファレンスBSP ◦ pokyが標準でサポートしているボード向けのBSP  Qemu, x86, x86-64, beagleboneなど  LinuxのカーネルやU-boot, OpenGL(mesa)をそのボード向けの設定でビル ドできるようにするレシピの形で提供される  リファレンスBSPに関しては、少なくともビルドが通ることが確認されている (はず。。。)
  • 6.
     Yoctoでは、自分の作りたいディストロをlayerを組み合 わせて構築する 自分の作りたいディストロ meta (oe-corelayer) meta-yocto (yocto layer) meta-jetson (BSP layer) meta-mydistro (my layer) 標準Layer meta-windowmng (layer) BSP Layer ターゲットボード用のカーネルや、ファーム ウェア等 さらに追加したいコンポーネントが入っ たLayerを積み上げる 今回はここの話
  • 7.
     Jetson-TK1でwayland環境を構築したい ◦ コンポーネントを一つ一つビルド・インストールして動かす環 境をNVIDIAが提供しているが、継続的に使えるようYoctoに 組み込みたい Kernelは、Upstream Kernel  L4Tではなくnouveau/mesaベース  L4TはX.orgのみでwaylandをサポートしていない  使えるものは極力Yoctoのリリースに含まれるものを使う
  • 8.
     Jetson-TK1(最近はTX1も)向けのwayland環境を NVIDIAがgithubで公開している ◦ https://github.com/NVIDIA/tegra-nouveau-rootfs ◦Ubuntu14.04(ARM)のrootfsにパッチをあてたカーネル、nouveauや mesaをビルド・インストールするスクリプトのセット ◦ westonのディスクトップシェルが動作するrootfsを作ってくれる  ビルドが通れば… これをベースにBSPを作成
  • 9.
     Yocto/OEのLayerは決まったファイルを置くだけ ◦ レイヤのスケルトンはyocto-layercreate を使って作成  Layerの設定が書かれたlayer.confを自動作成してくれる  今回は、サンプルレシピの作成は行わない ◦ Layerディレクトリ名前はmeta-jetson $ yocto-layer create jetson Please enter the layer priority you'd like to use for the layer: [default: 6] 6 Would you like to have an example recipe created? (y/n) [default: n] n Would you like to have an example bbappend file created? (y/n) [default: n] n New layer created in meta-jetson. Don't forget to add it to your BBLAYERS (for details see meta-jetsonREADME). meta-jetson ├── COPYING.MIT ├── README └── conf └── layer.conf
  • 10.
     BSPを作る場合はmachine設定を新規に作成 ◦ ARM/x86といったアーキテクチャの設定、最適化設定などを記載する meta-jetson ├──README.md └── conf ├── layer.conf └── machine └── jetson-tk1-upstream.conf require conf/machine/include/tune-cortexa15.inc DEFAULTTUNE = "cortexa15hf-neon" PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" PREFERRED_PROVIDER_virtual/kernel ?= "linux-upstream" PREFERRED_PROVIDER_virtual/mesa ?= "mesa" PREFERRED_PROVIDER_virtual/libgl ?= "mesa" SERIAL_CONSOLE = "115200 ttyS0" KERNEL_IMAGETYPE = "zImage" MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += " bootconfig kernel-image kernel-devicetree linux-firmware-nvidia linux-firmware-rtl8168g kernel-modules libdrm-tegra libdrm-kms mesa-megadriver " IMAGE_FSTYPES = "tar.bz2" アーキテクチャ設定と、コンパイラの最適化オプション設定 TegraK1はCortex-A15なので、A15を設定 Kernelレシピを指定 Yoctoで用意されているカーネルは古いので、最新のカーネルを 使えるように独自のレシピを使うように設定 このmachine設定を選択した場合に強制的にインストールする パッケージを指定 bootconfig : jetson-tk1でu-boot起動する設定ファイル kernel-image : /boot にカーネル kernel-devicetree : /boot にdtb kernel-firmware-* : ファームウェア kernel-modules : カーネルモジュール(nouveu等) libdrm-* : libdrmのtegra用パッケージ mesa-megadriver : mesaのドライバパッケージ(nouveau)
  • 11.
     ベースは別のカーネルレシピを流用 ◦ TIのBSPから流用したファイルをベースに作成 defconfigは、arch/arm/configsの下のファイル名を指定する  カスタムコンフィグにしたい場合は、別途bbappendレシピを使って上書きすると、ディスト ロごとにBSPレイヤを作り直さなくて済む  Patchは必須ではないが、jetsonの場合はDTBでGPUを有効化したいので、そのため のpatchを追加 ◦ ベースのlinux-firmwareにnvidiaのファームウェアのパッケージがなかったので、 新規作成  中の構成が頻繁にかわるためappendではなくカスタムレシピを作成。  今回はnvidiaゆえに必要だっただけで、通常は作成しなくてよい meta-jetson ├── README.md ├── conf └── recipes-kernel ├── linux ├── linux-upstream │ │ ├── defconfig │ │ └── linux4.3_tegrak1_gpu_hdmi.patch │ ├── linux-dtb.inc │ ├── linux-upstream_4.7.bb │ └── setup-defconfig.inc └── linux-firmware └── linux-firmware_git.bb TIのレシピの流用品 パッチファイル(GPU有効化) GPUとEtherファームのために作成したファームウェアレシピ
  • 12.
     カーネルレシピはほぼ定型文 ◦ メンテ時は以下の個所しか変更していません SECTION= "kernel" DESCRIPTION = "Upstream Linux Kernel recipe." LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" KERNEL_IMAGETYPE = "zImage" inherit kernel require recipes-kernel/linux/linux-dtb.inc require recipes-kernel/linux/setup-defconfig.inc DEFAULT_PREFERENCE = "-1" S = "${WORKDIR}/linux-4.5.2" PR = "r2" SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.5.2.tar.xz file://linux4.3_tegrak1_gpu_hdmi.patch file://defconfig" SRC_URI[md5sum] = "eae8f700463ea73185027caece5f1c5d" SRC_URI[sha256sum] = "e32339db8365f0f10b873928095da47dd3e8a40f8ea5edd5501320d4ff30209f" KERNEL_DEVICETREE = "tegra124-jetson-tk1.dtb" カーネルのソースを指定 gitにするとcloneがとんでもなく遅いので、tar.xzを使うようにしてい るが、gitでとってくることも可能 カスタムカーネルを使用したい場合は、自宅のgitを指すようにする Gitの場合は、 SRC_URI = “git://192.168.1.1/linux-omap.git;protocol=git” SRCREV = "02a84e66b30a9c9e1c00112892f0226a71098753“ というように、SRC_URIを書いて、md5/shaハッシュではなくリビジョ ンを指定する カーネルレシピでは、解凍先のディレクトリを指定しないといけない 必要なdtbを指定。
  • 13.
    SUMMARY = "libdrmTegra K1 append recipe" EXTRA_OECONF += " --enable-tegra-experimental-api " PACKAGES =+ " ${PN}-tegra " RRECOMMENDS_${PN}-drivers += " ${PN}-tegra " FILES_${PN}-tegra = "${libdir}/libdrm_tegra.so.*"  libdrmが必要だが、デフォルトのレシピではTegra用のビルドがされない ◦ libdrmのメインラインにTegraK1の対応が取り込まれているので、configureの設定を変更 してビルドされるようにする ◦ そのままではrpm(ipk/deb)パッケージが作られないので、その設定も追加する meta-jetson ├── README.md ├── conf ├── recipes-graphics │ ├── drm │ │ └── libdrm_%.bbappend │ ├── mesa │ │ ├── mesa.inc │ │ ├── mesa_11.0.9.bb │ │ └── mesa_11.0.9.bbappend │ └── wayland │ ├── weston │ └── weston_1.9.0.bbappend └── recipes-kernel EXTRA_OECONFにtegra用のconfigure オプションを追加 bbappendレシピを作成 libdrm_tegraのパッケージを作るための記述
  • 14.
    SUMMARY = "mesanouveau append recipe" PACKAGECONFIG_append = " gallium " DIR3_FEATURES = "dri3proto presentproto " DIR3_FEATURES += " ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxshmfence', '', d)} " PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, ${DIR3_FEATURES} " GALLIUMDRIVERS = "nouveau" DRIDRIVERS_append = ",nouveau"  mesaもlibdrmと同様にnouveauを有効化しないといけない ◦ Mesaはnouveauの不具合対応が頻繁に行われるため、bbレシピも追加  実際は、コピーしてきてバージョンをかえただけ  バージョンを変えただけだとビルドが通らない場合があるので、その時は内容も修正 ◦ Tegra対応は分離したいので、nouveauを有効化する部分のみbbappendに切り出し meta-jetson ├── README.md ├── conf ├── recipes-graphics │ ├── drm │ │ └── libdrm_%.bbappend │ ├── mesa │ │ ├── mesa.inc │ │ ├── mesa_11.0.9.bb │ │ └── mesa_11.0.9.bbappend │ └── wayland │ ├── weston │ └── weston_1.9.0.bbappend └── recipes-kernel Mesaのベースレシピとbbappendレシピを追加 bbappendの内容は、nouveauを有効化するための記述のみ galliumの有効化記述もあるが、nouveauを使うために連鎖的に有 効化が必要になっただけ
  • 15.
    FILESEXTRAPATHS_prepend := "${THISDIR}/weston:" SRC_URI+= "file://0001-compositor-drm-Add-new-gbm-struct-to-allow-for-a-sep.patch file://0002-compositor-drm-Add-support-for-Tegra-Jetson-TK1.patch file://0003-Add-glFinish-to-DRM-backend-to-avoid-tearing.patch "  nvidiaのwestonは、westonにパッチをあてているため、Yoctoのレシピで同じ ようにパッチをあてる ◦ libdrm-tegraのためのパッチなので、nvidia以外では必要ないことも ◦ このパッチがwestonのバージョン依存で当たらなくなるため、ポーティングが結構 めんどくさい meta-jetson ├── README.md ├── conf ├── recipes-graphics │ ├── drm │ │ └── libdrm_%.bbappend │ ├── mesa │ │ ├── mesa.inc │ │ ├── mesa_11.0.9.bb │ │ └── mesa_11.0.9.bbappend │ └── wayland │ ├── weston │ └── weston_1.9.0.bbappend └── recipes-kernel Mesaのベースレシピとbbappendレシピを追加 bbappendの内容は、パッチディレクトリの指定と、パッチあての指 定のみ
  • 16.
    #MACHINE ?= "beaglebone" #MACHINE?= "genericx86" #MACHINE ?= "genericx86-64" #MACHINE ?= "mpc8315e-rdb" #MACHINE ?= "edgerouter" # # This sets the default machine to be qemux86 if no other machine is selected: MACHINE ??= "jetson-tk1-upstream“  作ったBSPレイヤの使い方は簡単 ◦ bblayers.confに作ったbspレイヤを参照する設定を追加 ◦ local.confのMACHINE設定をstep2で作ったbspのconfファイルの名 前にする meta-jetson ├── README.md └── conf ├── layer.conf └── machine └── jetson-tk1-upstream.conf あとはいつものようにbuildするだけ!!
  • 17.
     Yocto用のbspレイヤを作ってみた ◦ 今回はリファレンスボード用のbspを作成した ◦実際にこの実例が生きるのは、カスタムボード用のbspを作る場合  想定ユースケース  カスタムボード用に移植したカーネルを組み込みたい  専用のファームウェアを組み込みたい ◦ 今回の実例はこちら参照  https://github.com/watatuki/meta-jetson  今回は省略しましたが、/bootの下にブートローダのコンフィグを組み込む ようなレシピも実例にはあります 中華パッド用のカスタムbspとかいかがでしょうか?