©2016, Hidemi Ishihara, All rights reserved.
2016年2月20日
yocto for ZynqMP
ZynqMP勉強会
AQUAXIS TECHNOLOGY
石原 ひでみ
2今日は何の話?
  ZynqMP用 俺々 Linuxディストリビューションを構築してみた
    って、話です。
3ZynqMPとは
Zynq-7000 SoC
Dual-core ARM® Cortex -A9 MPCore with CoreSight up to 1GHz™ ™ ™
DDR3, DDR3L, DDR2, LPDDR2
USB 2.0, Gigabit Ethernet, SD/SDIO
RSA, AES, and SHA, ARM® TrustZone®
Zynq UltraScale+ MPSoC
Quad-core ARM® Cortex -A53 MPCore up to 1.5GHz™
Dual-core ARM® Cortex -R5 MPCore up to 600MHz™
GPU ARM® Mali -400 MP2 up to 667MHz,™
Video Codec supporting H.264-H.265
DDR4, LPDDR4, DDR3, DDR3L, LPDDR3
PCIe® Gen2, USB3.0, SATA 3.1, DisplayPort, Gigabit Ethernet, SD/SDIO
RSA, AES, and SHA, ARM® TrustZone®
4ZynqMPにどんなアプリを載せる?
AP – Application Processor(Cortex-A53)
 ⇒ リッチなOS
   ⇒ Linuxだけ?
RP – Realtime Processor(Cortex-R5)
 ⇒ もちろん、Readtime系OSだろう。
   ⇒ freertosとか?
Zynq-7000だと
 Cortex-A9の一つをLinux、もう一つをRTOSとか
 Cortex-A9をLinux、microbalzeでRTOSとか
  という面倒な選択肢しかなかったが・・・
   ZynqMPだとOSやアプリの構成も楽になるのかな?
5どのLinuxディストリビューションを使う?
           ずばり、yoctoでしょ!
6PetaLinuxじゃダメなの?
          別にいいと思うけど・・・
7yoctoとは
組込みシステム用Linuxディストリビューションを
                構築するためのフレームワーク
Intel、Ti、NXP(freescale)、Raspberry Pi、Altera、Xilinxなどの
組込みCPUシステム向け、Linuxディストリビューションが構築できる。
●
Linuxベース環境
●
Gstreamerなどマルチメディア環境
●
Android環境
●
Qt5環境
●
IVI(車載系)環境
●
その他、いろいろ・・・
8なぜ、yoctoなのか?
メーカ提供のLinuxディストリビューションを利用すると・・・
●
Linux Kernelのバージョンが古い
●
コンパイラのバージョンが古い
●
ミドルウェアやライブラリのバージョンが古い
●
アプリケーションのバージョンが古い
だいたい、こういうところで悩まされる。
●
新しいパッケージをインストールしようとすると依存関係に悩む
●
新しいデバイスに対応していない
●
メーカはサポートしてくれない(あくまでサンプル提供)
9yoctoの魅力
最新かつ多くのOSSの俺々Linuxディストリビューションを
                   素早く構築することが出来る。
世界中の組込みエンジニアが使用していてコミュニティが活発に
            活動しているのでバグ・アップデートも素早い。
●
最新のアプリケーションを使用したLinuxディストリビューションを構築でき
ること。
●
世の中の最新OSSを使用できること
●
必要なパッケージだけ組み込めること(依存関係も解決して)
●
素早くLinux環境とクロス開発環境を整備できること
yoctoはコミュニティも盛んでこういったところを解決しやすい。
10yoctoを使う理由
何かを作る⇒バグで悩む⇒リリースが遅い
で、悩むよりも
あるものを使う⇒バグ取りを手伝ってもらう⇒早くリリースする
11yoctoキーワード
Poky:
Yocto Project Reference
BitBake:
Build Engine
Hob:
GUI for BitBake
OpenEmbedded Core:
Shared Base Layer of Recipes and Classes
ADT(Application Development Toolkit):
Development environment
Eclipse IDE Plugin:
ADT into the Eclipse IDE
Matchbox:
X Window-based open source graphical UI for Embedded
12yocto build workflow
13yocto 構成
絵は削除しています。
14yocto Layers
15yocto project
https://www.yoctoproject.org/
yocto project とはオープンソースのコラボレーション・プロジェクトであり、
組み込み製品のための Linux
ベースのカスタム・システムをハードウェア・アーキテクチャーに関わらず構築
するためのテンプレート、ツール、
手段を提供しています。対応アーキテクチャーは x86(32bit &
64bit)、ARM、PowerPC、MIPS などなど多
岐に渡ります。
16Openembedded project
http://www.openembedded.org/wiki/Main_Page
OpenEmbedded Project とは組み込み機器用の
Linux ディストリビューションを作るためのソフトウェアフレームワーク
BirBake レシピの集合として維持、開発をしておりパッケージのソースの
URL、依存関係、コンパイルオプション、インストールオプションをまとめたも
のであるビルドする場合にはこれらの情報を使用して、依存関係を解決し、
パッケージをクロスコンパイルし、パックし、ターゲット機器にインストールでき
るようにします。
ルートファイルシステムとカーネルを含んだ完全なイメージを作成することも
できる。
最初の段階として、フレームワークはターゲット・プラットフォーム用のクロスコ
ンパイル・ツールチェーンをビルドします。
17yoctoの設定
設定するのはここ
build/conf/bblayers.conf
build/conf/local.conf
もっと、食い込むならmeta-俺々(俺々レシピ)を作ればいい!
Zynq-7000 + Cyclone V SoCのハイブリッドLinuxディストリビューション
      Xilteraディストリビューション提供中!
18ZynqMPのLinuxディストリビューション
XilinxのWiki
http://www.wiki.xilinx.com/Yocto+for+zynqmp
とりあえず、ここを見ればyoctoでZynqMP用Linuxディストリビューションを
構築することが出来る。
標準的なビルド手順とかここに書いているので迷うことはないだろう。
19ZynqMP用linaroビルド
今回はyoctoではなく、linaroでLinuxディストリビューションを構築!
linaroの魅力?
●
ARMに特化していること
●
ARMバイナリが少し小さくなること
●
ARMバイナリが少し速くなること
20linaro
http://www.linaro.org/
ARM アーキテクチャー採用の CPU コアで動作する Linux の最適化を実施
している非営利団体
英 ARM 社、米 Freescale Semiconductor 社、米 IBM 社、
韓国 Samsung Electoronics 社、スイスST-Ericsson 社、
米 Texas Instruments 社が2010 年 6 月に Linaro を設立
ARM アーキテクチャのSoC 向けに Linux の最適化を開始、成果物を 6 ヶ
月単位で提供しています。
最近は月 1 回のリリースもされているようです。
21ZynqMP linaroのビルド
yoctoだけであれば、
% git clone git://git.yoctoproject.org/poky.git
% cd poky
% git clone git://git.yoctoproject.org/meta-xilinx.git
linaroの場合、
% git clone git://git.yoctoproject.org/poky.git
% cd poky
% git clone git://git.linaro.org/openembedded/meta-linaro.git
% git clone git://git.openembedded.org/meta-openembedded
そして、meta-xilinxはyocto projectのレシピファイルではなく、Githubの
Xilinxリポジトリを使用してみた。
% git clone git://git.yoctoproject.org/meta-xilinx.git
↓
% git clone git://github.com/Xilinx/meta-xilinx.git
22変更ファイル
conf/bblayes.conf
BBLAYERS += " <DIRECTORY>/poky/meta-xilinx "
BBLAYERS += " <DIRECTORY>/poky/meta-openembedded/meta-oe "
BBLAYERS += " <DIRECTORY>/poky/meta-openembedded/meta-networking "
BBLAYERS += " <DIRECTORY>/poky/meta-openembedded/meta-python "
BBLAYERS += " <DIRECTORY>/poky/meta-linaro/meta-linaro "
BBLAYERS += " <DIRECTORY>/poky/meta-linaro/meta-linaro-toolchain "
conf/local.conf
MACHINE ?= "ep108-zynqmp"
当然、linaroのツールチェーンを使ってみた。
GCCVERSION = "linaro-5.2"
SDKGCCVERSION = "linaro-5.2"
PREFERRED_PROVIDER_eglibc = "eglibc"
23ep108って、なにもの?
たぶん、これなのかな?
Xilinx Virtex UltraScale FPGA VCU108 Evaluation Kit
http://www.xilinx.com/products/boards-and-kits/ek-u1-vcu108-
g.html
これに近いらしい。
Price:$5,995 ⇒ $5,495 = 約65万円
Part Number: EK-U1-VCU108-G
でも、これVirtexだよ?
24Linuxディストリビューションのビルド
必要最低限のLinuxディストリビューションを構築するなら
% bitbake core-image-minimal
X Window+Matchboxにするなら
% bitbake core-image-sato-sdk
linaroの最小限なら・・・
% bitbake linaro-image-minimal
作成できるディストリビューションイメージはたくさんあるので、自分自身のシ
ステムにあうのを探すのが良いだろう。
25生成物は?
build/tmp/deploy/images/ep108-zynqmpにできる
core-image-minimalなら
core-image-minimal-ep108-zynqmp.cpio
core-image-minimal-ep108-zynqmp.cpio.gz.u-boot
core-image-minimal-ep108-zynqmp.cpio.u-boot
core-image-minimal-ep108-zynqmp.tar.gz
linaro-image-minimalなら
linaro-image-minimal-ep108-zynqmp.cpio
linaro-image-minimal-ep108-zynqmp.cpio.gz.u-boot
linaro-image-minimal-ep108-zynqmp.cpio.u-boot
linaro-image-minimal-ep108-zynqmp.tar.gz
Image-ep108-zynqmp.bin
Image-zynqmp-ep108.dtb
modules-ep108-zynqmp.tgz
u-boot-ep108-zynqmp.bin
u-boot-ep108-zynqmp.elf
26イメージの実行
実機を持っていないのでQEMU環境で確認
./tmp/sysroots/x86_64-linux/usr/bin/qemu-system-aarch64 
-M xlnx-ep108 -nographic -m 512 
-kernel ./tmp/deploy/images/ep108-zynqmp/Image 
-initrd ./tmp/deploy/images/ep108-zynqmp/linaro-image-minimal-ep108-zynqmp.cpio 
-dtb ./tmp/deploy/images/ep108-zynqmp/Image-zynqmp-ep108.dtb
メモリが足りない場合は、core-image-minimalで試そう
./tmp/sysroots/x86_64-linux/usr/bin/qemu-system-aarch64 
-M xlnx-ep108 -nographic 
-kernel ./tmp/deploy/images/ep108-zynqmp/Image 
-initrd ./tmp/deploy/images/ep108-zynqmp/core-image-minimal-ep108-zynqmp.cpio 
-dtb ./tmp/deploy/images/ep108-zynqmp/Image-zynqmp-ep108.dtb
27起動ログ
起動ログ
Poky (Yocto Project Reference Distro) 2.0+snapshot-20160208
ep108-zynqmp /dev/ttyPS0
uname
[ 0.000000] Linux version 4.1.16-yocto-standard (hidemi@saturn)
(gcc version 5.2.1 20151005 (Linaro GCC 5.2-2015.11) ) #2 SMP
PREEMPT Tue Feb 9 10:57:39 JST 2016
/proc/cpuinfo
processor : 0
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
28QEMUを動かしてみる
         実際に動かしてみましょう
29懸案事項:Cortex-R5の環境は?
yoctoはあくまでLinuxディストリビューションを構築するフレームワーク。
Cortex-R5までLinux化する必要はないだろう。
では、Cortex-R5の環境は?
SDKは生成できるので、freeRTOSをインストールするレシピを作成するか?
Cortex-A53(ARMv8-A)
http://www.arm.com/ja/products/processors/cortex-a/cortex-a53-processor.php
Cortex-R5(ARMv7-R)
http://www.arm.com/ja/products/processors/cortex-r/cortex-r5.php
Cortex-A9(ARMv7-A)
http://www.arm.com/ja/cortex-a9.php
30懸案事項:コア間通信
コア間通信
Cortex-A53にリッチなLinux。
Cortex-R5はもちろん、freertosだろう。
コア間通信が重要になるかな?
ここまでyoctoで構築できるかな?
31おしまい
おしまい

ZynqMP勉強会