« June 2007 | Main | August 2007 »

July 31, 2007

パソコン壊れる

E099急にパソコンが壊れた。電源を入れても、OS が起動できない。2000年9月に買ったノートパソコンだから、7年近い古いパソコンだ。

M くんに、「パソコン、汚しているから、それで壊れたんじゃ・・・」と言われた。
確かに、LCD 画面など、ホコリだらけのまま使っている。でも、それは関係ないだろう。

どうもキーボードの「i」のキーが押されたままの状態でショートしているらしい。そのため、OS の起動中にエラーを起こして、起動できないのだ。
これが、デスクトップパソコンなら、USB でも PS/2 インターフェースでも、新しいキーボードに交換すれば良いのだが、ノートパソコンだから、そうも行かない。

キーボードの「i」のキーのキートップを外して、ホコリやゴミを清掃した。でも、改善されない。

どうしょうも無いので、パソコンを分解して、キーボードを外した。さらに全てのキーのキートップを外した。再組み立てするときにキーを間違わないようにデジカメで撮影した上、配置の通りに外したキートップを並べながら、作業を進めた。

キートップを外す作業は細かく、神経を使う。接合部は、ごく細いプラスチック部品なので、これを壊すと元に戻らないからだ。

全てのキートップを外した後、ホコリやゴミ、髪の毛等の清掃をした。

キートップを付けない状態で、結線し、電源を入れると、何と起動した。
キートップが無くても、タッチタイピングで何とかパスワードを入れると、ちゃんとログインもできた。

どうやら、キーボードのスイッチの接点部分の中に、ゴミが入って導通状態になっていたようだ。
最近のノートパソコンだと、キーボードにコーヒーこぼしても大丈夫な位タフなものもある。こう言ったタフなノートパソコンなら、キーボードのスイッチ部分にゴミなど入らないようになっているのだろうが、古いパソコンなので、そう言った防塵防滴機能は無い。

一度、電源を切って、キートップを付け直し、キーボードを組み込んだ。これで完全に直った。

一時はどうなるかと思ったが、亊無きを得た。

結局、M くんに言われた「パソコン、汚しているから、それで壊れたんじゃ・・・」の通りだった。

| | Comments (6) | TrackBack (0)

July 29, 2007

数学ボーイ

前のコンテンツにもあるが、2ヶ月で20冊読書した。
その最後に読んだ本が、結城浩著の「数学ガール」である。20冊の読書の内、唯一小説では無い本であった。

この「数学ガール」は、高校生の「僕」と「二人の女の子」との図書館における数学についてのやり取りを軸に、数学を啓蒙する書籍である。

私は、ハンダ付けでも書いたように、高校時代に数学部に在籍したリアルな「数学ボーイ」であった。男子校だったので、数学ガールの存在は無かったが、数学好きな高校生の実態は誰よりも知っている自信はある。

そんな私が「数学ガール」を読むと、違和感がありすぎるのだ。もちろん、図書館で数学していると女の子が二人もよって来ること自体あり得ないことは、筆者も承知の上の演出であろうが、それ以外の点でも違和感がある。

まず、数学好きの男子は、一人寂しく図書館で数学することなど無い。
私の経験では、数学好きは集まって、数学教員室や数学部の活動場所(私の高校には「部室」と言うものが無く、定期的に決まった曜日の放課後に教室を借りて活動場所にしていた)で、ワイワイ騒ぎながら数学していた。

また、「数学ガール」では、一方的に、一人から一人(または二人)に教える形式を取っていたが、実際に数学好きが集まると、一方的に教えることは無い。対象となる命題に対して、誰が最もエレガントな解法なり証明なりができるかを、勝負していた。そもそも「教える」と言う行為は、既に誰かが「正しい答えや解法・証明」なりを求めている事が前提だ。学校の授業なら兎も角、趣味としての数学好きは「既に答えの出た命題」なんかには興味は無い。答えが未だ出ていない、むしろ答えがあるかどうかすら判らない命題にこそ、チャレンジする価値があると考えていた。

最後は、どうでも良いことだが、「数学ガール」では数論が中心に書かれているが、当時の私達は、数論よりも証明や幾何学など、多分野に渡って興味をしてめしていた。「多分野」と言うと聞こえが良いが、ようは手当たり次第に手を広げて居たに過ぎない。


とまあ、「数学ガール」の批判に、このような「数学好きの高校生は一人寂しく図書館になんていないで、仲間を集めてワイワイ数学しているよ」と言っていたら、逆に私の体験の方が「そんなの聞いたことが無い」と言われはじめた。
高校時代に数学好きだった友人の話では、「誰も仲間が居なくて、一人で数学していた」と言う。また、現役の高校教師に聞いたところ「自分の教える高校には数学部は無いし、周りの学校にも活発に活動している数学部があるとは聞いたことも無い」との事だった。
私は、どうも貴重な体験をしたのかも知れないなあ。

書籍「数学ガール」の話に戻るが、本を読むうちに「何故、登場人物を三人にする必要があったのか」と疑問に思っていた。一人が教える役、もう一人が教えてもらう役なら、二人で足りる。なら、何故三人も登場させたのだろうか?

事実上の最終章である第10章「分割数」を読んで、その疑念は氷解した。
この章の命題に対し、主人公である「僕」は正面突破でエレガントな解法を求めた。
それに対し賢い女の子は突拍子とも思える飛躍的な方法を用いた。
もう一人の女の子は、余り賢くないが、地道な方法で解いた。

結局、正面突破でエレガントな解法を求めた「僕」だけが、命題を解けず、残りの二人が正しい解を導き出した。

なるほど、登場人物の三人は、数学の命題に対するアプローチの象徴であったのか!

確かに、「正面突破でエレガントな解法」は、理想的だ。だが、答えが求まらなければ、理想もエレガントも無い。
飛躍的な方法は、天才的な発想が必要だ。また、エレガントと言えないような場合も多い。
賢くない方法は、エレガントじゃない。でも、答えが出るなら、「理想的・エレガントでも答えが得られない方法」より、ずっとましである。

これらの方法の内、どれを選ぶのか、それが、葛藤でありジレンマだ。

この葛藤に共感できず、「答えが同じなら、同じようなもんだ」と言う人は、数学を理解しているとは言いがたい。

高校時代の私も、このジレンマに何度と無く突き当たった。

大学進学後、私は、数学から離れ、物理や工学に興味の対象を移していく。数学から、より俗世的な対象に移った訳だ(「宇宙」は、じゅうぶん俗世的では無いと言われるが)。
数学部の友人たちも、皆、数学以外の道を進んだ。

今の私なら、「余り賢くないが、地道な方法」に傾向しがちだ。

だが、数学の理想境を忘れはしない。
あの若く、青臭く、理想を語り合った日々を。

| | Comments (7) | TrackBack (0)

読書

E098ここ2カ月ほどの間に、約20冊の本を読んだ。20冊は、小説など活字主体の本だけの数で、漫画や雑誌は含まれて居ない。漫画や雑誌を入たら、倍の40冊を越えるであろう。
また、20冊は、新たに読んだ本だけの数で、昔読んだ本を再び読み返したものも含まれて居ない。20冊の大半は文庫本だが、ハードカーバーの厚い本も何冊か含まれて居る。結構な分量と言えるだろう。

学生時代は兎も角、社会人になってから、これ程の本を読んだのは初めてだ。学生時代は、手当たり次第に本を読んでいた。しかし、この方式だと当たり外れが大きく、時間の無駄になりかねない。時間の余裕のある学生時代だからできた方法だ。
最近は、時間が大切なので、確実なジャンルや作者に限って読んでいた。しかし、作者が高齢になったり、脂の乗り切った状態から外れたり、ジャンルそのものが衰退したりで、読む本が少なくって居た。
今回、読んだ20冊は、本の批評家として確実な人達(プロ・アマ両方)から推薦してもらった本を読んだ。作家の全部は初めて読む人だし、ジャンル的にも新しいものが多かった。

読書は、主に通勤や出張時の電車の中で行った。元々無駄になる時間に読書したわけだから、読書が時間の無駄になったわけではない。だいたい、仕事上でもプライベートでも忙しく、頭を休める意味で読書を始めたのだが、さすがに、このペースは速すぎたようだ。読書自体は、電車の中でも、本の中身とか考える時間が増えて、かえって疲れてしまった。

特に、今回は新しい作者やジャンルの本を読んだので、最近の傾向とかジャンルの枠組みとか考えることが多かったように思える。
まあ、読書も良いのだが、疲れるので、秋までは、しばらく読書はお休みとするつもりだ。

| | Comments (0) | TrackBack (0)

July 09, 2007

サイエンス、エンジニアリング、モノ作り

E097ここ何週か、M大学の経営学部の一年生を相手に講義をして居る。大学生に講義をすること自体は珍しくないのだが、普段は理工学部が多く、経営学部のように文系の学生に教えることは滅多にない。
文系の学生は、理工学部と違い、女性の比率が高く、また男女ともファッショナブルで華やかである。

こう言った外見上の差異よりも、ずっと大きな違いは内面的なものだ。理工学部の学生の場合、私が教える事、つまりサイエンスやエンジニアリング、モノ作りに対して、既に価値を見出して居る。

それに対し、文系の学生は、そう言った事に価値を認めて居ない訳で、そう言った学生相手に、話が通じるかが、最大の課題になる。少なくとも、最初の講義の前は、そう考えて居た。
だが、実際に講義を始めると、私の話に、それなりに付いてくる。ちゃんと、サイエンスやエンジニアリング、モノ作りの面白さを伝えようとするところに興味を持ってくれるのだ。

M大学・経営学部の講義は、今年が初めてではなく、数年続いて居る。
数年の間に、私の最初の考え方は、抜本的に間違って居るのでは無いか・・と疑問に思い始めた。その疑問は、今では確信に変わっている。

文系の学生の彼ら/彼女らは、サイエンスやエンジニアリング、モノ作りに対して、価値を認めないのではなく、そもそも、そう言ったものが面白く興味深いと言うことすら知らないのだ。
私の憶測なのかもしれないが、どうも、サイエンスやエンジニアリング、モノ作りとは、決まり切った法則とか真理とか方法論を覚え、実行するだけのつまらない事だと誤解しているようだ。
私が実例を含め、そう言った分野で、新たな理論や方法論を自分で考え、創り出す事が、いかに楽しく、興味深いことであるかを示すと、教室の全員ではなくても大半が興味を持ってくれる。

なぜ、そんな誤解が生まれるのか?
まあ、高校までの授業で、押し込め教育で、理科や数学が嫌いになった学生は、当然なのか!?
いわゆる、理科離れとか、モノ作りの崩壊と言う奴か?

もっと、早い時期に、サイエンスとかモノ作りの楽しさを伝えていないのが、いけないのか?

だが、理科教育に熱心な親御さんの中にも、本当の意味で、サイエンスを理解していない人が多いような気がしてならない。
理科に興味を持たせるために、面白そうな科学実験を見せる。だが、ショーと化したサイエンス実験は、本当のサイエンスじゃないんだ。いくら不思議に思えて楽しそうな実験でも、最初から結果が判っている実験は、本当の意味での実験じゃない。
実験は、それをする人の仮説が、正しいかどうかを検証するための方法で、実験するまで、誰も上手く行くかどうか判らない、それでこそ、科学的な実験なんだ。失敗を重ねて、初めて成功する喜び。そして、仮説が新しい理論へと生まれ変わる一瞬。
サイエンスだけでなく、エンジニアやモノ作りでも、自分で考え工夫した方法や仕組みが上手く動いた時の嬉しさ。
そこに面白さもあるし、創造性もある。

そして、サイエンスやエンジニアリング、モノ作りは、特別な教育や訓練を受けた一部の限られた人だけの特権ではなく、誰でも、やれることだ。

本当に、サイエンスやエンジニアリング、モノ作りって、創造的で、面白くって、興味深いことなんだよ。
もっと、声を大にしてアピールしなきゃ、いけないのだろうね。

| | Comments (33) | TrackBack (0)

July 08, 2007

SH-TINY その5 漢字ターミナルを作る

さすがに、いっぺんに3つもコンテンツをアップすると疲れるなあ。
E0961前回、秋月のグラフィック液晶に漢字を表示したのに、良い気になって、今回は、漢字ターミナルを作ってみた。
(クリックすると写真は拡大)

この写真のように、PS/2 インターフェースを付け、フルキーボードからキー入力を得られるようにした。
キー入力と漢字の表示とを、シリアルインターフェースで入出力することで、漢字ターミナルとしている。

漢字フォントは、8x8 ドットだ。
これは、前回の最後に書いたように、SH-TINY の ROM サイズ(128K)に収まるのは、8x8 ドットが限界だったからだ。
写真では、恵梨沙フォントを使っているが、美咲フォントを使うことも、もちろん可能だ。

E0962写真の例では、シリアルケーブル経由で、Debian Linux Sarge にログインしている。
ls で、存在しないファイルを探そうとしたので、漢字でエラーメッセージが出ているのが判る。
(クリックすると写真は拡大)

シリアルケーブル経由と言えど、ちゃんとログインしているので、なんでもできる。

回路図
E0963前回の回路図に比べて、PS/2 インタフェースが増えただけだ。
IRQ0 を使って、PS/2 クロックを受信している。

(クリックすると画像は拡大)

プログラム
sh7125term.tgzをダウンロード

プログラムの構築には、漢字フォントが必須だ。漢字フォントのダウンロードと解凍については、前回のコンテンツを参考にしてもらいたい。

$ cd ~/hos-v4/sample/
$ tar zxvf sh7125glcd.tgz
$ cd sh7125glcd/
$ make -f make -f gcc.mak

ホスト PC の Linux に外部ターミナルからシリアル経由でログインするには、外部ターミナルを起動した後、ホスト側で次のようにコマンドする。

# /sbin/getty -L 38400 ttyS0 vt100

後は、普通にログインするだけである。

プログラムの説明
このプログラムは、2つのタスクで成り立っている。
(1)シリアルインターフェースから文字を受け取り、グラフィック液晶に表示するタスク
(2)PS/2 キーボードから信号を受け取り、スキャンテーブルで ASCII コードに変換し、シリアルインターフェースから送るタスク

グラフィック液晶に対するアクセスは、(1)のタクスのみである。従って、グラフィック液晶に対するアクセスがコンフリクトを起こす可能性は無いと判断し、セマフォ等の設定はしていない。
もし、2つ以上のタスクがグラフィック液晶をアクセスするようなプログラムを作る場合、セマフォ等で排他処理をしないとコンフリクトを起こす可能性があるから注意されたい。

シリアルインターフェースに対するアクセスは(1)(2)の両方のタスクからある。従って、コンフリクトの可能性が大きく、また、良く使うので、汎用的に使えるデバイスドライバにしておいた。セマフォや割り込みなど多数使用している。
ホスト側から速い速度で、データを送られた時、表示が間に合わなくなるので、XON/XOFF によるソフトウエア・フロー制御を行うようにしている。

PS/2 キーボード・インタフェースは、不規則性で、迅速な処理が必要なので、IRQ による外部割り込みを使っている。

このように複数のタスクや、割り込み等を使ってプログラムが書けるところが、リアルタイム OS の良いところだ。

なお、通信のボーレートは 38400bps 固定、キーボードは日本語キーのみ、漢字コードは EUC-JP のみ、エスケープシーケンスは最低限のモノしか用意していない。
この辺、誰か汎用的にしてくれると嬉しいのだが・・・
(エスケープシーケンスを揃えて、VT100互換にしても vi や emacs でエディットするのはキツイと思うが)

最後に
いやあ、結構、SH-TINY って、何でもできるね。
最後の漢字ターミナルなんて、黎明期のパソコン PC-8001とかPET並みだよね。もちろん、表示のドット数は落ちるけど、速度とか逆に速いような気もするし。
漢字ターミナルは、フォントデータが大きいけど、それでも 70K 程度しかない。まだ、50K も ROM が余っている。これに BASIC 等のインタープリタ/スクリプト言語を載せたら、本当に黎明期のパソコン並みになると思うのだが・・・

玄箱のシリアルインターフェースに接続するのも良いかも知れない。
DHCP で得た IP や内部状態のモニターだけでなく、新幹線の車内ニュース表示のように、インターネット上のニュースを RSS 経由で得て、表示するのも面白い。

もっと、大きな視認性の高い漢字フォントを使いたければ、外部にシリアルインターフェースの ROM でも付ければ良いかもしれない。ただし、アクセス速度の問題があるので、プログラムを工夫する必要が出ると思うが。

妄想は広がるばかりだ。

| | Comments (0) | TrackBack (0)

SH-TINY その4 秋月のグラフィック液晶で漢字を表示

E0951今回は、秋月のグラフィック液晶(122x32 ドット)を使い、さらにリアルタイム OS の HOS-V4 を使って漢字を表示する方法を示す。

左の写真は、16x16 の東雲フォントを使って表示した例だ。
(クリックすると画像が拡大する)

難しい漢字も表示できているが、半角で15文字x2行、全角で7文字x2行と少ししか表示できないのが難点だ。

E0952左の写真は、12x12 の東雲フォントを使って表示した例だ。

(クリックすると画像が拡大する)

少し字が小さくなっている。

文字数は、半角で20文字x2行、全角で10文字x2行だ。

E0953左の写真は、8x8 の美咲フォントを使って表示した例だ。

(クリックすると画像が拡大する)

かなり、字が小さく、複雑な文字は判別が困難だ。

文字数は、半角で30文字x4行、全角で15文字x4行だ。

E0954左の写真は、8x8 の恵梨沙フォントを使って表示している。ただし、半角文字は、美咲フォントを使っている。

(クリックすると画像が拡大する)

かなり、字が小さく、複雑な文字は判別が困難だ。

文字数は、半角で30文字x4行、全角で15文字x4行だ。

回路図は、下記の通りである。
このグラフィック液晶は、2kHz のクロックが必要なのだが、このクロックは、SH-TINY のタイマー機能を使って作っている。

E0955(クリックすると画像が拡大する)

フォントのダウンロード
フォントは、X Window 用のビットマップフォントで、フリーでダウンロードできるものを使用している。
フリーと言っても、ライセンスの問題もあり、フォントの転載は難しいので、直接下記のリンクからダウンロードしてもらいたい。
東雲 ビットマップフォントファミリー から shinonome-0.9.11p1.tar.bz2 をダウンロード

美咲フォント から mskbdb10.tar.gz をダウンロード

恵梨沙フォントファミリー から elisau10.tgz をダウンロード

$ cd ~/hos-v4
$ mkdir fonts
$ cd fonts
$ tar jxvf shinonome-0.9.11p1.tar.bz2
$ mkdir misaki
$ cd misaki
$ tar zxvf mskbdb10.tar.gz
$ cd ..
$ mkdir elisau10
$ cd elisau10
$ tar zxvf elisau10.tgz

プログラム
sh7125glcd.tgzをダウンロード

$ cd ~/hos-v4/sample/
$ tar zxvf sh7125glcd.tgz
$ cd sh7125glcd/
$ make -f make -f gcc.mak

プログラムを見たら判ると思うが、ruby で、出力する文字列から、必要な漢字フォントのデータを配列化して ROM に書き込むようにしている。このため、ruby のインストールが必須である。

できた sampleRom.mot を SH-TINY ボードに書き込むと、グラフィック液晶に漢字文字列を表示しつつ、「いわゆる哲学者の食事の問題」を実行する。

今回の方法では、漢字フォントの内、必要なデータだけを切り出して、SH-TINY の ROM に書き込んでいる。プログラムが予め表示すべき文字列を用意している場合は、この方法で十分だろう。

SH-TINY の ROM は、128K バイトなので、16x16 や 12x12 ドットの漢字のデータを全て書き込む事はできない。しかし、8x8 ドットの漢字フォントなら、JIS 第2水準まで全て含めても 53Kバイトで収まる。あらゆる漢字を表示する必要がある場合、漢字フォントを ROM に書き込む方法もあり得る。

| | Comments (0) | TrackBack (0)

SH-TINY その3 リアルタイム OS

ちょっと間が開いたが、SH-TINY にリアルタイム OS の HOS-V4 を載せる話題だ。
実は私よりも先に、適当電子工作研究所SH/TinyにHOS-V4を載せようと言うコンテンツで、SH-TINY に HOS-V4 を載せる話が公開されている。このコンテンツの場合、アルファプロジェクトのSH/Tiny基板に、ルネサス純正のコンパイラの SHC 体験版を使って、HOS-V4 を入れる方法が書いてある。(コンパイラについては推測)
今回、私は、秋月の SH-TINY チップを使った自作マイコンに gcc を使って HOS-V4 をインストールしたのだが、適当電子工作研究所のコンテンツが大変参考になった。このコンテンツが無かったら、今ごろ、泥沼に陥っていたかも知れない。「適当電子工作研究所」の hamayan さんに感謝、感謝である。

さて、何がそんなに参考になったかと言うと、SH-TINY の CPU 部分は、SH-2 と全く同じでは無く、微妙に違う部分がある。具体的に言うと、「スロット不当命令例外処理に関する注意事項」である。正直、当初これは全く把握していなかった。HOS-V4 では、タスク切替えに、この機能を使っているので、気が付かなかったら、混乱していたと思う。
その他、 例外処理ベクタが増えていたり、メモリーや周辺機器のアドレスが変更になっている。

この中で、「スロット不当命令例外処理」と「例外処理ベクタ」の変更部分は、HOS-V4 のカーネル自体に変更が必要にある。以前の私のコンテンツを参考にした人も居るかもしれないが、ここでは改めて、最初から、SH-TINY 用に HOS-V4 をインストールする方法を示そう。


HOSのダウンロードと解凍及びコンフィギュレーターとライブラリの構築
HOSから、h4_101a.tgzをダウンロード
sh2gcc.tgzをダウンロード

$ cd ~/
$ tar zxvf h4_101a.tgz
$ cd hos-v4/config/
$ make -f gcc.mak
# cp hos4cfg /usr/cross/bin/
$ cd ../src/sh
$ rm -rf sh2gcc
$ tar zxvf sh2gcc.tgz
$ cd ../../lib/sh/sh2gcc/

ここで、h4sh2.makの中の

sh-hms-gccをsh-elf-gccに
sh-hms-arをsh-elf-arに
sh-hms-ranlibをsh-elf-ranlibに変更する。

$ make -f h4sh2.mak

サンプルプログラムのROM 化
sh7125test.tgzをダウンロード

$ cd ~/hos-v4/sample/
$ tar zxvf sh7125test.tgz
$ cd sh7125test/
$ make -f gcc.mak

できた sampleRom.mot を SH-TINY ボードに書き込むと、「いわゆる哲学者の食事の問題」を実行する。

| | Comments (0) | TrackBack (0)

« June 2007 | Main | August 2007 »