Linuxを利用した小規模組込みシステムの事例研究
中川 晋輔
Linuxをコンピュータ資源の少ない小規模組込みシステムで利用することを目的とし、安価で導入しやすく、高付加価値化が可能なシステム開発のプラットフォームを試作した。
さらに、そのプラットフォームを用いて温度制御の実験を行い、動作を確認した。

キーワード： 組込みLinux、オープンソースソフトウェア、デバイスドライバ、TCP/IP

１.はじめにで動作し、I/O制御、ネットワーク通信を行うこと

デジタル家電や携帯電話等のOSとしてLinuxが搭ができる。その外観を図１に、回路図を図２に示す。

載されたものがあり、組込みLinuxと呼ばれている(1)。

また、仕様を表１に示す。組込みLinuxには、uClinux

Linuxはソースが入手可能でロイヤリティーフリー、（カーネル2.6.11）(4)を採用した。

またデバイスドライバ、ネットワークプロトコルス
タック等のミドルウェアが豊富で動作が安定しているなどの特徴がある。このようにLinuxは高機能かつ低コストであるため、組込みシステム分野で、今後さらに普及する可能性がある。
前報(2)では、組込みLinuxシステムの開発手順および開発環境構築方法を調査し、温湿度測定システムを試作した事例を報告した。本報では、前報(2)と異なるマイコンボードにLinuxを組込み、システム開発のプラットフォームを試作するとともに、そのプラットフォームを用いて温度制御を行った事例について報告する。

図１

プラットフォームの外観

図２

プラットフォームの回路図

２.プラットフォームの試作
２.１ プラットフォームの概要
前報(2)で利用した㈱秋月電子通商のAKI-H8/3069F
フラッシュマイコンLANボードはメモリ容量が少なく、単体で動作させることができないため、今回はアルファプロジェクト㈱のµST-SH2(3)を採用した。このボードは、CPUコアにSH7619、プログラムメモリ用 に フ ラ ッ シ ュ ROM8MB 、 デ ー タ メ モ リ 用 にSDRAM32MBが搭載され、Ethernetの機能を備えている。このボードに温度センサ、ファン、発熱体、液晶表示器、スイッチを付加し、プラットフォームのハードウェアとした。本プラットフォームは、単体

表１

プラットフォームのハードウェア仕様

品名

型式

製造元

マイコン

µST-SH2

アルファプロジボード

CPU:SH7619ェクト㈱

温度センサ

ファン

発熱体

温湿度センサSHT11
CPU冷却ファンSAN ACE MC
フィルムヒータ
FH-80

SENSIRION

山洋電気㈱共立電子産業㈱

液晶表示器

LCD SC1602BSLBSUNLIKE

スイッチ

形B3F-1020

オムロン㈱２.２ クロス開発環境
クロス 開発 環境は アル ファプ ロジ ェクト㈱のµST-SH2 Linux開発 キット (3) を 採用 した。 これはWindows上で動作するcoLinuxを使用し、コンパイラ、ブートローダ等のSH用クロス開発ツールが導入されたものである。今回はWindowsXP上にクロス開発

図３

プログラムのフローチャート環境を構築した。
２.４ LCDデバイスドライバ
２.３ アプリケーションソフトウェア
試作したプラットフォームを用いて、温度制御の実験を行うため、以下のプログラムを作成した。
z スイッチにより、運転開始および終了を制御
z 温度を測定し、測定値と設定値をLCDに表示
z 設定値を維持するようにファンおよび発熱体をON/OFF制御
z 測定値をTCP/IPによりデータ収集サーバにネットワーク転送
温度測定および測定値のネットワーク転送は前報(2)で作成したプログラムを使用した。LCDへの表示はデバイスドライバを作成して行った。ファン、発熱体、およびスイッチは、SHマイコンのI/OポートBでON/OFF制御を行った。作成したプログラムのフローチャートを図３に示す。

デバイスドライバは、カーネルにハードウェア（デバイス）を認識させ、アプリケーションからそのハードウェアを利用するために必要なソフトウェアのことを言う(5)。デバイスドライバ化することで、ユーザはハードウェアを意識することなく、特定のシステムコールを実行し、ハードウェアを制御
す る こ と が で き る 。 今 回 、 LCD （ SUNLIKE 社
SC1602BSLB）用のデバイスドライバを作成し、カーネルに静的に組込んだ。その構成を図４に示す。
デバイスドライバは、モジュール初期化関数、モジュール終了関数、システムコールで構成した。シ
ステムコールは、open、close、write、ioctlの各関数を実装した。ioctl関数のプロトタイプを以下に示す。
int ioctl(int fd, int cmd);
第1引数(fd) ：デバイスファイルのハンドル
第2引数(cmd) ：表２に示すコマンドアプリケーション

カーネル
OSLCD
デバイスドライバ

TCP/IP
デバイスドライバ

[℃]
31.0
30.5
30.0
29.5
29.0
28.5
28.0
27.5
27.0
26.5
26.00

LCD
コントローラハードウェアデバイスドライバの構成

200

図６

Ethernet
コントローラ（網掛け部が作成したLCDデバイスドライバ）
図４

100

300

400500600[sec]

400500600[sec]

400500600[sec]

温度測定結果

[V]
20.0
15.0

表２ ioctl関数のコマンド
コマンド

10.0

実行内容

LCD_CLEAR

表示をクリアLCD_ON_OFF

表示、非表示を選択

LCD_ONE_SET

表示アドレスを1行目にセット

LCD_TWO_SET

表示アドレスを2行目にセット

5.0
0.0
0

100200300（ファンのON/OFF）
[V]
20.0

２.５ 温度制御実験
設定温度を30℃とし、温度制御の動作確認を行っ15.0た。設定温度と測定値をLCDに表示した結果を図５10.0に、温度測定結果を図６に、ファンおよび発熱体の5.0

動作結果を図７に、測定値をデータ収集サーバにネットワーク転送した結果を図８に示す。

0.0
0100200300（発熱体のON/OFF）
図７

図５ LCD表示結果

ファンおよび発熱体の動作結果

(4) http://www.uclinux.org/(5) 平田豊Linuxデバイスプログラミング(2008)

ソフトバンククリエイティブ㈱

図８ 測定値転送結果

３.おわりにLinuxをコンピュータ資源の少ない小規模組込みシステムで利用することを目的とし、安価で導入しやすく、高付加価値化が可能なシステム開発のプラットフォームを試作した。さらに、試作したプラットフォームを用いて温度制御を行い、スイッチによる動作開始終了制御、温度測定、デバイスドライバによるLCD表示、ファンおよび発熱体のON/OFF制御、ネットワークを介した測定値の観測等が正常に動作することを確認した。今回試作したプラットフォームは恒温槽の制御部等に応用することが可能である。
今後は、収集した測定値をネットワーク上のパソコンにグラフとして表示させる等、リモート観測の機能を向上させるとともに、プラットフォームをリモート制御する機能を追加する予定である。

文献(1) 中島達夫、組込みプレス Vol.14(2009) p12-17、㈱技術評論社(2) 中 川 晋 輔 、 広 島 市 工 業 技 術 セ ン タ ー 年 報
21(2007) p42-46(3) http://www.apnet.co.jp/product/ust/ust-sh2.html