開発環境の使い方
C/C++の場合
C/C++でプログラムを書く場合は、Yoctoの環境変数セットアップ スクリプトを実行します。
$ . /opt/poky/2.1.1/environment-setup-cortexa8hf-neon-poky-linux-gnueabi
Cをコンパイルする場合は環境変数CCに、C++をコンパイルする場合は環境変数CXXに最低限のコマンド オプションが設定されているので、次のようにコンパイルできます。
Cの例:
Cの例: $ $CC APS.c –o APS C++の例: $ $CXX APS.cc –o APS
もっと詳しく知りたい人は、ここを読んでね!
スクリプトの場合
Linuxは、Python, Perl, Shell Script等多くのスクリプトをサポートしています。
これらのスクリプトを使う場合は、SMARTでそれぞれのパッケージをインストールしてください。
Systemdとは
システムを管理するSystemd
SystemdはLinuxシステムを管理するフレームワークです。従来のinitデーモンに替わるシステムの起動だけでなく、プロセス間通信・デバイス マネージャー・ロギング・コンテナやブートローダーなど多くのOSの基本機能を提供します。Red Hat Enterprise Linux, Ubuntuを始め、AtlasボードにプリインストールされているAngstrom等多くのLinuxディストリビューションがSystemdを採用しています。
Systemdを有効にしてビルドします。
pokyのディレクトリーで、 $ . oe-init-build-env build.armv7 conf/local.confの最後に DISTRO_FEATURES_append = " systemd" VIRTUAL-RUNTIME_init_manager = "systemd" DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" VIRTUAL-RUNTIME_initscripts = "“ を追加します。 ビルド! $ bitbake core-image-sato
もっと詳しく知りたい人は、ここを読んでね!
ビルドした後はSMARTでインストールしてください。
アプリを自動起動する方法
systemdはunitという単位でタスクの管理を行います。アプリを自動起動するには、下記のように登録します。
aps-linux.service [Unit] Description=APS Linux sample script # 起床待ち状態に移行 [Service] Type=oneshot # 管理方法を指定します。oneshotはアプリが実行完了した時点で終了と判断します ExecStart=/home/root/aps-linux.sh # 実行するアプリを指定します [Install] WantedBy=multi-user.target # どのタイミングでアプリを実行するかを指定します
/lib/systemd/system にunitファイルを保存します。続いて下記のコマンドを実行すると自動起動の設定が完了します。
$ systemctl daemon-reload $ systemctl enable aps-linux
unitファイルの書き方をもっと詳しく知りたい人は、ここを読んでね!
Systemd全体をもっと詳しく知りたい人は、ここを読んでね!
自動起動できてるか確認!
$ systemctl status aps-linux ● aps-linux.service - APS Linux sample script Loaded: loaded (/lib/systemd/system/aps-linux.service; enabled; vendor preset: enabled) Active: activating (start) since Fri 2015-10-09 11:49:00 UTC; 21s ago Main PID: 1221 (aps-linux.sh) CGroup: /system.slice/aps-linux.service ├─1221 /bin/sh /home/root/aps-linux.sh └─1280 sleep 60 Oct 09 11:49:00 atlas systemd[1]: Starting APS Linux sample script... 60秒後 $ systemctl status aps-linux ● aps-linux.service - APS Linux sample script Loaded: loaded (/lib/systemd/system/aps-linux.service; enabled; vendor preset: enabled) Active: inactive (dead) since Fri 2015-10-09 11:50:01 UTC; 28s ago Process: 1221 ExecStart=/home/root/aps-linux.sh (code=exited, status=0/SUCCESS) Main PID: 1221 (code=exited, status=0/SUCCESS) Oct 09 11:49:00 atlas systemd[1]: Starting APS Linux sample script... Oct 09 11:50:01 atlas systemd[1]: Started APS Linux sample script.
aps-linux.sh #!/bin/sh cd /sys/class/leds/fpga_led0 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led1 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led2 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led3 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led4 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led5 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led6 echo timer > trigger sleep 0.1 cd /sys/class/leds/fpga_led7 echo timer > trigger sleep 60
アルテラ社製 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で精度の高い情報を得ることができます。