体験!マイコンボードで組込みLinux

第10回 組込みボードへのさまざまな言語の導入[その2]

この記事を読むのに必要な時間:およそ 5 分

今回は前回に続いて,軽量で組込みに適したスクリプト言語であるLuaと,拡張性の高いtclをSH7706LSRボードに導入する方法について紹介します。

Luaインタープリタの導入

Lua言語とは?

Lua言語は,Pascal言語に近い簡素な文法で多様なデータ構造を記述でき,軽量かつ実用的なインタープリタ型のプログラミング言語で,スクリプト記述によるシステムの構成管理やラピッドプロトタイピングに適しています。

Lua言語処理系の設計における基本的な思想は,言語処理系にたくさんの機能を実現するのではなく,多種多様な機能を実現するための仕組みを提供することです。やたらに多くの機能を詰め込むことなく,シンプルな処理系のままで簡単に拡張できるようにしたのがLua言語処理系の特徴です。

たとえば,通常のC言語で書かれたアプリケーションプログラムにLua言語処理系を組み込んで処理したり,C言語で書かれたモジュールをLua言語処理系に追加して機能を拡張できます。特に,組込みボードでは標準的でないローカルなハードウェア制御を目的とすることが多いので,簡単にC言語で書かれたモジュールをLua言語処理系に追加して機能を拡張できる点は,組込みボードで使ううえでのメリットです。

Lua言語はインタープリタなので,各行ごとにインタラクティブに構文解析などを行うため,実行速度の点で不利になります。そのためLua言語処理系では,少しでも実行速度を向上させるためにLua言語のコンパイラも用意されていますので,あらかじめLua言語のコンパイラでコンパイルすることにより,実行速度を向上させることができます。

導入に際して

Luaインタープリタは軽量でポータブルな言語処理系で,依存するライブラリはほとんどありませんが,2本だけあります。依存するパッケージは,履歴機能をもつラインエディタライブラリであるreadlineと,画面制御機能もつncursesライブラリです。

これらのライブラリはPC上の組込みボード用のクロスコンパイラに対してインストールを行い,そのうち共有ライブラリはSH7706LSRボードにもインストールします。Lua言語処理系のソースコードはPCの環境に依存はしていませんが,組込みボードのクロス開発環境も考慮されていません。そのため,ソースパッケージMakefileの内容を書き換えなければいけません。

readlineの導入

まず,ここではreadline-6.1を導入します。readline-6.1.tar.gzをGNUのミラーサイト等からダウンロードして適当なフォルダにコピーして展開します。コンパイル環境は以下のように構築します。

 # ./configure --prefix=/usr/sh3-linux/sh3-linux --host=sh3-linux

--prefixオプションでインストール先を指定し,--hostオプションで組込みボードのアーキテクチャを指定します。

コンパイルとインストールは以下のように行います。

 # make
 # make install

インストールはPC上の組込みボード用のクロスコンパイラに対して行いました。

Lua言語処理系はインタープリタなので,ライブラリ類はコンパイル時に実行ファイルに取り込まれるため,基本的にクロスコンパイラ上にライブラリがあればいいですが,readlineはコマンド入力を受け持つライブラリで組込みボード上でインタラクティブに動作するのでreadlineライブラリのみはSH7706LSR上に必要になります。

SH7706LSRに共有ライブラリのみインストールするには,以下のようにします。

 # cd /usr/sh3-linux/sh3-linux/lib
 # cp -a libhistory.so* [メモリカード]/lib
 # cp -a libreadline.so* [メモリカード]/lib

ncursesの導入

ここではreadline-6.1を導入しますので readline-5.7.tar.gz をGNUのミラーサイト等からダウンロードして適当なフォルダにコピーして展開します。

コンパイル環境の構築は以下のように行います。

 # ./configure --prefix=/usr/sh3-linux/sh3-linux --host=sh3-linux

--prefixオプションでインストール先を指定し,--hostオプションで組込みボードのアーキテクチャを指定します。

コンパイルとインストールは以下のようにします。

 # make
 # make install

これで,Lua言語処理系のソースファイルのコンパイルとLua処理系の実行に必要な共有ライブラリのインストールが完了しました。

Luaの導入

ここではlua-5.1.4を導入します。lua-5.1.4.tar.gz をLuaのサイト等からダウンロードして適当なフォルダにコピーして展開します。

Lua言語処理系のソースコードのコンパイルでは,組込みボードのクロスコンパイルが可能ですが,クロス開発環境も考慮されていませんので,Makefileの内容を書き換えなければいけません。Makefileの書き換えはトップフォルダとsrcフォルダで行います。

トップフォルダではインストール先の指定を行うのでSH3向けクロスコンパイラのフォルダを指定します。トップフォルダのMakefileの書き換えはリスト1のように行います。

リスト1 トップフォルダMakefileの変更点


01: # makefile for installing Lua
02:  # see INSTALL for installation instructions
03:  # see src/Makefile and src/luaconf.h for further customization
04:  
05:  # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================
06:  
07:  # Your platform. See PLATS for possible values.
08:  PLAT= none
09:  
10:  # Where to install. The installation starts in the src and doc directories,
11:  # so take care if INSTALL_TOP is not an absolute path.
12:  INSTALL_TOP= /usr/sh3-linux/sh3-linux ←変更
13:  INSTALL_BIN= $(INSTALL_TOP)/bin
14:  INSTALL_INC= $(INSTALL_TOP)/include
15:  INSTALL_LIB= $(INSTALL_TOP)/lib
16:  INSTALL_MAN= $(INSTALL_TOP)/man/man1

《以下略》

srcフォルダでは使用するコンパイラの指定を行うのでSH3向けクロスコンパイラを指定します。srcフォルダのMakefileの書き換えはリスト2のように行います。

リスト2 srcフォルダMakefileの変更点


01:  # makefile for building Lua
02:  # see ../INSTALL for installation instructions
03:  # see ../Makefile and luaconf.h for further customization
04:  
05:  # == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================
06:  
07:  # Your platform. See PLATS for possible values.
08:  PLAT= none
09:  
10:  CC= sh3-linux-gcc		← 変更
11:  CFLAGS= -O2 -Wall $(MYCFLAGS)
12:  AR= sh3-linux-ar rcu		← 変更
13:  RANLIB= sh3-linux-ranlib	← 変更
14:  RM= rm -f
15:  LIBS= -lm $(MYLIBS)
16:  
17:  MYCFLAGS=
18:  MYLDFLAGS=
19:  MYLIBS=

コンパイルは以下のように行います。

 # make

実行ファイルはLua言語インタープリタであるluaと,Lua言語コンパイラであるluacの2つがあります。Lua言語単体で使う場合は以下のように実行ファイルのみSH7706LSRにコピーをします。

 # cp src/lua [メモリカード]/bin
 # cp src/luac [メモリカード]/bin

Lua言語処理系では,他の言語で書かれたプログラムにLua言語で書かれたモジュールを組込んだり,Lua言語で書かれたプログラムに他の言語で書かれたモジュールを組込むこともできるので,そのような開発を行う場合は,SH3向けクロスコンパイラにもLuaをインストールします。

 # make install

著者プロフィール

みついわゆきお

1986年日立製作所入所,その3年後に自社ワークステーションでの開発業務をきっかけにBSDを経てLinux利用を始める。

1991年日立を退社し,その後,ボランティアでLinux関連ツールの整備と開発しながらWindows否定運動およびLinux普及運動を開始し,Linuxディストリビューション草創期にはPlamoLinuxのメンテナンスにもかかわる。

2001年ごろより非営利ベースでボードコンピュータの開発を開始し,やがて,無償によりハードとソフトを開発したH8マイコンボードの販売を秋月電子にて開始した。

現在,ボードコンピュータ用基本ソフトMES2.5や,SHプロセッサ向けLinuxパッチおよびTOPPERS/JSPパッチを無償で一般に提供しながら,ティーエーシーやエムイーシステムより原価率100%を目標(ただし,販売店の営業・販売費用や開発・製造の際の差損を除く)としたSuperHボードコンピュータを販売中。

また,現在でも頑固にMS社否定及びWindows撲滅運動に邁進中。

コメント

  • TCLの情報の入手について

    tclの導入例を久しぶりにみた。
    かなり昔に書籍等様々な情報があったが、今は廃版になってしまい入手困難になっている。

    是非再販を望む。

    また、最近のCISCO(IOS)にはtclshというtclベースのシェルが組み込まれているので、これもきっかけの一つとして書籍化を望む。

    Commented : #1  kobamo (2011/03/22, 10:33)

コメントの記入