最近ルネサスから発売された、R-Car starter kit pro(M3)を使って遊んでみようという試みです。
公式サイトを見ながらセットアップしてみましたが、案外詰まったので、Yoctoのビルドから、SDカードブート方法までをまとめました。
ほぼ公式サイトと一緒ですが、M3を使っているキットなので、H3用などのコマンドは削除してわかりやすくしました。
- R-Car スターターキットとは
- R-Car スターターキットの環境設定方法 YoctoをビルドしてSDカードブート
- 下準備
- R-Car用のYoctoをビルド
- ブート用SDカード作成
- SDカードからR-Car スターターキットをブートする
- 今回のにわかポイント
- にわかプラスポイント
R-Car スターターキットとは
ルネサスが出した車載用マイコンの開発キット、車載用マイコンの乗ったボードコンピュータですね。
ボードコンピュータといえば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の環境で行っています。
下準備
- まずドライバー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をビルド
ビルド用フォルダの準備
mkdir build cd build export WORK=`pwd`
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ブランチを変更する
- 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
- Yoctov2.12.2.0の場合
R-Car用のBSPをgitから取得
cd $WORK git clone git://github.com/CogentEmbedded/meta-rcar.git meta-renesas -b v2.12.0
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下準備の1でダウンロードしたドライバー2つを保存した場所と同じところに解凍する
ルネサスのドライバーをインストールする
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_DIRYoctoのコマンドを使えるように環境設定を行う
cd $WORK source poky/oe-init-build-env
コンフィグファイルを準備する
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は今回は拡張ボードを使っていないので割愛
$WORK/build/conf/local.confを設定
- Yocto v2.12.0のEVA_prefixを有効化する
DISTRO_FEATURES_append = " use_eva_pkg"
- Yocto v2.12.0のEVA_prefixを有効化する
ビルド開始
bitbake core-image-weston
14.以下のようなメッセージが出たらビルド成功
NOTE: Tasks Summary: Attempted 4704 tasks of which 31 didn't need to be rerun and all succeeded.
ブート用SDカード作成
SDカードのパーティションを設定
$ fdisk /dev/mmcblk0
-> d
-> n
-> p
-> 1
->[enter]
->[enter]
->[enter]
->[enter]
-> t
-> 83Format this partition to ext3 (or ext4)
$ mkfs.ext3 /dev/mmcblk0p1
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の仕組みとか良く知ったら多少ドヤれそう