自動車の自動運転制御やモバイル基地局の無線処理等、組み込みシステムにはリアルタイム性を必要とするシステムが多くあります。Linux Foundation傘下のReal Time LinuxプロジェクトでメンテナンスしているPreempt RTパッチを適用すると、Linuxカーネルのリアルタイム性が向上します。
Cyclone V SoCのカーネルは、すぐにPreempt RTが利用できるようになっているので、動かしてみましょう!
カーネルのコンフィグレーションとビルド
Linuxカーネル ソースをPreempt RTのブランチに切り替えて、コンフィグを有効にして、再ビルドします。
# 環境変数の設定 $ . /opt/poky/2.1.1/environment-setup-cortexa8hf-neon-poky-linux-gnueabi # Preempt RTのブランチに切り替え $ cd linux-socfpga.git $ git checkout -b socfpga-4.1.22-ltsi-rt remotes/origin/socfpga-4.1.22-ltsi-rt # コンフィグでPreempt RTを有効に $ make nconfig # コンパイル $ make zImage # ビルドしたイメージをSDカードへコピー $ cp arch/arm/boot/zImage SDカードのFATパーティションのマウントポイント
コンフィグの変更方法
ベンチマーク
ベンチマーク プログラムは前回と同じrt-testsを使用します。 # ソースのダウンロード $ git clone http://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git # 環境変数の設定 $ . /opt/poky/2.1.1/environment-setup-cortexa8hf-neon-poky-linux-gnueabi # コンパイル $ cd rt-tests $ make # 今回使用するhackbenchをSDカードへコピー $ cp hackbench SDカードのrootfsパーティションのマウントポイント/適当なディレクトリー
ネットワークやファイルシステムの負荷を掛けてベンチマークしてみます。ビデオでは大きな差が現れませんでしたが、より長時間実行してみると差が現れます。
下記の例では、デフォルトのカーネルではワーストケースで200ミリ秒以上の遅延が発生しているのに対して、Preempt RTではワーストケースでも10ミリ秒以内に収まっています。
アルテラ社製 Cyclone V SoC搭載ボード
アルテラ SoCは、プロセッサ、ペリフェラル、およびメモリ・インタフェースで構成される Armベースのハード・プロセッサ・システム (HPS) と、カスタマイズ可能なFPGA ファブリックを広帯域幅インタコネクタ・バックボーンで統合した製品です。ハードIPには、PCI Express Gen2やマルチメモリポート、ECC、メモリ保護、高速シリアルトランシーバを搭載し、性能および消費電力の低減とプログラマブル・ロジックの柔軟性という特長を兼ね備えました。これまでCPUとFPGAで構成されたシステムボードサイズを大幅に削減することができます。今回の講座では、テラシック社製「DE0-Nano-SoC Kit/Atlas-SoC Kit」を使用します。
日本アルテラ株式会社
ローターバッハ社製 TRACE32
世界中で最も使われているハードウェアアシストデバッガTRACE32。ArmだけでなくNios IIはもちろん、70以上のプロセッサアーキテクチャをサポートしているのが、TRACE32。SMPシステムのマルチコア対応では、複数のコアを同時に制御し、参照コアを切り替えながらシームレスにデバッグを進めることができます。また、Linux等のSMP対応OSのデバッグをサポートする「OS認識機能」が標準装備されていることも特徴です。これにより、デバッグ対象のタスクが何れのコアに割り当てられているかを気にすることなく、ユーザ空間で動作しているプログラムのデバッグをスムーズに進めることができます。
日本ローターバッハ株式会社
組み込みLinux導入/開発支援サービス
組込みLinuxによりお客様の装置開発に新たな価値を提供します。
富士通コンピュータテクノロジーズ
こちらも是非
“もっと見る” 組み込みLinux|Cyclone編
Cyclone V SoCをLinuxでコンフィグしてみよう!
Cyclone V SoCの最大の特徴であるFPGAは、Linux動作中に動的にコンフィグレーションすることができます。カーネルのコンフィグとビルドをして、FPGAのコンフィグレーションをしてみましょう!
Linuxでプロファイルしてみよう!
Linuxはperfやftrace等、プロファイルやトレースを採取するツールが揃っています。TRACE32を使ったプロファイルやトレースはArmコアの機能を使って本番に近い環境で実施することができるので、Linuxで精度の高い情報を得ることができます。
Linuxカーネルをコンパイルしてみよう!
linuxカーネルをコンパイルして、デバッグする方法を紹介します。Linuxカーネルは、必要な機能を選択するコンフィグを行ってから、コンパイルします。カーネル本体はzImage、カーネルが読み込むボード毎の設定がdtbです。