今回は、MPSoCのPS部を活用して、Linuxの仮想化の実装であるXenを動かしてみましょう。MPSoCは、Arm Cortex-A53クアッド コアで複数のOSを動作させられる高いパフォーマンスなので、仮想マシン(VM)を動かすことができます。
Xenとは
Xenは現在、Linux Foundationのプロジェクトとしてメンテナンスされています(公式サイト)。歴史なども詳しく知りたい人はWikipediaも参照してみてください。
MPSoCでの実装についてはXilinxのWikiにも詳細が掲載されています。
Xenをビルドしましょう
Xenを含むrootfsを作成する
下記のコマンドでrootfsにXenのユーティリティを組込みます。選択するパッケージはスクリーンショットを参考にしてください。
$ petalinux-config -c rootfs
Linuxカーネルを設定する
下記のコマンドでカーネルの設定を行います。Xen上でゲストのLinuxカーネルを起動しやすいようにカーネルとrootfsを分離したイメージを生成します。具体的な設定はスクリーン ショットを参考にしてください。
$ petalinux-config
Xen用のデバイスツリーを設定する
下記のようにxen-overlayの記述を追記します。
$ cat project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi /include/ "system-conf.dtsi" /include/ "xen-overlay.dtsi" / { };
$ cat project-spec/meta-user/recipes-bsp/device-tree/device-tree.bbappend FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += "file://system-user.dtsi" SRC_URI += "file://xen-overlay.dtsi"
Linuxカーネルをビルドする
$ petalinux-build
ビルドが完了したら、下記のファイルをSDカードの第一FATパーティションにコピーします。
- BOOT.BIN
- Image
- rootfs.cpio.gz.u-boot
- system.dtb
- xen.ub
XenをMPSoCのボードで実行してみましょう!
u-bootのカウント ダウンが表示されたらEnterを入力するとプロンプトが表示されます。下記のオプションでDom0 (ホストOS)のLinuxをブートさせます。
ZynqMP> mmc dev $sdbootdev &&&& mmcinfo; load mmc $sdbootdev:$partid 1000000 system.dtb &&&& load mmc $sdbootdev:$partid 0x80000 Image; fdt addr 1000000; load mmc $sdbootdev:$partid 1030000 xen.ub; load mmc $sdbootdev:$partid 2000000 rootfs.cpio.gz.u-boot; bootm 1030000 2000000 1000000
Linuxにログイン後、下記のコマンドでDomU (ゲストOS)のLinuxをブートさせます。
Dom0のコンソールに戻るには、Ctrl + ] を入力します。
# xl create -c /etc/xen/example-simple.cfg
まとめ
Xenを活用することでレガシーなソフトウェア資産をOSごと仮想的に動作させたり、セキュアなアプリケーションを別空間で動作させたりできます。みなさんもXenで遊んでみてください!
Xilinx社製 Zynq® UltraScale+™ MPSoC搭載ボード
ザイリンクス社のZynq UltraScale+ MPSoC デバイスは、Quad-core Arm® Cortex®-A53とDual-core Arm Cortex-R5、最大1143KロジックセルのFPGAを搭載した、All Programmable SoCデバイスです。CPUコアの性能はもちろんのこと、DDR4対応やセキュリティのサポート、GPUにはDual-coreのMali™-400、USB、GbE、PCIe Gen2x4、DisplayPortをも搭載しています。開発ツールは、Vivado® Design Suiteをはじめ、SDSoCによるプログラマブルデバイスならではのシステム開発環境が利用できます。今回の講座では、Zynq UltraScale+を搭載した「ZCU102/ZCU104評価キット」を使用します。
最新情報をメーカーサイトで見る
DTSインサイト社製 adviceLUNA Ⅱ
情報家電などの組込み製品には、高機能であることや高い処理性能が求められています。LinuxやAndroidなどのプラットフォームには、マルチコアCPUが搭載されるようになり、システムは複雑かつ大規模化し、ソフトウェアのデバッグは困難を増しています。adviceLUNA Ⅱは、従来デバッガのデバッグ機能に加え、Linuxデバッグやマルチコアデバッグに対応した高度なデバッグ機能、トレース機能、測定機能、解析機能を提供することで、MMUの仮想記憶環境やマルチコアCPUで並行動作するような複雑なソフトウェアのデバッグをサポートします。
最新情報をメーカーサイトで見る
組み込みLinux導入/開発支援サービス
組込みLinuxによりお客様の装置開発に新たな価値を提供します。
富士通コンピュータテクノロジーズ
こちらも是非
“もっと見る” 組み込みLinux|MPSoC編
PMUを使いこなして、より安全なシステム設計にチャレンジ!
MUを使ってMPSoCの温度と電力を監視する 今回は、MPSoCのPMUを活用してみましょう。これまではMPSoCのArm Cortex-A53とArm Cortex-R5を活用してきましたが、今回はもう一つのプロセッサであるであるPMUを活用してみましょう。
adviceLUNA Ⅱを使ってOpenAMPのコア間通信をデバッグしよう!
今回は、Arm Cortex-A53上のLinuxとArm Cortex-R5上のFreeRTOSをデバッグしてみたいと思います。デバッガとしては、Armを使ったシステム開発にて根強い人気を誇る「adviceLUNA Ⅱ」を選択しています。
ペリフェラルの割り込みを静的にコアに割り付けてみよう!
今回は、Cortex-A53上のLinuxでコアとペリフェラルの関係を見てみましょう。Linuxは基本的にはマルチコアはSMP(Symmetric Multi Processing)で動作するため、動的に空いているコアに処理を割り当てます。ただし、静的に特定の処理を特定のコアへ割り付けることも可能です。その具体的な方法を見てみましょう。