ZynqMP勉強会

31
©2016, Hidemi Ishihara, All rights reserved. 2016年2月20日 yocto for ZynqMP ZynqMP勉強会 AQUAXIS TECHNOLOGY 石原 ひでみ

Transcript of ZynqMP勉強会

Page 1: ZynqMP勉強会

©2016, Hidemi Ishihara, All rights reserved.

2016年2月20日

yocto for ZynqMP

ZynqMP勉強会

AQUAXIS TECHNOLOGY石原 ひでみ

Page 2: ZynqMP勉強会

2今日は何の話?

  ZynqMP用 俺々 Linuxディストリビューションを構築してみた

    って、話です。

Page 3: ZynqMP勉強会

3ZynqMPとは

Zynq-7000 SoCDual-core ARM® Cortex -A9 MPCore with CoreSight up to 1GHz™ ™ ™DDR3, DDR3L, DDR2, LPDDR2USB 2.0, Gigabit Ethernet, SD/SDIORSA, AES, and SHA, ARM® TrustZone®

Zynq UltraScale+ MPSoCQuad-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.265DDR4, LPDDR4, DDR3, DDR3L, LPDDR3PCIe® Gen2, USB3.0, SATA 3.1, DisplayPort, Gigabit Ethernet, SD/SDIORSA, AES, and SHA, ARM® TrustZone®

Page 4: ZynqMP勉強会

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やアプリの構成も楽になるのかな?

Page 5: ZynqMP勉強会

5どのLinuxディストリビューションを使う?

           ずばり、yoctoでしょ!

Page 6: ZynqMP勉強会

6PetaLinuxじゃダメなの?

          別にいいと思うけど・・・

Page 7: ZynqMP勉強会

7yoctoとは

組込みシステム用Linuxディストリビューションを                構築するためのフレームワーク

Intel、Ti、NXP(freescale)、Raspberry Pi、Altera、Xilinxなどの組込みCPUシステム向け、Linuxディストリビューションが構築できる。

● Linuxベース環境● Gstreamerなどマルチメディア環境● Android環境● Qt5環境● IVI(車載系)環境● その他、いろいろ・・・

Page 8: ZynqMP勉強会

8なぜ、yoctoなのか?

メーカ提供のLinuxディストリビューションを利用すると・・・

● Linux Kernelのバージョンが古い● コンパイラのバージョンが古い● ミドルウェアやライブラリのバージョンが古い● アプリケーションのバージョンが古い

だいたい、こういうところで悩まされる。

● 新しいパッケージをインストールしようとすると依存関係に悩む● 新しいデバイスに対応していない● メーカはサポートしてくれない(あくまでサンプル提供)

Page 9: ZynqMP勉強会

9yoctoの魅力

最新かつ多くのOSSの俺々Linuxディストリビューションを                   素早く構築することが出来る。

世界中の組込みエンジニアが使用していてコミュニティが活発に            活動しているのでバグ・アップデートも素早い。

● 最新のアプリケーションを使用したLinuxディストリビューションを構築できること。

● 世の中の最新OSSを使用できること● 必要なパッケージだけ組み込めること(依存関係も解決して)● 素早くLinux環境とクロス開発環境を整備できること

yoctoはコミュニティも盛んでこういったところを解決しやすい。

Page 10: ZynqMP勉強会

10yoctoを使う理由

何かを作る⇒バグで悩む⇒リリースが遅い

で、悩むよりも

あるものを使う⇒バグ取りを手伝ってもらう⇒早くリリースする

Page 11: ZynqMP勉強会

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

Page 12: ZynqMP勉強会

12yocto build workflow

Page 13: ZynqMP勉強会

13yocto 構成

絵は削除しています。

Page 14: ZynqMP勉強会

14yocto Layers

Page 15: ZynqMP勉強会

15yocto project

https://www.yoctoproject.org/

yocto project とはオープンソースのコラボレーション・プロジェクトであり、組み込み製品のための Linuxベースのカスタム・システムをハードウェア・アーキテクチャーに関わらず構築するためのテンプレート、ツール、手段を提供しています。対応アーキテクチャーは x86(32bit & 64bit)、ARM、PowerPC、MIPS などなど多岐に渡ります。

Page 16: ZynqMP勉強会

16Openembedded project

http://www.openembedded.org/wiki/Main_Page

OpenEmbedded Project とは組み込み機器用のLinux ディストリビューションを作るためのソフトウェアフレームワーク

BirBake レシピの集合として維持、開発をしておりパッケージのソースのURL、依存関係、コンパイルオプション、インストールオプションをまとめたものであるビルドする場合にはこれらの情報を使用して、依存関係を解決し、パッケージをクロスコンパイルし、パックし、ターゲット機器にインストールできるようにします。

ルートファイルシステムとカーネルを含んだ完全なイメージを作成することもできる。最初の段階として、フレームワークはターゲット・プラットフォーム用のクロスコンパイル・ツールチェーンをビルドします。

Page 17: ZynqMP勉強会

17yoctoの設定

設定するのはここ

build/conf/bblayers.confbuild/conf/local.conf

もっと、食い込むならmeta-俺々(俺々レシピ)を作ればいい!

Zynq-7000 + Cyclone V SoCのハイブリッドLinuxディストリビューション

      Xilteraディストリビューション提供中!

Page 18: ZynqMP勉強会

18ZynqMPのLinuxディストリビューション

XilinxのWiki

http://www.wiki.xilinx.com/Yocto+for+zynqmp

とりあえず、ここを見ればyoctoでZynqMP用Linuxディストリビューションを構築することが出来る。標準的なビルド手順とかここに書いているので迷うことはないだろう。

Page 19: ZynqMP勉強会

19ZynqMP用linaroビルド

今回はyoctoではなく、linaroでLinuxディストリビューションを構築!

linaroの魅力?

● ARMに特化していること● ARMバイナリが少し小さくなること● ARMバイナリが少し速くなること

Page 20: ZynqMP勉強会

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 回のリリースもされているようです。

Page 21: ZynqMP勉強会

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

Page 22: ZynqMP勉強会

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"

Page 23: ZynqMP勉強会

23ep108って、なにもの?

たぶん、これなのかな?

Xilinx Virtex UltraScale FPGA VCU108 Evaluation Kithttp://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だよ?

Page 24: ZynqMP勉強会

24Linuxディストリビューションのビルド

必要最低限のLinuxディストリビューションを構築するなら

% bitbake core-image-minimal

X Window+Matchboxにするなら

% bitbake core-image-sato-sdk

linaroの最小限なら・・・

% bitbake linaro-image-minimal

作成できるディストリビューションイメージはたくさんあるので、自分自身のシステムにあうのを探すのが良いだろう。

Page 25: ZynqMP勉強会

25生成物は?

build/tmp/deploy/images/ep108-zynqmpにできる

core-image-minimalならcore-image-minimal-ep108-zynqmp.cpiocore-image-minimal-ep108-zynqmp.cpio.gz.u-bootcore-image-minimal-ep108-zynqmp.cpio.u-bootcore-image-minimal-ep108-zynqmp.tar.gz

linaro-image-minimalならlinaro-image-minimal-ep108-zynqmp.cpiolinaro-image-minimal-ep108-zynqmp.cpio.gz.u-bootlinaro-image-minimal-ep108-zynqmp.cpio.u-bootlinaro-image-minimal-ep108-zynqmp.tar.gz

Image-ep108-zynqmp.binImage-zynqmp-ep108.dtbmodules-ep108-zynqmp.tgz

u-boot-ep108-zynqmp.binu-boot-ep108-zynqmp.elf

Page 26: ZynqMP勉強会

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

Page 27: ZynqMP勉強会

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/cpuinfoprocessor : 0Features : fp asimd evtstrm aes pmull sha1 sha2 crc32CPU implementer : 0x41CPU architecture: 8CPU variant : 0x0CPU part : 0xd03CPU revision : 4

processor : 1Features : fp asimd evtstrm aes pmull sha1 sha2 crc32CPU implementer : 0x41CPU architecture: 8CPU variant : 0x0CPU part : 0xd03CPU revision : 4

processor : 2Features : fp asimd evtstrm aes pmull sha1 sha2 crc32CPU implementer : 0x41CPU architecture: 8CPU variant : 0x0CPU part : 0xd03CPU revision : 4

processor : 3Features : fp asimd evtstrm aes pmull sha1 sha2 crc32CPU implementer : 0x41CPU architecture: 8CPU variant : 0x0CPU part : 0xd03CPU revision : 4

確かに4コアを認識した。それって、当たり前で面白くない。Cortex-R5のコードは作れないのか?

Page 28: ZynqMP勉強会

28QEMUを動かしてみる

         実際に動かしてみましょう

Page 29: ZynqMP勉強会

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

Page 30: ZynqMP勉強会

30懸案事項:コア間通信

コア間通信

Cortex-A53にリッチなLinux。Cortex-R5はもちろん、freertosだろう。

コア間通信が重要になるかな?

ここまでyoctoで構築できるかな?

Page 31: ZynqMP勉強会

31おしまい

おしまい