みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

mortyでPandaboard ES Rev.B3

今更のPandaBoard ESをmortyで試してみる。 手元にあるのは悪名高きRev.B3。

Rev.B3はElpidaDDRを搭載しており、タイミングなどの設定が他のリビジョンと異なるため、 Pandaboard ESの他のリビジョンで動作するOSイメージをそのまま使用することができない。

ここをベースにYocotProjectで動くようにしてみた。

morty環境の作成

pokyを取得

~/pandaで作業する。

$ mkdir ~/panda
$ cd ~/panda
$ git clone git://git.yoctoproject.org/poky.git -b morty

meta-tiを取得

meta-tiには現時点でmortyブランチがないためmasterを取得する。

$ cd poky
$ git clone http://git.yoctoproject.org/git/meta-ti

meta-panda-es-rev-b3

Rev.B3のイメージを作成するためにmeta-panda-es-rev-b3を取得する。

$ git clone https://github.com/mickey-happygolucky/meta-panda-es-rev-b3.git

環境変数の設定

bitbakeの実行に必要な環境変数を読み込む。

$ cd ../
$ source poky/oe-init-build-env

レイヤの設定

ビルド対象にmeta-tiとmeta-panda-es-rev-b3を追加する。

$ bitbake-layers add-layer ../poky/meta-ti
$ bitbake-layers add-layer ../poky/meta-panda-es-rev-b3

local.confの設定

MACHINEをpandaboradに設定するため、local.confの頭の方に次を追加する。

MACHINE ?= "panda-es-rev-b3"

bitbakeの実行

core-image-minimalを生成する。

$ bitbake core-image-minimal

SDカードの作成

Pandaboardを起動するためにはSDカードの決まった場所にブートローダ(MLO,u-boot)を書き込む必要がある。 作業手順が複雑なため、スクリプトを作成した。

このスクリプトを使用してSDカードを作成する。

スクリプトのダウンロード

まずはスクリプトを取得し実行権限をつける。

$ wget https://gist.githubusercontent.com/mickey-happygolucky/40385889e3d013f00e1f97eb5ae04f95/raw/df99f41c760dcbed29340075cea49c749f9f6934/mksd_panda.sh
$ chmod +x ./mksd_panda.sh

スクリプトの実行

PCにSDカードをマウントした状態でスクリプトを実行する。

引数にはbitbakeで作成されたイメージの.tar.gzファイルを指定する。

実際には.tar.gzと同じディレクトリにあるカーネルブートローダもSDカードに書き込むため、 .tar.gz単体を他のディレクトリに移動して使用することはできないので注意。

$ ./mksd_panda.sh ./tmp/deploy/images/panda-es-rev-b3/core-image-minimal-panda-es-rev-b3.tar.gz

Pandaboard起動

作成したSDカードを挿入し、電源を投入する。

Poky (Yocto Project Reference Distro) 2.2 panda-es-rev-b3 /dev/ttyS2
                                                                                
panda-es-rev-b3 login: root
root@panda-es-rev-b3:~# uname -a
Linux panda-es-rev-b3 4.9.0+ #1 SMP Wed Jan 11 21:07:22 JST 2017 armv7l GNU/Linux
root@panda-es-rev-b3:~# 

無事、起動した。 今回はRS-232CでPCと接続しシリアルコンソールでログインしている。