みつきんのメモ

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

DragonBoard 410cでYocto

DragonBoard 410cを借りることができた。 実はかなり前から借りていたのだが、個人的に忙しく触る時間が作れないでいた。

このボードは、RaspberryPi3よりも前に出回っていて、かつ、Cortext-A53をコアに搭載しており、WifiBluetoothオンボード。 借りたボードは技適取得済みという、なんとまぁ、RPi3より前に手元にあったのなら、なぜ、RPi3よりも前に遊び倒していないのかという代物。

しかも!配布されているLinuxOSのイメージはAArch64!なので、現状32bit版OSしか配布されていないRPi3よりも先に64bitの世界が体験できる。

オフィシャルで配布されているOSは、AndroidLinux(Linaro)だが、もちろんここではYoctoのイメージを焼いてみる。

イメージの作成

ここでYoctoのイメージの作成手順が公開されている。

筆者はUbuntu 15.04で作業している。

依存パッケージ

参考にしたサイトでは、以下のパッケージをインストールする様に書いてあるが、 筆者の環境では、明示的にインストールした覚えがないがインストール済みになっていた。

$ sudo apt-get install git
$ sudo apt-get install whiptail
$ sudo apt-get install dialog

それ以外では、Yoctoを使用するための最低限の環境をインストールする必要がある。

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
    build-essential chrpath libsdl1.2-dev xterm

repoのインストール

DragonBoardのYocto環境の構築ではrepoコマンドを使用している。

repoは複数のgitのリポジトリを一括で管理できるコマンドで、主にAndroidの開発で見かける事が多いが、一部他のメーカーのボードでYocto環境を構築する際にも使用されている。

$ mkdir -p ${HOME}/bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo
$ chmod a+x ${HOME}/bin/repo
$ export PATH=${HOME}/bin:${PATH}

Ubuntu 15.04では、${HOME}/.profileで コード 1 の様に記述されているため、 ${HOME}/binが存在すると、自動的にPATHに含まれる様になっているようだ。

コード 1: .profile(抜粋)
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

作業ディレクト

筆者は${HOME}/work/yoctoで作業している。

$ cd ${HOME}/work/yocto
$ mkdir oe-qcom && cd oe-qcom
$ repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro
$ repo sync
$ source setup-environment build

bitbake

基本的に、oe-qcomの場合は、local.confやbblayers.confの設定は、 setup-environmentがやってくれているため、そのままbitbakeを実行することができる。

$ bitbake rpb-console-image

イメージの書き込み

tmp-rpb-glibc/deploy/images/dragonboard-410cに作られた次の2つのファイルを書き込む。

  1. rpb-console-image-dragonboard-410c.ext4.gz
  2. boot-dragonboard-410c.img

fastbootのインストール

イメージの書き込みにはfastbootを使用する。Ubuntu 15.04では次のコマンドを実行してインストールする。

$ sudo apt-get install -y android-tools-fastboot

ボードの電源を切った状態で、J4コネクタ(図 1)にUSBケーブルを接続し、PCのUSBポートと接続します。次に S4ボタン(図 2)を押しながら電源を入れ、数秒後に離す。

f:id:mickey_happygolucky:20160605173942j:plain

図 1:J4コネクタ

f:id:mickey_happygolucky:20160605173952j:plain

図 2:S4ボタン

以下のコマンドを実行して、fastbootからデバイスが見えているか確認する。

$ sudo fastboot devices

バイスが見えている場合は、以下のように8桁の16進数が表示される。

$ sudo fastboot devices
11e02318    fastboot

ブートローダのダウンロードとパーティション設定

eMMCのパーティション設定を行うためにここからブートローダのファイルをダウンロードする必要がある。

wgetで取得する場合は、以下のコマンドを実行する。

$ wget http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-46.zip

zip形式で圧縮されているので、次のコマンドで解凍する。

$ unzip -d bootloader dragonboard410c_bootloader_emmc_linux-46.zip

PCとボードが接続された状態で、解凍したファイルの中にあるflashallを実行する。

$ cd bootloader
$ sudo ./flashall

イメージの書き込み

次のコマンドを実行し、ルートファイルシステムカーネルイメージを書き込む。

$ cd ${HOME}/work/yocto/oe-qcom/build/tmp-rpb-glibc/deploy/images/dragonboard-410c
$ gzip -d < rpb-console-image-dragonboard-410c.ext4.gz > rpb-console-image-dragonboard-410c.ext4
$ sudo fastboot flash rootfs rpb-console-image-dragonboard-410c.ext4
$ sudo fastboot flash boot boot-dragonboard-410c.img

起動

電源を切り、J4コネクタからUSBのケーブルを抜いて、電源を再度投入するとOSが起動する。(図 3)

f:id:mickey_happygolucky:20160605173937j:plain

図 3:ブート画面