MPSoCに搭載されたArm上ソフトウェアをデバッグしよう
今回は、Arm Cortex-A53上のLinuxとArm Cortex-R5上のFreeRTOSをデバッグしてみたいと思います。デバッガとしては、Armを使ったシステム開発にて根強い人気を誇る「adviceLUNA Ⅱ」を選択しています。
DTSインサイト製「JTAG ICE デバッグツール adviceLUNA Ⅱ」
前半では、MPSoC上のプログラムを効率的にデバッグできる、adviceLUNA Ⅱの特長を紹介。後半では、動画にて紹介しているOpenAMPのデバッグ方法(マルチコアのデバッグ方法)を紹介いたします。
adviceLUNA Ⅱを使うメリット
adviceLUNA Ⅱは、DTSインサイト製のJTAG ICEデバッグツールです。adviceLUNA Ⅱは根強い人気を誇っており、便利な機能を多く持っています。特に、以下の機能はZynq Ultrascale+ MPSoCの開発において、とても便利な機能です!
すべてのArmコアに対応
adviceLUNA Ⅱは、すべてArmのコアに対応しています。もちろん、Zynq Ultrascale+ MPSoCに内蔵されたArm Cortex-A53とArm Cortex-R5を同時にデバッグすることができます。つまり、開発を簡単に始めることができます(Cortex-A専用、Cortex-M専用のような複数のデバッガは不要です)。
1台でマルチコアすべてに接続できる
1台のadvice LUNA ⅡをMPSoCへ接続するだけで、デバッグ用ソフトウェア「microVIEW-PLUS」を使って各コアそれぞれを同時にデバッグすることができます。
ICEデバッガ機能はもちろん、トレースや動的テストツールにも対応。
Zynq Ultrascale+ MPSoC上の開発は、ハードウェアからOS、デバイスドライバ、アプリケーションに至るまで様々な課題があります。adviceLUNA Ⅱは、開発初期のデバッガとしての利用方法に加えて、実行中の状態監視(トレース機能)や動的テストツールとしても使うことができます。
簡単に使い始めるための「スタートアップガイド」
adviceLUNA Ⅱと、microVIEW-PLUSを使うための設定や、プロジェクトの作成、デバッグの第一歩など、開発を始める際に困ることが無いように、DTSインサイト「advice LUNA Ⅱサポート」ページから、各ハードウェアに沿った手順が揃った「スタートアップガイド」を入手できます(ユーザ登録必要)。
MPSoC上で動くOpenAMPをadviceLUNA Ⅱでデバッグしよう!
それでは早速、第4回で動かしたArm Cortex-A53上のLinuxとArm Cortex-R5上のFreeRTOSがOpenAMPでコア間通信する部分をデバッグしてみましょう。詳しくは、ビデオをご覧ください。
ZCU102とadviceLUNA Ⅱの接続
adviceLUNA ⅡはJTAG ICEデバッガのため、ZUC102のJTAGポートに接続しましょう。adviceLUNA ⅡとmicroVIEW-PLUSの設定方法の詳細は、スタートアップガイドをご参照ください。
OpenAMPの通信プログラムをデバッグしてみよう
Arm Cortex-A53とArm Cortex-R5でそれぞれデバッガを立ち上げ、同期の設定を行います。そして、FreeRTOSがLinuxへRPMsgを送信するところでbreakを設定して、デモ プログラムを実行すると、FreeRTOSがBreakするのに同期してLinuxもbreakします。メモリやレジスタの内容を簡単に確認できますし、シリアルコンソールも止まってくれますので、どういったデータが送受信されたのかを簡単に確認できます。デバッグが捗りますね!
まとめ
いかがだったでしょうか?MPSoCは、Cortex-A53 x 4コアはもちろん、Cortex-R x2コアも活用できる、ディープな開発環境です。様々な情報が、Xilnxから続々と配信されています。まだまだ紹介したいポイントが多数ございます。今後も、APS初心者講座にご期待ください!
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を活用してみましょう。
Zynqに搭載されたPS部を活用し、仮想化ソフトウェア「Xen」を実行してみよう!
今回は、MPSoCのPS部を活用して、Linuxの仮想化の実装であるXenを動かしてみましょう。MPSoCは、Arm Cortex-A53クアッド コアで複数のOSを動作させられる高いパフォーマンスなので、仮想マシン(VM)を動かすことができます。
ペリフェラルの割り込みを静的にコアに割り付けてみよう!
今回は、Cortex-A53上のLinuxでコアとペリフェラルの関係を見てみましょう。Linuxは基本的にはマルチコアはSMP(Symmetric Multi Processing)で動作するため、動的に空いているコアに処理を割り当てます。ただし、静的に特定の処理を特定のコアへ割り付けることも可能です。その具体的な方法を見てみましょう。