HOME > ソフテックだより > 第325号(2019年3月6日発行) 技術レポート「Linux向けアプリケーション開発について」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第325号(2019年3月6日発行)
技術レポート

「Linux向けアプリケーション開発について」

1. はじめに

ソフテックでは、Linux向けのアプリケーション開発をいろいろと手掛けています。今回は、横河電機製のe-RT3 Linux対応CPUモジュール(以降、e-RT3)で動かすアプリケーションの開発方法について紹介します。

2. Linuxの構造

e-RT3のLinux構造は下図の通りです。

e-RT3のLinux構造
図1. e-RT3のLinux構造

ブートローダ

Linuxを起動するプログラムです。e-RT3の電源を入れると動作し、ハードウェアの初期化やカーネルのロードと実行を行います。e-RT3では、以下のように複数のブートモードが存在します。

・ネットワークブート
・フラッシュROMブート
・SDメモリカードブート

カーネル

LinuxOSの中心となる部分で、デバイス制御や実行中のアプリケーションのプロセス管理・制御を行います。

ユーザランド

ファイルシステムやOSS(Open Source Software)のライブラリやコマンドがあります。また、アプリケーションもユーザランドに格納して使用します。

3. e-RT3アプリケーションの開発環境

Xilinx社が無償配布する総合開発環境SDK(Software Development Kit)を使用します。e-RT3用BSP(Boad Support Package)をSDKに適応してe-RT3のアプリケーション開発を行います。

開発環境
図2. 開発環境

e-RT3用BSPは、入出力モジュール等の制御やCPUモジュールの管理等に必要なライブラリが用意されています。アプリケーションの開発は、このBSPが提供するAPIを使用してプログラムの作成を行います。 e-RT3用BSPは、横河電機のe-RT3 Webページからダウンロードできます。

また、Linux と聞くとコマンドライン入力を想像する方が多いと思いますが、SDKを使用することで、Linuxの経験が浅い人でも、Windowsアプリケーションの開発と同じような感覚で開発することができます。

4. 開発の流れ

開発の流れは、基本的に以下A〜Gのステップになります。

A.開発環境の立ち上げ
B.ターゲット・ホスト設定
C.プロジェクト作成
D. プログラム作成
E.デバッグ
F.自動起動設定
G.アプリケーションのダウンロード

4.1 開発環境の立ち上げ

開発環境の立ち上げ方法は、横河電機殿が提供するマニュアルに詳細に記載していますので、ここでの記載は省略します。

4.2 ターゲット・ホスト設定

Xilinx SDKのデバッガはEthernet経由でe-RT3との通信を行います。そのため、ターゲットとホストの設定を行います。ここでのターゲットとはe-RT3、ホストは開発用PCです。また、コマンドラインはRS-232C経由で使用するため、ターミナルエミュレータなどで接続します。

e-RT3のIPアドレスは、“/etc/network/interfaces”に設定されています。
以下はデフォルトの設定で、IPアドレスが「192.168.3.71」に設定されています。
変更する場合は、viコマンドを使用して変更します。

root@f3rp71:~# vi /etc/network/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface test
auto lo
iface lo inet loopback

# Wired or wireless interfaces
auto eth0
#auto eth1

#iface eth0 inet dhcp
iface eth1 inet dhcp

iface eth0 inet static
        address 192.168.3.71
        netmask 255.255.255.0
        gateway 192.168.3.1

なお、e-RT3のIPアドレスの変更は、Webメンテナンスツールでも可能です。ソフテックだより267号 e-RT3 plusの新機能についてでも紹介していますのでご参照ください。

4.3 プロジェクト作成

SDKにプロジェクトを作成して開発を行います。以下に“example1”のプロジェクトを作成する手順を記載します。

(1)Xilinx SDKのメニューからFile > New > Application Projectをクリックし、プロジェクトウィザードを起動します。

(2)プロジェクトウィザードが起動したら、以下の設定を変更して、Nextボタンをクリックします。

Project name:example1
Hardware Platform:F3RP7x_hw_platform(pre-defined)
Processor:ps7_cortexa9_0
OS Platform:linux

(3)“e-RT3 template project”を選択して、Finishボタンをクリックします。

(4)Project Explorerに作成したプロジェクトexample1と、e-RT3用のハードウェアプラットフォームプロジェクトF3RP7x_hw_platformの2つが自動的に作成されます。

(5)Project Explorerで作成したexample1を右クリックしてPropertiesを選択します。
プロパティダイアログが開いたら、C/C++ Bulid > Settings > Tool Settings > ARM Linux gcc linker > Librariesで“m3”ライブラリを追加します。
“m3”ライブラリを追加することで、BSPのAPIを使えるようになります。

4.4 プログラム作成

ここでは、例として、Slot2に装着したI/Oモジュールのリレー番号1が、ON出力するプログラムを作成します。
関数writeM3OutRelayP()がBSPの出力リレー書き込みのAPIになります。

上記プログラムを作成後、ファイルを保存すると、Xilinx SDKは自動的にビルドを開始して、e-RT3用のアプリケーションファイル“example1.elf”が作成されます。

4.5 デバッグ

Xilinx SDKのデバッガはe-RT3上で動作するSSHサービスを利用して、ファイル転送やシェルコマンドの実行をLANポート経由で行います。デバッグの準備は、横河電機殿が提供するマニュアルを参照ください。
デバッグを開始すると、アプリケーションの最初にブレークした状態のデバッグ画面になります。

この状態でResume(F8)ボタンをクリックすると、プログラムが実行され、Xilinx SDKのコンソールに“example success”が出力され、I/Oモジュールへの出力が成功となります。

4.6 自動起動設定

アプリケーションをダウンロードしただけでは、アプリケーションは実行されません。
ここでは、電源投入時にアプリケーションを自動的に起動する方法を紹介します。
e-RT3では、起動スクリプト“/etc/init.d/rc.local”に実行命令を記述します。
以下は、“example1.elf”を自動起動する場合の記述です。

root@f3rp71:~# cat /etc/init.d/rc.local
#!/bin/sh
#
# user start-up scripts
#
echo "user start-up scripts start..."
/root/example1.elf &
root@f3rp71:~#

なお、この起動スクリプトの変更についても、Webメンテナンスツールで変更することができます。

4.7 アプリケーションのダウンロード

作成したアプリケーションファイルのダウンロード方法として以下の方法があります。

・コマンドラインを実行してSDメモリカード経由でファイルコピーする
・SSHプロトコルを使用したSFTP経由のダウンロード
・e-RT3のシステムロード機能

ここでは「e-RT3のシステムロード機能」について紹介します。
手順は以下の通りです。

(1)SDメモリカードの“/opt/root”にアプリケーションファイル“example1.elf”を格納する。
(2)SDメモリカードをe-RT3に挿入する。
(3)e-RT3のMODEスイッチを7に合わせて電源投入すると、システムロード開始。
(4)e-RT3のRUN LEDが点灯すると、システムロード終了。(e-RT3の“/root”にロードされます。)

5. おわりに

今回はe-RT3 Linux対応CPUモジュールで動作するアプリケーション開発方法について紹介させていただきました。上記の通り、e-RT3ではツールや機能が揃っているため、それほどLinuxについて理解していなくても、それほど抵抗なくアプリケーションを開発することができました。しかし、Linuxの特性を活かした機能を実現する場合や問題が発生した場合等、Linuxについてよく理解していなければ対応することができません。引き続きLinuxについての理解を深める必要があると考えています。

(T.M.)

[参考資料]
IM 34M06M52-21 e-RT3 Linux対応CPU モジュール(F3RP71用)スタートアップ説明書
IM 34M06M52-22 e-RT3 Linux BSP(SFRD12 用)プログラミング説明書

関連ページへのリンク

関連するソフテックだより

ページTOPへ