Linuxカーネルのコンパイル
Linuxカーネルは、必要な機能を選択するコンフィグを行ってから、コンパイルします。カーネル本体はzImage、カーネルが読み込むボード毎の設定がdtbです。
※一部は第4回にも掲載 ソースのダウンロード $ git clone https://github.com/altera-opensource/linux-socfpga.git 環境変数の設定 $ . /opt/poky/2.1.1/environment-setup-cortexa8hf-neon-poky-linux-gnueabi SoC FPGA用の $ cd linux-socfpga.git $ make socfpga_defconfig カーネルの機能を細かく設定 $ make nconfig コンパイル $ make zImage dtbs ビルドしたイメージをSDカードへコピー $ cp arch/arm/boot/zImage SDカードのFATパーティションのマウントポイント
機能の選択方法はいくつかありますが、今回はnconfigを紹介します。コンソール上のUIを操作して設定します。
例えば、デバッガを使うための設定は下記の順にメニューを進めて、項目を有効にします。
Kernel hacking ---> Compile-time checks and compiler options ---> [*] Compile the kernel with debug info
もし、わからない機能があったら、F2を押すことで詳しい情報を見ることができます。
Linuxカーネルのデバッグ方法
詳しくは冒頭のビデオで見てね!
ビデオで紹介したコマンドは、こちらです。 プロセス一覧の表示: メニューのLinux -> Display Processes 実行しているソースの表示: コマンドの B:: list /core 0 B:: list /core 1 レジスターの表示: コマンドの B:: register /core 0 B:: register /core 1 シンボルの表示・検索: 表示 -> シンボル -> ブラウズ ブレーク ポイントの設定: メニューのブレーク -> リスト
検索はウィンドウ上部にあるテキストボックスから行います。
ブレークは行番号の右をダブルクリックします。設定されると赤くマークされます。
アルテラ社製 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カーネルのコンフィグレーションを変えてみよう!
Cyclone V SoCのカーネルは、すぐにPreempt RTが利用できるようになっているので、動かしてみましょう!まずは、カーネルのコンフィグレーションとビルドを行います。Linuxカーネル ソースをPreempt RTのブランチに切り替えて、コンフィグレーションを有効にして、再ビルドします。
Linuxでプロファイルしてみよう!
Linuxはperfやftrace等、プロファイルやトレースを採取するツールが揃っています。TRACE32を使ったプロファイルやトレースはArmコアの機能を使って本番に近い環境で実施することができるので、Linuxで精度の高い情報を得ることができます。