今回は、Cortex-A53上のLinuxでコアとペリフェラルの関係を見てみましょう。Linuxは基本的にはマルチコアはSMP (Symmetric Multi Processing)で動作するため、動的に空いているコアに処理を割り当てます。ただし、静的に特定の処理を特定のコアへ割り付けることも可能です。その具体的な方法を見てみましょう。
割り込みがどのコアで処理されているかは、下記のコマンドで確認できます。
# cat /proc/interrupts
/proc/irq
以下にIRQ番号毎にディレクトリーが配置されています。
IRQ番号のディレクトリーへ入ると割り込みソース毎に設定するファイルが配置されています。smp_affinity
は、割り込みをどのコアで制御するか設定するファイルです。MPSoCは4コアなので4bitを16進数で表現されます。
最下位ビットからコア0、コア1、コア2、コア3で、ビットが立っているとそのコアで割り込みを処理する設定になります。デフォルトは、すべてのコアで割り込みを処理する1111bの16進数であるfです。
コア2でのみ処理するには0100bの4を、コア2と3で処理するには1100bをecho
コマンドで書き込みます。
# cat smp_affinity_list
を実行すれば、どのコアで割り込みを処理する設定か見やすく表示できます。
IRQ番号31のEthernetはコア3で、IRQ番号48のUSBはコア2で処理されるように設定して、それぞれのデバイスを動作させると/proc/interrupts
は設定した通りに動作することが確認できます。
このSMP Affinityをうまく活用すると、例えば、ネットワークの処理をコア3に割り当て、その他の処理をコア0-2に割り当てることで、クリティカルなネットワークの処理に十分なリソースを割り当てるというようなことも可能で、これまでLinuxの導入に踏み切れなかった機器への導入もしやすくなると思います。
ぜひ様々なユースケースで評価してみてください!
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 Ⅱ」を選択しています。
Zynqに搭載されたPS部を活用し、仮想化ソフトウェア「Xen」を実行してみよう!
今回は、MPSoCのPS部を活用して、Linuxの仮想化の実装であるXenを動かしてみましょう。MPSoCは、Arm Cortex-A53クアッド コアで複数のOSを動作させられる高いパフォーマンスなので、仮想マシン(VM)を動かすことができます。