みつきんのメモ

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

ラズベリーパイゼロでyocto

日本でもようやくラズベリーパイゼロ(RPi0)が入手しやすくなったので、あきばお〜の店頭で入手してみた。

RPi0はmeta-raspberrypiでも対応済みなので、早速bitbakeをしてみる。

今回購入したのはベースキットなので、ピンヘッダからケーブルから一通りついているので、モニタやらキーボードを接続することもできるが、ピンヘッダを実装してUARTでシリアルコンソールからログインする。

ベース環境の取得

$ git clone git://git.yoctoproject.org/poky.git -b morty
$ cd poky
$ git clone git://git.yoctoproject.org/meta-raspberrypi -b morty

使用するのはmortyブランチ。

oe-init-build-envの読み込み

下記を実行する。

$ cd ~/rpi0
$ source poky/oe-init-build-env

これにより、クロスコンパイルに必要な環境変数が設定され、ビルドディレクトリに移動される。

meta-raspberrypiをビルド対象に追加

次のコマンドを実行する。

$ bitbake-layers add-layer ../poky/meta-raspberrypi

local.confの修正

次の行をlocal.confの先頭の方に追加する。

MACHINE ?= "raspberrypi0"

MACHINEはraspberrypi0に設定

動作確認

bitbakeの実行

$ bitbake rpi-basic-image

成功すると次のように表示される。

Parsing recipes: 100% |##########################################| Time: 0:00:27
Parsing of 884 .bb files complete (0 cached, 884 parsed). 1338 targets, 73 skipped, 0 masked, 0 errors.
NOTE: There are 1 recipes to be removed from sysroot raspberrypi0, removing...
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.32.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "universal"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "raspberrypi0"
DISTRO            = "poky"
DISTRO_VERSION    = "2.2.1"
TUNE_FEATURES     = "arm armv6  vfp arm1176jzfs callconvention-hard"
TARGET_FPU        = "hard"
meta              
meta-poky         
meta-yocto-bsp    = "morty:924e576b8930fd2268d85f0b151e5f68a3c2afce"
meta-raspberrypi  = "morty:5de45f285e15770300f5b496ff16dec5c6c44e4a"

Initialising tasks: 100% |#######################################| Time: 0:00:05
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 2163 tasks of which 2128 didn't need to be rerun and all succeeded.

SDカードの作成

$ sudo dd if=tmp/deploy/images/raspberrypi0/rpi-basic-image-raspberrypi0.rpi-sdimg of=/dev/sdb bs=40M

/dev/sdbはSDカードのデバイス。環境により変更が必要な場合がある。

実行

Poky (Yocto Project Reference Distro) 2.2.1 raspberrypi0 /dev/ttyAMA0           
                                                                                
raspberrypi0 login: 

若干、うちのUSB-TTL変換ケーブルの動作が怪しかったが、無事起動した。 minicomを後から起動すると調子が良いみたいだった。