goo blog サービス終了のお知らせ 

組み込まれたエンジニア

我輩は石である。名前はまだ無い。

CygwinとLinux

2005-07-20 21:30:01 | 組込みシステム
某イベント向けのセミナーでLinux関連の担当になった。
Linuxのプログラムを確認するには、やはりLinuxで動かす必要があって、
デュアルブートにしている人も多いのではないだろうか。

私も自分のノートはデュアルブートにしているのだけれど、
作業性から言ったら、両方を「同時に」使える必要がある。

Cygwin側にXを入れているので、ktermで開いた他のマシンでのLinux実行結果を
簡単にコピー&ペーストでCygwin側に取り込めるので、この環境はお勧め。

ところが、出先でちょっとしたプログラムを確認したいというときに、
微妙な動作の違いが思わぬ問題を起こしたりする。

今回(といっても、まだ準備しているだけだけど)、問題になったのは
乱数関数のリエントラント性である。
マルチスレッドで動作させたプログラムでrand()の振る舞いがCygwinとLinuxで
大きく異なるのであった。
大体において、再現性のない乱数は工学的に役に立たないと私は信じているのであるが、
「乱数」という言葉に惑わされて乱数系列をおかしくいじろうといった風潮も一部あるので
乱数を扱うプログラムを考えたとたんに「取り扱い注意」マークがでるのだ。

こんなペースで準備を進めて本当に、講習会に間に合うのだろうか・・
(まぁ、いざとなったら・・・という手はあるのであるが 笑)

UML Modeller

2005-07-19 00:27:23 | 組込みシステム
PDP11互換CPUの紹介をした米国人から、UMLからHDLへの変換プログラムを
作ってくれないかと依頼された。
私はGUIプログラミングなんてやる気がないと答えたら、すでにある
Umbrello UML Modeller
を使えば、コードジェネレータだけ書けばいいとのこと。

既存パーサでコードジェネレータを書くのも、構文解析のインタフェースがどうなっているかを
調べる必要があるから、結構面倒なのであるが、少なくともGUIプログラミングをする必要が
ないというのは大きな利点である。

もっとも、HDLコンバータを開発するときには、既存のパーサが公開されていたけれど、
公開されたソースを読むのすら面倒で、Lex/Yaccを使って作ってしまった私としては
この開発フレームワークでどれだけモチベーションが維持できるかは甚だ不確定である(笑)

今日の打ち合わせは、朝、休日運行のため思ったよりバスが少なく、間に合わないので
駅まで20分以上かけて歩く羽目になった。
で、帰りは、終バス(深夜バス)まで20分あるという時間に到着。20分待って料金倍の
深夜バスに乗るなら20分歩いて帰ったほうが良いということで、結局往復歩くことに。

それでも、先日の90分ウォーキングに比べたら圧倒的に楽だった :-)


回路シミュレータ Spice3

2005-07-13 08:30:16 | 組込みシステム
カリフォルニア大学バークレイ校が開発したSPICEは回路シミュレータの基準プログラムといってもいい。
多くの商用シミュレータはSPICEをベースに開発されている。

講義や演習などで回路シミュレーションを行いたい場合も多々あり、これもライブCygwinCDROMに
入れたいのだが、ライセンス上の扱いがあり、ライブCDROMに入れるとCDROMのISOファイルを
WEBに置くわけにはいかないような気がする。
もっとも、バークレイではFTPサイトにSPICEを置いているので、ライセンスファイルを一緒に置いて、
簡単なCGIで確認後ダウンロードとすればいいのかもしれない。
(バークレイでは確認もせずにダウンロードできるので、ライセンスを読めという注意だけでいいか?)

詳細はSPICEのライセンスをご覧ください。

ということでいいのかな?


Magic7.2のページは回復していた。単にサーバが止まっていただけのようだった。

VLSIレイアウトソフト Magic

2005-07-11 06:49:08 | 組込みシステム
は、7.2と7.3のバージョンのあるサブバージョン以降はWindowsでも
コンパイル可能となっているという情報を仕入れ、これらのバージョンを探すが、
管理していた人が開いているサイトはパスワードが必要となっていて入れない。
もともとあった大学のサイトは閉鎖されているようだ。

IRSIMも状況は同じなんだが、何か問題があって回収したのだろうか?

う~む・・・

とりあえず、アメリカの大学の授業シラバスのページにコピーがあった
Magic-7.2をダウンロードし、Cygwinでコンパイルでき、簡単な利用には
耐えられることが分かった。

ただ、当然だが、MagicにはX11が必要で、Xserverを立ち上げておかなくてはならない。

Windows版LSIレイアウトソフト

2005-07-10 07:02:32 | 組込みシステム
もちろん、LinuxではMagicが使いやすく、全然問題ないのであるが、
せっかくライブCygwin環境ができるようになったので、欲が出てきて、
MagicをCygwinで動かしたくなる。
Magic for Windows
というサイトがあって、ここからダウンロードすればいいらしいが、
残念ながらリンク切れでつながらなかった。
それではと、本家からダウンロードして
自分で構築しようとしたら、ファイル名に':'が入っているファイルがWindowsでは
展開できず、まずは失敗。

Cygwinは結構いいところまで行っているが、こういった元もとのWindowsに依頼する
制約はどうしようもないんだよなぁ。

今日は、バイオリンのレッスンなので、作業はここまで。
全然練習できてないから、これから練習しなくては・・

ライブCygwinCDROMでBrickOS/LEGO MindStorm開発

2005-07-09 19:08:36 | 組込みシステム
CDROMに実行環境を焼いて、直接CDROM上からBrickOSを用いたプログラムのコンパイルが
できるようになった。このCDさえ持っていけば、大抵のWindowsマシンでシリアル版IRタワーでの
MindStormプログラム開発が可能である。

USB版IRタワーはドライバが必要なので、ユーザアカウントしかない場合には
このCDROMだけでは何ともならないのであるが、とりあえず、ソースをダウンロードして
クロスコンパイラを構築なんてことをしなくても、お手軽に開発が進められるように
なったので良かった~


MindStormクロス開発環境

2005-07-09 16:57:22 | 組込みシステム
LEGOのRCXモジュールをプログラムするのに、ETロボコンで用いたクロス環境を
構築していて、思いのほか苦労してしまった。

実は、クロス環境を構築していたマシンは、ライブCygwinの実験マシンであり、
これがうまくいったらMindStormクロス環境もライブCygwinに入れてしまおうという
目論見があるのである。

BrickOSのホームページには
Cygwin上のインストール方法からインストールのためのスクリプトまで用意されていて
この通りにやれば問題ないはずだったのだが・・・

実は、ライブCygwinの環境実験の途中で自分のCygwin環境のマウント情報をすべて
クリアして実験していたのである。その後、クロス環境を構築しようとして、
ルートディレクトリ(/)だけマウントしたのであるが、これだとコンパイラがぼろぼろ
エラーをはきまくる。
出しているエラーがライブラリのパスや定義の不足が原因であるのはメッセージから
あきらかだったので、コンパイルオプションにパスを追加したり色々と手を打って、
コンパイラ自体は生成したのであるが、あまりにもエラーが多く、何かがおかしいと
不思議に思っていた。

BrickOSのコンパイルでも案の定エラーが発生し、Makefileの作りの問題でコンパイルオプションを
手軽には渡せないので、原因の追究をきちんとすることにした。

そうしたら、実は、Cygwinは/bin, /libを /usr/bin, /usr/libにマウントしていて、
ライブラリは両方にあることを前提に多くのプログラムが動いていることが分かった。

普通に環境を構築すれば全然問題ないのであったが、色々と実験を繰り返すうちに
標準環境がなくなっていたのである。

トラブルの原因として、もっとも嫌らしいのは、Cygwinがマウント情報をWindowsのレジストリに保持する点だろう。
UNIXのように起動時にファイルからマウント情報を読み取ってくれれば、このようなことは
発生しなかったのである。

まぁ、ともかく、一段落なので、これから確認作業をして、CDROMでBrickOSの実行環境を
配れるようにしたいものだ。
(ソースからコンパイルするというのは、多少初心者には敷居が高いのでライブCygwinで
何もしないでBrickOSが使えるとうれしいのである)

飛行船ロボコン

2005-07-09 00:21:25 | 組込みシステム
何度か出ているけれど、秋に飛行船ロボコンがある。
アーキテクチャ委員の一人として、参加者からの質問もモニタする立場にあるのだけれど、
どうも、みんな「飛行船の制御」を考えていないような気がしてならない。
今回のロボコンの技術的チャレンジは通信部分だったり、飛行船の位置情報の取得だったりと
課題満載なのであるが、その部分は「コンテスト対象ではない」のである。

飛行船という浮体を小さなプロペラで制御するプログラムをモデルベースで開発するということが
あくまでもコンテストの課題なのである。

であるからして、飛行船が浮くとか浮かないとかは実は参加者はあまり考える必要はなく
あくまでもコンテスト対象のモデルに注力して欲しいのであるが、中々伝わっていないらしい。
(実は、身内のチームにすら伝わっていないので、一般参加者には無理のないことかも)

ETロボコンと同じく、ここでもきちんと物理モデルを立てて、
そいつに外乱の要因を併せて考えれば、「技」なんてものは、
論理の世界にマッピングできると私は信じているのである。
そうすれば、すり合わせが得意な日本の組込み業界なんてのも
もう少し属人性を低減し、エンジニアリングに落とし込めると
思うのであるが・・


さて、残りの期間に、みんながどこまでモデルを精密化できるのか、楽しみだ。

Live Cygwin CDROM

2005-07-05 18:35:36 | 組込みシステム
Live Linux CDROMというのはだいぶ普及してきたし、自分でも作成し使っている。
ところが、FPGAを使うことを考えると、Linux版のFPGAベンダーツールは無償のものが
ないので、結局はWindowsとLinuxの切り替えを余儀なくされる。

これでは、セミナーの実施にはかなり不便なので自分がセミナーで使うツール類を
Cygwin環境のCDROM上にまとめ、インストール不要で演習可能なように環境を作成した。

ツールのインストールが不要なので、このシステムを
Live Cygwin
と名づけよう♪

とりあえず、試作版のLive Cygwin CDROMはうまく動いていそうなので、
若干の調整をしたら公開可能にしていきたいものだ。

モデルロケット製作中

2005-07-05 08:29:23 | 組込みシステム
ETロボコンも終わったので、次なるe1イベントのモデルロケット打ち上げに向け、
自分の試作機を製作中。私自身はe1イベントでの打ち上げをするつもりはないけれど
基礎技術の確立のため、いくつか実験が必要なものがあるので・・

とりあえずは、Digikeyで購入したAVRマイコンを
電波ビーコンコントローラとして仕上げ、参加者のテスト打ち上げに提供できるように
するつもり。

飛行船のサブシステム結合日程も18日に迫っていて、こちらも早く対処する必要があり、
次々とやること多いけど、がんばろう。

このところ、バイオリンの練習は全然できていない。時間を作ることを考えなくては。

ETロボコン終了

2005-07-04 10:10:19 | 組込みシステム
ETロボコン参加者、運営スタッフの皆様ご苦労様。

今回のロボコンは「湾岸署」での開催!とともに、参加チーム数が過去最高。
イベントとしては、大いに盛り上がったけれど、完走車体は約3割と厳しいレースに!
湾岸署は大きな窓があって、コース上が明るすぎたり、影ができたりと
光センサでラインをトレースするロボコンの車体には厳しい条件だったらしい。

二日目の優秀ソフトウェアモデルチームのプレゼンでは、
「優秀なモデルはなぜ勝てないか?」が議論になった。
審査委員の結論は、組込みソフトウェアは「論理」と「技」からなり、
ETロボコン程度の複雑さでは「技」のウェイトが大きいから
モデルが良くても勝てないということらしい。

これには、個人的には反対だ。
「技」と呼ばれるところの物理的な特性をどれだけモデル化できるかが、
組込みシステムの成功にかかっているんだと思う。
つまり、「脳内論理」では解決できない物理世界をどれだけ、「論理」に
組込むかをしっかり検討しないと、いつまでたっても「すり合わせ」に
頼らざるを得ない開発手法から抜け出せないのでは?

前日の手伝いと、当日朝8時からのスタッフ側の準備のため、車で行って、
2日間ほど東陽町のホテルに宿泊。
実は、二日目は朝9時集合だから、ゆっくりだったけど、
一日目の終わりに懇親会があるので車を置いていく都合上ホテル泊にして、
のんびりするつもりが、懇親会の後も遅くまで二次会で盛り上がり、
結局のんびりどころではなかった
そういえば、このホテル、会場近くの駅が最寄り駅に入っていたけれど、
「徒歩40分」ということらしい。徒歩40分って、最寄なんだろうか・・・ 

幸い、天気にも恵まれ、大きな傘をただ持って歩くだけだった。

秋(10/17)の飛行船ロボットチャレンジの展示を行ったのだけど、
300人もの人でごった返している一階のロボコン会場では展示スペースは取れず、
2階の「関係者のみ」スペースでのひっそりとした展示でした。

飛行船ロボットチャレンジは日本科学未来館に入館すれば見学できるようなので、
チャレンジャーの募集は終了しているけれど、興味のある方は来年に向けて(?)ぜひ見学にきてください。

模型ロケット打ち上げ

2005-06-18 20:25:15 | 組込みシステム
朝、5時半に起き出して、7時中井PA集合というスケジュールで
静岡県は大井川の河原まで模型ロケットの打ち上げに行ってきた。

「箱根八里は馬でも越すが、越すに越されぬ大井川」の河原は、
ただただ広く、ロケットがパラシュートで落下するときに
多少風で流されようとも、平気なほどの広さがあった。

幸い、梅雨時とはいえ、雨も降らず(というか、日差しが強く日焼けした)、
少し風はあったが、絶好の打ち上げ日和であった。

数人で小規模にと思っていたのに、総勢20人近いお祭り騒ぎになって
びっくりしたけれど、無事に打ち上げを成功させてきた。

軽いAlpha3ロケットに強力なC型モータを載せて打ち上げるときには
みんなロケットのロストを覚悟したけれど、大井川の広さと、
(偶然起きた)パラシュート故障のおかげ(?)で、上昇高度は
高かったけれど、下降時に風に流されることなく無事回収可能であった。

でも、軽い機体にC型モータ搭載での打ち上げは心臓に悪いね。

焼津漁港が近いので、お昼は漁港近くの食堂で地魚料理を堪能し、
夕方には家に到着。

あ~楽しかった。。
(注:これは、あくまでも仕事の一環であって、遊びじゃないよ)

ロボコン練習用サーキット

2005-06-05 07:23:31 | 組込みシステム
広げる場所の確保が大変だけれど、練習用サーキットができた。
頭で妄想するのと実際に動かすのは大違いというのが、動かすことで
よく分かる。

ただ、本番と練習はもちろん違うので、色々な条件の変動に耐えられるように
良く考えてくれることを願おう。

Cのプログラムすら書いたことのない連中が短期間でよくがんばってきたと思う。
本番まであまり時間もないけれど、わずかな時間を有意義にすごし、
ラストスパートをかけよう。

飛行船ロボットチャレンジ

2005-06-01 08:17:58 | 組込みシステム
MDDロボットチャレンジは参加者募集は締め切ったので一応新たな参加者が増えることはない。
今回、アーキテクチャ委員会はリファレンスデザインをしっかり作りこむことで合意していて、昨年のようなことにはならない(はずである)

なお、昨年の報告と今年の競技概要については、情報処理学会の研究報告の形で出版されているが、これを入手したい方はSESSAME事務局に問い合わせると在庫が残っている可能性がある。

週一のLinuxカーネルのセミナが開始され、また自転車操業の日々。
昨年やったセミナーの資料を、できる限り改定し、受講者が分かりにくいといった部分を修正しながら講座内容をブラッシュアップしていくつもりなのであるが、生もの相手のセミナーなので、どこまで突っ込んで話をするかは難しいところがある。

初回はブートからプロセスの構造・スケジューラ・割込みの話をしたが、組込み系をかなりやっている技術者でもアセンブラのブートコードやセットアップコードを読むのは抵抗があるらしく、このあたり見せ方の工夫が必要だ。前回に比べ、生のアセンブラはほとんど読ませていないのであるが、タスクスイッチの部分ではインラインのアセンブラはどうしても出てしまう。

ただ、Linuxの記述というかgccのインラインアセンブラの文法も分かりにくいのも確か。
明示的にレジスタの利用方法が記述されていれば問題ないのだけれど・・

もっとも、Lions本のUNIX V6だって、アセンブラ部分を読む必要があるのだから、それ相当と考えれば、もう少し解説を増やし、事前学習の宿題を出せば大丈夫かもしれない・・と次回以降の課題としておこう。