組込みLinuxシステムに関する調査研究中川 晋輔
組込みシステムの要素技術は幅広い分野の産業を支える重要な技術である。本研究では、組込みLinuxシステムの開発手順および開発環境構築方法について調査を行い、その応用例として温湿度測定システムの試作を行った。

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

１.はじめに３.組込みLinuxシステムの試作

組込みシステムとは、各種の機械や機器に組み込

３.１ 組込みLinuxシステムの開発手順

まれ、その制御を行うコンピュータシステムのこと

組込みLinuxシステムの開発では、プログラムを(1)をいう 。その要素技術は、自動車、家電、工作機開発する環境（以下、ホストと呼ぶ）と動作させる械など、幅広い分野の産業を支える極めて重要な技環境（以下、ターゲットと呼ぶ）が異なり、作成し術となっている。

たソフトウェアを開発側から動作側へ転送して実本研究では、オープンソースソフトウェアを組込行するクロス開発という手法を採用している。今回

みシステムに利用することを目的に、組込みLinuxの温湿度測定システムの開発は、以下の手順で行っシステムの開発手順および開発環境構築方法につた。

いて調査を行い、応用例として温湿度測定システム①ハードウェアの選定を試作した。以下、これらについて報告する。

②

Linuxカーネルソースの入手③

開発環境の構築

２.組込みLinux④

ブートローダ／ROMモニタの用意

Linuxは、マルチタスク、仮想メモリ、共有ライ⑤

Linuxカーネルのハードウェアへの移植

ブラリ、デマンドローディング、メモリ管理、ネッ⑥

Linuxカーネルのコンフィグレーション

トワーク機能などを含んだUNIXクローンのOSであ⑦

デバイスドライバの開発る。Linuxはもともとデスクトップ環境向けに開発⑧

ユーザーランドの構築されたが、現在では、ネットワークサーバのOSとし⑨アプリケーションの開発ても広く利用されている。そして近年、組込みシス⑩

ハードウェアへの搭載（ROM化）

テ ムの分 野で も採用 され るよう にな ってきた。
Linuxはソースが入手可能でロイヤリティーフリー、またデバイスドライバ、ネットワークプロトコルス

３.２ 温湿度測定システムの概要
温湿度測定システムの概要を図１に示す。

タック等のミドルウェアが豊富で動作が安定してHUBいるなどの特徴がある。これらのメリットがあるこ

LCDとから、組込みシステムの分野でOSにLinuxを採用

温度・湿度センサすることが増えてきている(2)。

ホスト
ＴＦＴＰサーバ
ＮＦＳサーバ

図１- 42 -

ターゲット

温湿度測定システムの概要

機能は以下のとおりである。

３.４ Linuxカーネルソースの入手① 温度・湿度センサを用いて室内の温度と湿度

通常、LinuxカーネルソースはWebサイト「TheLinux Kernel Archives」(3)から最新のソースコードを測定② 測定値をLCDパネルに表示を入手することができる。今回はターゲットのCPU③ ネットワークを通して測定値をホストへ転送に株式会社ルネサステクノロジのH8/300Hを選定したため、フルスペックのLinuxではなく、マイクロコントローラ用のLinuxであるuClinux(4)(5)(6)を採用

３.３ 温湿度測定システムの仕様
ターゲットは㈱秋月電子通商のAKI-H8/3069Fフした。

ラッシュマイコンLANボード、温度・湿度センサは３.５ 開発環境の構築

Sensirion社のSHT11、LCDモジュールはSUNLIKE社のSC1602BS*Bである。また、ターゲットに外部メモリ

クロス開発ツールには、半導体ベンダが提供するとして16MBのDRAM（沖電気工業㈱MSM5117800F-60）

開発環境、サードパーティが提供する開発環境、おを増設した。ターゲットの仕様を表１に、温度・湿よびFree Software Foundation(FSF)が提供するオ度センサの仕様および外観を表２、図２に示す。

ープンソースのGNU開発環境などがあるが、今回は、オープンソースが利用できるGNU開発環境を採用した(7)。また、開発したプログラムを転送するための表１ ターゲットの仕様
AKI-H8/3069FフラッシュマイコンLANボード

ファイル転送サーバ（TFTPサーバ）もホストに構築

CPU

H8/3069Fした。使用した開発ツールを表３に示す。ターゲッ

ROM

512KB

トとホストが同じOS（Linux）を使用することで、特殊な場合を除き、ロジックの検証をホスト上で行（フラッシュメモリ）うことが可能になる。

RAM

16KB

外部メモリ

16MB DRAM＋16MB DRAM

ネットワーク

RTL8019AS

コントローラ（NE2000互換）

表２

表３

温度・湿度センサの仕様

SHT11

開発ツール

ホストのOSLinux（Fedora Core 5）

コンパイラ

gcc-3.4.3

バイナリユーティリティ

binutils-2.15

ライブラリ

newlib-1.13.0

温度

湿度

デバッガ

insight-6.0

測定範囲-40～+123.8℃

0～100％RH

ライタ

h8write

分解能0.01／14ビット

0.03／12ビット
３.６ Linuxカーネルの構築
Linuxカーネルは、コンフィグレーションツールを利用し、必要なデバイスドライバや機能を組み込むことができる。一般的なコンフィグレーションの方法には、テキスト形式（make config）、簡易グラフィックメニュー形式(make menuconfig)、GUI形式(make xconfig)の３種類がある。今回は、ソース
コ ードベ ース のディ スト リビュ ーシ ョンである
uClinux-distを用いた。簡易グラフィックメニュー
形式での設定画面を図３に示す。

図２ 温度・湿度センサ- 43 -

スタート

I/Oポートを初期化

変数およびLCDボードを初期化

温度を測定

湿度を測定

温度・湿度を表示

図３

簡易グラフィックメニュー設定画面

図５

温湿度測定プログラムのフローチャート

Linuxカーネル自体は、自分自身を起動する機能温度・湿度センサの読み取り値から温度および相対を持っていない。そのため、パソコンのBIOSに相当湿度への変換はデータシートに記載されている次するブートローダが必要となる。今回は、RedHat社

式にて求めた。

が開発したRedBootを採用した。
T = d1 + d2DT
３.７ アプリケーションの開発

T:温度[℃]

３.７.１ 温湿度測定回路

d1、d2:温度変換係数（d1=-40.0 d2=0.01）
DT:温度読み取り値

温湿度測定回路を図４に示す。温度・湿度セン
サはH8マイコンのI/Oポート６に、LCDモジュール

H = c1 + c2DH c3DH2

はI/Oポート４に接続し、H8マイコンと温度・湿度センサ間はシリアル通信を行う。

H:相対湿度[%RH]c1、c2、c3: 相対湿度変換係数+5V

H8/3069Fマイコン
10k59P6160P62P45P44P43P42P41P40（c1=-4 c2=0.0405 c3=-2.8×10-6）

温度・湿度センサ
SHT114 Vdd
2DATA
3SCK1GND

DH:湿度読み取り値+5V242321201918LCDモジュール
SC1602BS*B

湿度の測定を例に、H8マイコンと温度・湿度セン

2Vdd
6E
4RS
14DB713DB612DB511DB41Vss

サ間で送受信する信号のタイムチャートを図６に示す。
転送開始
信号

コマンド

測定中

ＤＡＴＡ

図４ 温湿度測定回路

ＳＣＫ765432

10
ＡＣＫ

測定データ

３.７.２ 温湿度測定プログラム

ＤＡＴＡ

温湿度測定プログラムのフローチャートを図５

ＳＣＫ765432107654321

ＡＣＫに示す。温度と湿度の測定は、H8マイコンで作成しＣＲＣデータたクロック（SCK）に同期させてデータライン（DATA）

ＤＡＴＡを「High」および「Low」に変動させることによりＳＣＫ76543ＡＣＫ

次の測定

210ＡＣＫ行う。

マイコンからの出力センサからの出力

図６- 44 -0

湿度測定時のタイムチャート例

さらに、測定値をネットワークを通してホストへ転送するためにTCP/IPプロトコルを利用した。測定値転送プログラムのフローチャートを図７に示す。

スタート

接続を確立

測定プログラムを実行

測定値を転送測定値をファイルへ書き出し

終了条件

図８

温湿度測定システムの外観

ストップ

図７

測定値転送プログラムのフローチャート

３.８ ハードウェアへの搭載
今回試作したシステムのカーネルおよびファイルシステムの容量は合計1.4Mバイトであるが、ターゲットの内蔵メモリは512Kバイトである。そこで、NFSサーバをホスト上に構築し、カーネルをターゲットの外付けDRAMに転送して動かす方法を用いた。
図９

恒温恒湿槽での温度と湿度の測定

３.９ 温湿度測定システムの動作結果
温湿度測定システムの外観を図８に示す。恒温恒湿槽を使用し、システムの動作を行った。恒温恒湿槽は運転開始１時間後に温度５０℃、湿度３０％RHとなるように設定し、その状態を１時間保った。測定状況を図９に、転送された測定値を図１０に示す。
転送された測定値は左から温度、湿度、測定日時の順でファイルに保存される。また、測定値の時系列での変化を図１１に示す。恒温恒湿槽の設定温度および設定湿度とほぼ同じ値を測定できていることが分かる。

図１０- 45 -

測定値転送結果

(4)http://uclinux-h8.oscj.net/(5)http://uclinux.quake4.jp/uClinux/Chapter2/

80

uClinux-dist-sbcrbook20070218.tar.gz

60(6)http://uclinux-h8.sourceforge.jp/

40(7)http://uclinux.quake4.jp/uClinux/Chapter4/

20

h8tools_bin.tar.gz

℃

100

0
14:26:00

14:56:00

15:26:00
時刻

15:56:00

16:26:0015:56:00

16:26:00（a）温度
100％RH

806040200
14:26:00

14:56:00

15:26:00
時刻（b）相対湿度
図１１

測定値の時系列変化

４.おわりに組込みLinuxシステムの開発手順および開発環境構築方法を調査し、温湿度測定システムを試作した。
また、恒温恒湿槽を用いてシステムの動作検証を行った。その結果、温度、湿度ともに正常に測定できること、さらに測定値をホストへ転送できることが確認できた。
今後は、カーネルをターゲット上に搭載し、単体でも動作可能なシステムに改良する予定である。

文献(1)高田広章、組込みシステム開発の要素技術と標準化、情報処理Vol.46 No.7(2005年4月) p417-422(2)2006年度 組込みシステムにおけるリアルタイ
ムOSの利用動向に関するアンケート調査報告書、社団法人トロン協会
http://www.assoc.tron.org/jpn/research/data/survey2006J.pdf(3)http://www.kernel.org- 46 -