にわかプラス

にわかが玄人になることを夢見るサイトです。社会や国際のトレンド、プログラミングや電子工作のことについて勉強していきたいです。

R-Car starter kit pro の使い方 Yoctoインストール編

sponsor

f:id:hiddenvally333:20161218231601j:plain 最近ルネサスから発売された、R-Car starter kit pro(M3)を使って遊んでみようという試みです。
公式サイトを見ながらセットアップしてみましたが、案外詰まったので、Yoctoのビルドから、SDカードブート方法までをまとめました。 ほぼ公式サイトと一緒ですが、M3を使っているキットなので、H3用などのコマンドは削除してわかりやすくしました。

R-Car スターターキットとは

ルネサスが出した車載用マイコンの開発キット、車載用マイコンの乗ったボードコンピュータですね。

www.renesas.com

ボードコンピュータといえばRaspberry PiやJetson TK1なんかがおなじみですが、性能を比較するとラズパイ3以上JetsonTK1以下といったところですね。
車載用のミドルレンジとはいえ、ラズパイ3よりパワーが高いのは意外。

性能  R-Car starter kit pro Jetson TK1 Raspberry pi 3
CPU ARM Cortex-A57 1.5GHz ARM CortexA15 2.3GHz Cortex-A53 1.2GHz
メモリ 2GB 2GB 1GB
容量 eMMC8Gb eMMC16GB SDのみ
I/O video put×3,video in×6,USB3.0,2.0,CAN,EthernetVBA,PCI express,LAN,HDMI,microSD MicroUSB,USB3.0,RS232シリアル,DP/LVDS,HDMI,LAN,SPI,CSI,GPIO,UART,HSIC,i2c,SD USB2.0,Wi-Fi,BlueTooth,LAN,HDMI,GPIO,microSD

性能の詳細は以下を参照
* 車載ソフトウェアの開発環境を1人1台持てるようになる新開発の第3世代「R-Car スタータキット」、 2種類を発売 | ルネサス エレクトロニクス
* Jetson TK1 組み込み開発キット | NVIDIA
* Raspberry Pi 3 Model B(RSコンポーネンツ UK製) - スイッチサイエンス

 R-Car スターターキットの環境設定方法 YoctoをビルドしてSDカードブート

購入はここから。通常49,900円が、現在セール中で32,800円!かなりお買い得になっています。2016/12/18

R-Carスタータキット Pro RTP0RC7796SKBX0010SA09 ルネサスエレクトロニクス製|マルツオンライン

設定方法は基本的に下記サイトを参照します。
* R-Car/Boards/M3SK - eLinux.org
* R-Car/Boards/Yocto-Gen3 - eLinux.org

※Ubuntu14.04の環境で行っています。

下準備

  1. まずドライバー2つをルネサスのサイトからダウンロード

Download Detail Page | Renesas Electronics America
https://www.renesas.com/en-us/media/secret/solutions/automotive/rcar-demoboard/R-Car_Gen3_Series_Evaluation_Software_Package_of_Linux_Drivers-20160906.zip

2.Ubuntuに必要なパッケージをインストール

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

R-Car用のYoctoをビルド

  1. ビルド用フォルダの準備

    mkdir build cd build export WORK=`pwd`

  2. Yoctoのビルドファイルをgitから取得

    cd $WORK git clone git://git.yoctoproject.org/poky
    git clone git://git.openembedded.org/meta-openembedded
    git clone git://git.linaro.org/openembedded/meta-linaro.git

  3. ブランチを変更する

    1. Yoctov2.12.2.0の場合

      cd $WORK/poky
      git checkout -b tmp 40376446904ae3529be41737fed9a0b650ed167d
      cd $WORK/meta-openembedded
      git checkout -b tmp 8ab04afbffb4bc5184cfe0655049de6f44269990
      cd $WORK/meta-linaro
      git checkout -b tmp 9b1fd178309544dff1f7453e796a9437125bc0d9

  4. R-Car用のBSPをgitから取得

    cd $WORK git clone git://github.com/CogentEmbedded/meta-rcar.git meta-renesas -b v2.12.0

  5. Linaro-GCC のパスを設定

    cd $WORK/meta-renesas
    export PATCH_DIR=meta-rcar-gen3/docs/sample/patch/patch-for-linaro-gcc
    patch -p1 < ${PATCH_DIR}/0001-rcar-gen3-add-readme-for-building-with-Linaro-Gcc.patch
    unset PATCH_DIR

  6. 下準備の1でダウンロードしたドライバー2つを保存した場所と同じところに解凍する

  7. ルネサスのドライバーをインストールする

    export PKGS_DIR=$WORK/proprietary
    cd $WORK/meta-renesas
    sh meta-rcar-gen3/docs/sample/copyscript/copy_evaproprietary_softwares.sh -f $PKGS_DIR
    unset PKGS_DIR

  8. Yoctoのコマンドを使えるように環境設定を行う

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

  9. コンフィグファイルを準備する

    cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/m3ulcb/linaro-gcc/mmp/.conf ./conf/
    cd $WORK/build
    cp conf/local-wayland.conf conf/local.conf
    一行目は以下のようになっていますが、m3ulcbだけを実行すればいい cp $WORK/meta-renesas/meta-rcar-gen3/docs/sample/conf/<salvator-x|h3ulcb|m3ulcb>/linaro-gcc/mmp/
    .conf ./conf/

10,11は今回は拡張ボードを使っていないので割愛

  1. $WORK/build/conf/local.confを設定

    1. Yocto v2.12.0のEVA_prefixを有効化する

      DISTRO_FEATURES_append = " use_eva_pkg"

  2. ビルド開始

    bitbake core-image-weston

14.以下のようなメッセージが出たらビルド成功

NOTE: Tasks Summary: Attempted 4704 tasks of which 31 didn't need to be rerun and all succeeded.

ブート用SDカード作成

  1. SDカードのパーティションを設定

    $ fdisk /dev/mmcblk0
    -> d
    -> n
    -> p
    -> 1
    ->[enter]
    ->[enter]
    ->[enter]
    ->[enter]
    -> t
    -> 83

  2. Format this partition to ext3 (or ext4)

    $ mkfs.ext3 /dev/mmcblk0p1

  3. SDカードをマウントし、起動用ファイルをコピー

    $ mount /dev/mmcblk0p1 /mnt
    $ cd <your_yocto_build_directory>
    $ tar xfj build/tmp/deploy/images/m3ulcb/core-image-weston-m3ulcb-*.rootfs.tar.bz2 -C /mnt

チュートリアルサイトにはh3ulcbとありますが、starter kit proなのでm3ulcbに直します

<your_yocto_build_directory>は$WORK/build/になっているはずです。

SDカードからR-Car スターターキットをブートする

SDカードからキットを起動して、以下のコマンドを打ち込む

setenv bootargs 'rw root=/dev/mmcblk1p1 rootfstype=ext3 rootwait'
ext2load mmc 0:1 0x48080000 /boot/Image
ext2load mmc 0:1 0x48000000 /boot/Image-r8a7795-m3ulcb.dtb
booti 0x48080000 - 0x48000000'

U-Boot環境設定値の例

baudrate=115200
bootargs_emmc=rw root=/dev/mmcblk0p1 rootfstype=ext3 rootwait
bootargs_nfs=rw root=/dev/nfs rootwait ip=dhcp
bootargs_sd0=rw root=/dev/mmcblk1p1 rootfstype=ext3 rootwait
bootcmd=run bootcmd_sd0
bootcmd_emmc=set bootargs ${bootargs_emmc};ext2load mmc 1:1 0x48080000 /boot/Image;ext2load mmc 1:1 0x48000000 /boot/${dtb};run booti_cmd
bootcmd_nfs=set bootargs ${bootargs_nfs};bootp 0x48080000 Image;tftp 0x48000000 ${dtb};run booti_cmd
bootcmd_sd0=set bootargs ${bootargs_sd0};ext2load mmc 0:1 0x48080000 /boot/Image;ext2load mmc 0:1 0x48000000 /boot/${dtb};run booti_cmd
bootdelay=3
booti_cmd=booti 0x48080000 - 0x48000000
dtb=Image-r8a7795-h3ulcb.dtb
ethact=ravb
ethaddr=2E:09:0A:00:BE:11
fdt_high=0xffffffffffffffff
initrd_high=0xffffffffffffffff
stderr=serial
stdin=serial
stdout=serial
ver=U-Boot 2015.04 (Sep 23 2016 - 13:45:29)
Environment size: 1092/131068 bytes

以下のコマンドでU-Bootの環境を確認できます

=> mmc dev 0
switch to partitions #0, OK
mmc0 is current device
=> mmc info
Device: sh-sdhi
Manufacturer ID: 3
OEM: 5344
Name: SL64G
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 59.5 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
=> ext2ls mmc 0:1 /boot
<DIR> 4096 .
<DIR> 4096 ..
<SYM> 32 Image
14039040 Image-4.6.0-yocto-standard
69584 Image-r8a7795-h3ulcb.dtb

今回のにわかポイント

なんとなく手順通りにやったらYoctoをR-Carボードにインストールできる

にわかプラスポイント

ポイントじゃないけど、Yoctoもブートの仕組みもよく知らないので、bitbateとかYoctoビルドのコマンドが何してるか、U-BOOTの仕組みとか良く知ったら多少ドヤれそう