Linux日記2 L-Card+編

Linuxを搭載したワンボードマイコン L-Card+

L−CARD+とは、レーザーファイブ社から売られている、NECのVR4181というプロセッサを積んだ、名刺サイズ大の組込用Linuxワンボードマイコンです。16MBのSDRAMを積み、256MBまでのCFがHDDのように使えます。10BASE−TのLANも備え、シリアルインターフェースをコンソールとして使います。消費電力は100mA程度らしいので、電池駆動も可能です。価格は38600円だそうです。小さくてもLinux、結構多彩なインターフェースを持ち、結構遊べそうなワンボードマイコンとして、ちょっと遊んでみることになりました。詳細はこちら

最終更新日 2001.12.30


L−Card+日記

2001.6.22

この数日は、デスクトップのLinux環境を作っていました。LCardの開発環境を整えるのが主な目的ですが、事実上、unixのリハビリを兼ねています。当面の目的は、

1.PCカードが使えること。
2.インターネットに入れること。

・・・です。そして、ディストリビューションは、最新のもので、ということで、昔御用達だったSlackWareは切り捨て、Linuxマガジン付録の、TurboLinux6.5を入れてみました。何なんか前に、TurboLinuxの初版を入れたことがありましたが、なんじゃこりゃ!というほど、出来が悪かったのですが、今のバージョンは、ものすごくラクチンです! いや〜進歩してますね!結構オススメです。ついでに、RedHat7.1も入れようとしたんですが、こっちはインストールでハングしまくりです! 原因は不明ですけど、さいさき不安なんで、メインで使うのは止めました。USB対応のカーネル2.4を使ってみたかったんですけどね。

PCカードは、TurboLinuxがデフォルトでドライバ類を入れてくれるせいか、勝手に使えます。フラッシュPCカードなら、挿せば勝手に認識するので、それからマウントして使います(自動的にマウントはしないようだ)。抜きたくなったら、アンマウントではなく、cardctl eject という命令でバッファに溜まった物をフラッシュさせて終わらせます(これも結構面倒)。

インターネットに入るのも結構苦労してしまいました。なぜか、pppが動かないのです。あちこち、インターネットで情報を集めてみると、TurboLinuxがインストールするGNOMEというX環境プログラム(正式なカテゴリ不明)で動く、GNOME−PPPがバグ持ちのようです(^^;) そこで、テキストベースからppp-on ppp0を起動すれば、ちゃんと入れることが分かりました。ちなみに、終了はppp-off ppp0です。あとは、ネスケが慣れないため、使いづらいくらいかな(^^;)

実は、もう1つ問題がありました。なんとXの起動です(^^;) なぜか、では起動しないのです。xinitでもだめ・・・ おかしいなあとよくよくディレクトリの中を探ると、XF86_SVGAってファイルがインストールされてません。インストールモデルで、イントラネットサーバーか、全部インストールを選んでおかないと、ファイルが全部インストールされないようでした。カスタムでインストールするにしても、いったい何が必要で、何が無用なのか、なんか良く分からないです。お手軽ディストリビューションは、簡単にインストールできるけど、説明読まないから、ハマるとなかなか抜け出せません。といって、コンパイルからインストールする話が載ってるJFとか読んでも実状に合わないしねえ・・・ ちなみに、startxで起動します。

どっちにしても、豊富な翻訳ドキュメントと、インターネットの登場は、5年前に初めてLinuxしたときとは隔世ですね。とってもラクチンになりました。
あ、L-Card+編なのに、LCardが全然登場しませんね(笑)

2001.6.30

自宅のデスクトップの環境整備終了、原稿書き用のメイン機(celeron4.5x100)のPCカードアダプタを、Linux開発環境用機(K6 75x4)に移植し、LinuxでPCカードが扱えるようにし、CFアダプタを使ってCFの読み書きができるようになりました。メイン機はLinux非対応のUSBスマートメディア/CFアダプタを入れて従来通りの作業環境を残してあるので大丈夫です。あと、壊れて仕舞ったx40/CDROMを捨て、メイン機にx24/CDROMを移植、Linux機には別のマシンについてたx4/CDROM(笑)を移植・・・ そのうち、CDROM(いっそCDR/ATAPI)を買わねばならない。

これらの環境整備のおかげで、L-Card+のCFの内容書き換えテストをしてみた結果、CFの中にあるX関連ファイルを全部消せば32MBにかろうじて収まり、起動可能になりました。まだまだ要らないものは沢山入ってるので、消してしまえば32MB/CFでも10MBくらいのフリーは作れそうですね。同時に、HAGIWARA SYS-COM(ハギワラ)のCFが使えることも確認できました。

オリジナルのOSでは、以下のサービスが起動していることが判明。結構色々と動いているようです。次は、カーネルのクロスコンパイルのテストをしてみよう・・・
Port ServiceName Description
7 echo Echo
9 discard Discard
13 daytime Daytime
19 chargen Character
21 ftp File Transfer [Control]
23 telnet Telnet
25 smtp Simple Mail Transfer
37 timer Timer
79 finger Finger
113 auth Authentication Service
139 netbios-ssn NETBIOS Session Service
512 exec remote process execution
513 login remote login a la telnet
514 cmd "like exec, but automatic"

2001.7.2

AGENDAというLinuxをOSに使ったPDAがあるのだが、これがL−CARD+と同じくVR4181を使っています。クロックは66MHz、RAMは8MB、ROM(フラッシュ)は16MBという構成で、PCカードもささらないし、LANもありませんけど、240x160のバックライト付き白黒LCDと、シリアルIF、IrDAを積んでタッチパネルで操作します。そして、PDAですけど、TerminalモードでLinuxのOSを直接操作することもできます。かなり使いにくいけど、立派なLinuxマシンのようです。プログラムは全般的に、発展途上といった感じで、速度も遅く使いにくいのですが、自分でプログラミングできるし、用途次第では、色々な事ができるかもしれません。ただ、シリアルケーブルがゴツイのが難かなあ・・・

←シースルーなケースに、青い色の蓋(パネル)がなかなか綺麗
←Terminalからルートでlsを取った時の表示画面。画面の横幅が少なくてかなり見にくい。下の方に表示されているのはキーボードエミュレータ。


詳細はこちら


→agendaの内部写真、真ん中の黒いのがVR4181、他の2つのLSIはRAMとフラッシュメモリ、白っぽい丸い物は圧電サウンダ、単四電池2本で動く。バックライトはELなのもカッコイイ。

2001.7.26

カーネルコンパイルとクロスコンパイル環境を作る (覚え書き)
カーネルを再コンパイルする必要性は感じないのだが、デスクトップからクロスコンパイルできる環境が無いと、L-CARD+で動くプログラムは作れないので、環境整備と勉強の意味合いで、カーネルコンパイルにトライしてみた。これらのソフトは、すべてL-CARD+のCDROMの中に入っているので、これを使う。過去に出来上がっているソフトをmakeしたことはあったが、自分でプログラムしたことは一度もないので、結構、困難を極めた・・・

コンパイラはコンパイル済みの物「tool/Cross-VR.tar.bz2」を使う。「/usr/local」の中にコピーし、「bzip2 -cd Cross-VR.tar.bz2 | tar xvf -」で解凍する。リンクを張り直すように指示があるが、どうも因果関係が不明なので、これは調査中。

カーネルのソースは「tool/linux.20001215.targz2」を使う。たぶん、これが最新であり、FROMに書かれているのもコレのようだ(2.4.0-test9)。何処で解凍してもいいがrootなら「/root」にコピーし「tar zxvf linux.20001215.tar.gz」で解凍する。

コンパイルは「export PATH=$PATH:/usr/local/Cross-VR/bin」でパスを通してから「make dep」をし、「make」でコンパイルできる。これでvmlinuxができるが、シンボルが入ったままなので「mipsel-linux-strip vmlinux」でシンボルを抜く。その後、FROMに書き込むにはs-recodeにせねばならないようなので「mipsel-linux-objcopy vmlinux -o srec」として、srecファイルにする。これで、モニタを使ってFROMに書き込むためのカーネルファイルができるのだが、付属のものとは少しサイズが違う・・・ まだ、怖くてL-CARD+にも書き込んでいない。来週中には確証を取らねばならないが、現在、暗中模索・・・

ユーザープログラムのクロスコンパイル (覚え書き)
カーネルのコンパイルができたので、ユーザープログラムもコンパイルしてみる。レーザー5のHPに、L-CARD+上のLEDをON/OFFする参考プログラムが載っているので、これをコンパイルしてみる。ソースをみると、VR4181のI/Oマップを、メモリ空間にマッピングして、そこに書き込んで操作している模様・・・ DOSなんかとは全く違う手法なんで、理解不能(^^;) あと10日余りで原稿が書けるんだろうか・・・ 心配(笑)`

適当なところにソースを置いて、コンパイラにパスを通しておく。「mipsel-linux-gcc led1.c -o led1」でコンパイルできる。サンプルに付属しているファイルと比べると、サイズがかなり小さいが、ちゃんと動作する模様・・・ というわけで、とりあえず成功! 実は、gcc のオプションが分からず、数時間、a.out とにらめっこしてしまった(笑)

2001.7.27

L-CARD+ をプラケースに入れてみた。秋月の電圧計用のケースなので、これと同じケースのみでの市販されていないようだが、L-CARD+とほぼ同じサイズ、中に入れるには、少し小さすぎるかもしれない(^^;) ケースのコネクタ側に穴をあけるのは当然としても、CF側も、CFを挿すと数ミリ大きくなって入らなくなるので、穴が空いています。といって、この穴からCFが取り出せるわけではありません(^^;) /ま、無理すれば取り出せないこともないが・・・ でも、基板がホコリで汚れる心配もないし、透明プラケースなのでLEDは見えるし、加工も簡単だし、とりあえずの入れ物としては上出来でしょう・・・

←プラケースに入れたL−CARD+
←ケースの前後はこんな感じです。
コネクタ側だけでなく、CF側も少し
カットしてあります。

2001.7.29

プロバイダのメールサーバーから、重要なメールだけ携帯電話に転送できるようなメール・デリバイリー用サーバーを作ろうと計画中・・・
プロバイダからはfetchmailを使ってPOP3で読む、読んだメールは消さない設定にすれば、いつものwindows用メーラーから普段通りに読める。読んだメールをprocmailで選別、転送はsendmailなんかが必要なのかもしれないが不明。fetchmailはlinux-vr用ソースが無いので、苦労してソースを変更してコンパイルに成功。L-CARD+からPOP3できることも確認済み(でも、DNSが使えない)。現在は、procmailと格闘中です。

fetchmailのVR移植のポイント (覚え書き)
まず、include/asm-mips/socket.hの中の「SOCK_XXXXX」のラベル(合計6個)が有効になるようにすること。具体的にはconfig.hの中に、これを埋め込むのがよさそう。あと、Makefileの中のgccの「-lfl」オプションを削除、これがあるとエラーがでる。もっとも、このオプションが何を意味するか不明(^^;) あと、コンパイルの前にconfigureを実行しておくこと、Makefileの中の「CC」をmipsel-linux-gccに変更しておくこと。

2001.8.1

今日は環境整備のために、何度もOSをインストールするハメになった。覚え書きの意味も含めて、OSのインストール方法を書いておきます。

使っているのは、TurboLinux 6.5server FTP版、これで、linux-vr 開発環境をインストールするには、インストールタイプを「すべて」にしてインストールすると面倒が無くて良い。ただし、要らないデータベースやサーバー関連は消してしまってもよい。KEDや韓中言語も要らない、サーバー関連では、ftpとsambaはインストールしておくと便利、合計で600MBほどインストールされる。「すべて」のままで要らない物を消さないと1.2MBほど必要。
ダイヤルアップルーターを通して、インターネットに入れる環境にしておくと便利。ルーターのDHCPを使うのでIP設定は無用、ただし、ネームサーバを勝手に設定されてしまうので、これはturbonetcfg で削除しておく。ホスト名も設定しておくとよいだろう。turbonetcfg -> basic setting -> hostname / remove NS
あと、/etc/hosts に、よく使うマシンのアドレスと名前を入れておく。そうすれば、となりのマシンのアドレスを、プロバイダのDNSに相談しにゆくことも無い(笑)
クロスコンパイラの path などは、.bash_profile に書き込んでおくと便利。

クロスコンパイラの、/usr/local/mipsel-linux/include/asmlinux は、あらかじめリンクが設定されているが、これが、カーネルのソースを置いたディレクトリと合っていないと意味がない。カーネルはともかく、それ以外のソースをコンパイルするときには不可欠のようだ。ちなみに、デフォルトは「../../src/linux/include/linux」なので、/usr/local/Cross-VR/src/linux/include/linux が無いと駄目。いっそ、/usr/local/Cross-VR/src の src をシンボリックリンクにしてしまうのもいいかも?

ntpなど、他のソフトのクロスコンパイル時のMakefile製作には、以下のオプションが使える。でも、ntp自体は、includeファイルが足らなくてコンパイル不能! 他のコンパイラを試す予定。

2001.8.2

付属CDROMのクロス環境(Cross-VR.tar.bz2)と、以下のコンパイルオプションでクロスコンパイル可能なものの一覧。
./configure --host=mipsel-linux --build=i586-linux --prefix=/usr/local/Cross-VR
make CC=mipsel-linux-gcc

ファイル名 可否 駄目だった理由
fetchmail-5.8.15.tar.gz 可能 socket.h を一部修正
procmail-3.21.tar.gz 不可 ./configure が無い
exim-3.32.tar.gz 不可 ./configure が無い
xntp3-5.93-export.tar.gz 不可 コンパイルエラー/未定義な定数があるもよう
ntp-4.0.99j-7.src.rpm 不可 コンパイルエラー/同上

2001.8.3

fetchmail procmail exim を使って、プロバイダのmboxにあるメールを読み出し、必要なものだけ携帯に転送してくれる設定を作ってみました。とりあえず、PC版です。L-CARD+では、procmail exim の移植ができず、停滞しています。ちなみに、procmail から exim へ移すとき、ワーニングがでるみたいですが、転送はされています。eximの設定は、自分のプロバイダに合わせて設定する必要があります。

fetchmail設定
poll プロバイダのPOPサーバー名
 protocol pop3
 user 'プロバイダのID'
 password 'プロバイダのPASSWORD'
 keep
 mda '/usr/bin/procmail'

procmail設定
MAILDIR=$HOME
SENDMAIL=/usr/sbin/exim

:0:
* ^From.*転送したい発信者のメールアドレス
! 携帯のメールアドレス

2001.9.8

う〜ん、ココに書くのは久しぶり(^^;)
この1ヶ月でやったことをまとめると、

1.L-CARD+用拡張ユニバーサルボードを入手した。定価7900円だそうで、結構高いが、無いと全然遊べないので、不可欠な物でしょう。ただ、ロクな説明が付いていないので、かなり知ってる人でないと使えない。まあ、知らない人は、どんな説明が付いていても使えないが・・・ (笑)
2.VR4181のA/Dコンバータを使った。NECのユーザーズマニュアルが、すご〜くタコで、さっぱりわからん! インターネットで文献漁ってみたけど、あまり無かった。おかげで、すご〜く苦労した。もっと、マシンなマニュアルを書いて欲しいぞ!>NEC
3.マニュアルがタコなおかげで、レジスタをアクセスするツールを作って実験した。簡単なプログラムだけど、レジスタいじって遊ぶには結構便利かもしれない。機会があれば、公開しましょう・・・ って、こんなもんが必要な人は、自分でも書けるだろうが(笑)

L-CARD+で作った温度記録計

2001.11.8

ここに書くのは2ヶ月ぶり・・・ なんか、段々怠慢になっていく(^^;)
この2ヶ月でやったことをまとめると、

L−CARD+を使った、赤外線リモコン装置、いわゆる学習型リモコンにするためのハードとソフトです。ハードもソフトも思い切り簡単化(単なる手抜きか?)しています。でも、Telnetを使えば、LAN上のパソコンからとか、インターネットからTVやビデオを操作できるのがウリです。ただ、固定IPを持っていない私は、インターネットから使えないのが残念(^^;)
プログラム的には、I/Oポートを操作するだけなので、とても簡単です。というか、昔作ったMSDOS上で動く学習型リモコンを移植しただけだし、新たに作ってもさほどの難しい物ではないし、おまけに特定ハード用のプログラムなので、タイマウエイトもソフトウエアループで書けるし・・・ ハードもありふれた設計だし・・・
右の写真は、赤外線リモコンに仕立てたL−CARD+です。専用に仕立てたプラケースに入っているので、LANとACアダプタを取り付けるだけで使えます。(実は、基板間配線が終わっていない)

L-CARD+で作った赤外線リモコン

2001.12.30

以前からウワサの有った、フラッシュメモリを大容量化したL-CARD+16が発売される。従来は2MBのフラッシュメモリだったので、ブートイメージはオンボードの載せられるものの、rootイメージはCFの物を読んで使用するため、CFスロットには必ずATAドライブが必要だったが。新しいL-CARD+は、フラッシュメモリが16MBになったため、rootイメージもオンボードに乗っている、それだけでなく、8MBものドライブをオンボードに持っている。小さなプログラムならすべてオンボードの載せてしまえるので、CFスロットは完全にフリーにすることができる。CF型のCCDカメラや、無線LAN、有線LAN、PHSカード、なども使用することができるようになった。いまのところ、CFストッロにさせるカードの種類は多くなく、CCDカメラなどももかなり機種が限定されるようだが、可能性が大きく広がった。実のところ、CFタイプのものってフラッシュメモリしか持っていないので、何か手に入れるまではなにもできないのだが・・・