ZynqMP勉強会
-
Upload
hidemi-ishihara -
Category
Engineering
-
view
1.056 -
download
4
Transcript of ZynqMP勉強会
©2016, Hidemi Ishihara, All rights reserved.
2016年2月20日
yocto for ZynqMP
ZynqMP勉強会
AQUAXIS TECHNOLOGY石原 ひでみ
2今日は何の話?
ZynqMP用 俺々 Linuxディストリビューションを構築してみた
って、話です。
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®
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.confbuild/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 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だよ?
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.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
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/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のコードは作れないのか?
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おしまい
おしまい