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

組み込まれたエンジニア

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

組込みソフトエンジニアのための新しい教科書

2006-01-25 07:59:58 | 組込みシステム
SESSAMEのワーキンググループが作成した新しい教科書が発刊になったということだ。

組込みソフトウェア開発のための構造化モデリング


組込みソフトウェアエンジニアは中々ソフトウェア工学手法を適用するほど勉強時間がない人が多いけれど、構造化をしっかりと書いた本は今時貴重である。この本は、現場のエンジニアたちが勉強しながら作成したので、心と実感がこもった本になっているに違いない。
(私も早速発注しよう・・)

オブジェクト開発の神髄

2006-01-18 22:46:23 | 組込みシステム
しばらく、電車での移動時間に読んでいた

オブジェクト開発の神髄~UML 2.0を使ったアジャイルモデル駆動開発のすべて


をようやく読み終わった。

アジャイルによるエンタープライズ系の開発手法の話であるが、分厚い本であるにもかかわらず、辞書的な使い方には向いていなく、頭から一気に読む方が良い本である。
ただ、電車で読むには重いし大きいので、大変であった(笑)

エンタープライズ系では、発注する側と開発する側が異なり、開発者は利害関係者の求めるものを引き出すことに注力するので、この本の手法は適用できるのだろうけれど、製品開発など新しい価値を創造する仕事でモデリングやアジャイルをうまく回せるのかは今ひとつはっきりとしない感じだ。
利害関係者が自分自身だと思って、アジャイルを回せばいいのだろうけれど、そこに意識が行くと、話しの流れとずれてしまうので、自分の関係している分野への適用方法を導き出すのは中々難しそう。

x86_64用Linuxメモリ管理の変更

2006-01-14 11:05:20 | 組込みシステム
昨日、Linux-2.6.15のソースツリーをダウンロードし、ざっとブラウズしていたが、とりあえず、変更方針と基本設計は完了した(つもり)

20日締め切りの研究会申し込みに出すかどうか、まだどこまでコードを作りこんで評価ができるか日程的な見通しは立っていないので微妙なところだが、申し込んで原稿締め切りが設定されないと他の仕事を優先してしまい、中々作業を進められないのはいつものことなので、思い切って申し込んでしまおうか・・・

自宅でも作業ができるようにマシンを置いてあるのだが、僕が自宅にこもりっぱなしで作業をすると、何も仕事をしない連中がいるので、ここは悩みどころである。
職場で作業できるように、職場のマシン環境を整える必要があるなぁ。

Linuxカーネルの作業はユーザ空間のプログラムと異なり、確認のときに完全にマシンをリブートしないとできないので、共有マシンでは作業しにくいのである。

職場でも、自分用にコンパクトなマシンをもう一台買う必要があるか?
x86_64の安価なマシンでコンパクトなものというのが、中々ないのであるが・・

プレステ2の調整

2006-01-11 00:02:32 | 組込みシステム
先日購入したPS2のピックアップが届いた。

これでDVDも読めるようになるだろうと、割と気軽に考えて、調整を始めた。
ところがである。新しいピックアップでもやはりDVDの画像は乱れ、まともに読めない。
これって、問題はドライブの機構側にあるってことかも?と、思ったが、調整可能なピックアップのレーザー出力を少しいじってみることにする。

ところが、この半固定抵抗の調整はめちゃくちゃクリチカルであった。
DVDが読めるポイントなどほとんど1点だけであり、それも精密ドライバのような
細かな回転が制御できない工具では読めるポイントを探し当てるのは至難の業であることが良く分かった。

ということで、新しいピックアップが来てもやっぱりDVDは読めないまま放置されることになったのである。

sfl2vl: ステージ記述で構成要素宣言

2006-01-02 19:22:35 | 組込みシステム
大きなモジュールを作る傾向のある人は、SFLの言語仕様のままだとレジスタや端子などの宣言が実際に使用する場所とかなり離れてしまい分かりにくくなる。
そこで、20060102版として、これらの構成要素の宣言をステージ記述の中で利用可能なように修正した。

stage {
reg_wr r123<8>;
sel s456<8>;
.....

のように、ステージの記述の最初に記述することで、多少は見通しのよい設計ができるようになる。ローカル変数のようにシンボルのスコープを制限しても良かったのであるが、(Verilogに変換したときに、分かりにくくなるので)そこまでの必要はないと考えて、宣言はグローバルである。もちろん、宣言より前にシンボルを使うことはできないので、ステージ記述で宣言される構成要素はステージ記述より前に使用してはならない。

この変更、どれだけの人が嬉しいかな?

FPGAでファミコンを作ろう

2006-01-01 07:58:01 | 組込みシステム
長崎出身のS氏がSFLとFPGAを用いてファミコンを作成し、彼のサイトでその設計経験を公開している。
S氏は以前から知っていたし、ファミコンを作ったことも知っていたが、サイトを発見したのは偶然であった。たまたま、SFLの関連サイトを検索していたら、彼が私のツール(sfl2vl)と他のツールを比較するページを作っていて、目に留まったのであった。
当初、彼はSFLをVHDLに変換してFPGAに合成していたのであるが、sfl2vlのVHDLへの合成結果にXilinxのツールで通らない構文があって手修正が必要だったらしい。Allianceのvasyではかなりいい加減な構文でも平気で通ってしまうので、単純に確認漏れであり、更新をしたとサイトに書かれていたメールアドレスを頼って彼に連絡をした。
その後、数通やり取りした後、彼は合成のベースをVerilogに変更した。
中間言語として使うにもVHDLは不便であり、この変更は彼のためにもなっただろう(笑)

内部モジュールは全てSFLで記述し、Verilogに変換して合成しているが、最上位のモジュールだけまだVerilogのまま(ちょっと前までVHDLだったけれど、XilinxのツールがVHDLとVerilogを混在させるとおかしなエラーを起こすので、Verilogに書き直した)だけれど、これもsfl2vlの declare interface宣言を用いれば容易にSFLで書き下ろせるので、彼にはぜひ全てSFLで見通しよく書き下ろして欲しいものだ。

色々なところでSFLの面白事例を集め、紹介していくのもいいかもしれない。



プレステ2の修理

2005-12-30 08:29:51 | 組込みシステム
忘れないうちに、備忘録として作業工程を書いておこう。
(といっても、結局修理はできなかったのだけど 笑)

まず、現象である。
私のプレステ2は全くDVDのディスク(PS2 Linujx)を読もうとしない。そこで、映画のタイトルなら読み込めるかと、入れてみたが、これも全く読もうとしてくれない。
電源を入れると一応画面は出て、ブラウザとセッティングの選択が出来るようになっているので、エレキのハード的にはそこそこは動いているらしい。

これは、光ヘッドの問題以外にありえないので、先日の修理のページを参考に、分解する。
まずは、後ろの封印シールを切り、裏返すが、その前に、目詰まりしたファンや前面の空気取り入れ口を掃除機で吸い、ほこりを飛ばす。

裏のねじは右後ろの2本だけ長く、他の8本は同じ長さである。右後ろが長いことを覚えておき、裏蓋を外し、ここにもほこりがたまっているので、掃除機で適宜ほこりを吸いだす。

光学ユニットを外すには、ケーブルを外さなくてはならないので、ケーブルのロックを外すため、シールドを外す。シールドには穴がたくさん開いているが、ねじが止まっている穴には全部⇒が書かれているのを確認。左の3本は普通に止まっているが、右上の1本はねじに塗装がされているみたい。これも記憶にとどめる。

シールドはモータドライバの石などに密着している放熱用の樹脂がくっついていて軽く引っ張っただけでは外れない。樹脂の部分を少しスライドさせるように引っ張り外す。

光学ユニットのケーブルは、プラスチックのロックがついているので、これを引き上げケーブルを抜く

表に返して、蓋を取ると、光学ユニットを止めるねじを2本外し、引っ張り出す。

ユニットの上部の蓋を細いねじ4本外してとり、レンズのカバーを長手方向につまみ少し押しながら外す。

無水アルコールで上のレンズと上のレンズを少し持ち上げて、下のレンズを掃除。

上のレンズは結構黒くなっていた。

この時点で、一度、DVDを映画で確認。
タイトル画面まで何とか出る場合がある。(これは有望かも)
それでも、このままではこれ以上は何ともならなさそうなので、光学ユニット裏のレーザー出力調整VRを動かす。

ところが、DVD用の調整VRは最初からほぼMAXになっていて調整余地などない。
案の定、端子につくまで回しても状況に変化なし。

レンズ位置を調整する六角ねじも調整したが、そもそもフォーカスが合う範囲にピックアップがあればこれは調整してもしなくても関係ないので、結果もその通り。
調整VRを回してはDVDをセットして動作の確認というのを何回やったことだろう・・・

やはり、レーザーユニットの出力が低下しているのだろう。といっても、PS2 Linuxが動作しているときにレーザが動いているとは考えられないから、経年変化に弱い素子なのかもしれない。

これで直らなければ、あとはユニット交換しかないので、光ピックアップユニットを販売していそうな店を検索するが、国内の店は入荷未定ばかりで売っていそうもない。

もう、SCEIはPS3体制になって、PS2の部品などおろしていないのだろうか?

台湾の会社には在庫があるようなので、送料はずいぶんとかかるが、こちらにPayPalを使って発注。

というところだが、CDROMだけしか動かなくてもゲームをするには困らないかも(笑)

PS2 Linuxを動かすにはDVDが必須なので、発注に後悔はしていないけれどね。


PS2 Linux その後

2005-12-28 22:28:02 | 組込みシステム
カテゴリにLinux関係を作ってなかったので、組込みのカテゴリですが、PS2のLinuxキットというのを大昔ソニーが出していました。ベータ版の時には私はPS2を持っていないからと見送ったのですが、1.0版を出すときにソニーがPS2【新品】プレイステーション2本体(セラミック・ホワイト)★こちらの商品は3日~7日程度でお届...とセットで販売するというので、それを自分で入手してEEのベクトルプログラムを作ってみたりと遊んでいました。

しばらくは、職場に持ち込んで、自由にみんながベクトルプログラミングを試せるようにしていましたが、あるときから、マシンが動かないと言われ、職場にほったらかしにしていたのを、この年末、意を決して持ち帰りました。

持ち帰ったけれども、まずは、モニタに接続するためのケーブル探しからはじめることに。押入れの奥のほうから、ようやくAVケーブルを見つけ出し、モニタにつなぐと、ちゃんと起動画面は出るではないか!
(実は、LinuxキットではVGA画面に特殊ケーブルで出力するのだが、Sync on greenというこのモードでは、我が家のモニタは動かないので、起動しているかどうかすら分からないのであった)

それでも、映画のDVDを読ませても「ディスクの読み込みに失敗しました」となるし、そもそもトレイ自体がマシンの置く方向によって出なかったりする。

う~ん、エレキ的には動いていそうなのだけれど・・・

と、何とか分解して確かめる方法はないかと、PS2と分解方法というキーワードでgoogle先生に問い合わせる。すると、あるではないか、思いっきりぴったりのサイトが見つかった

このサイトで、CDとDVDのレーザー出力は別々に制御していることをしり、もしかしたらCDは読めるのかもと、試してみたら、見事CDは読み込めるではないか。

すると、あのサイトに書いているようにDVD側のボリューム調整だけで再生する可能性が高いなぁ・・・

もっとも、PS2で何をするかというと、映画は専用のDVDプレーヤーがあるし、Linuxは今更このマシンで動かしても仕方ないし、ゲームは一本も持っていないということで、当面は何もやるべきことはないのであった(笑)


追記:
結局、レンズクリーニングとレーザー出力調整では再生しなかった。
DVDの映画はタイトル画面まで進むことが何回かあったから全然動かない
というわけではないのだけれど、出力調整しようにも、最初から出力は
ほぼ最大のところにセッティングされていて、調整余地がほとんどない!
CDは読めるから、明らかにDVD側のレーザーとピックアップの問題だと
思うのだが・・・
ドライブアッセンブリは1万程度するのと、封印シールを切ったから
修理は利かないので、まともなピックアップを入手するまではPS2の
DVDは使えない。って、使う必要ないんだってば(笑)

sfl2vl: 状態遷移のサブ状態コール

2005-12-27 10:17:32 | 組込みシステム
SFLという言語には、状態遷移マシンからサブルーチンのようにサブ状態をコールする機能がある。これを使うと、たとえば、命令処理において共通のアドレスモード処理などをサブ状態として作成し、複数の箇所から呼び出しが可能となる。
(特に、VAXなどのマルチオペランドにアドレスモードが適用できるようなマシンには最適である)

これにセグメントと名前がつけられていて、私のツールでも当然ながらこの機能を前提に方式設計がなされている。ところが、セグメントを使っている人を見たことがないし、自分でもまず使わなかったので、デバッグをせずほったらかしにしていた。
(要求もなかったのもあり、自分で書いたチュートリアルにもセグメントを使う例題は載せていない)

先日の京都の出張において、会津のO氏から、セグメントを使おうとしたらうまく変換できなかったという情報を聞き、クリスマス連休に入る前に、自分で確認プログラムを作り、2時間程度かけて、デバッグした。

結果として、都合3箇所のバグがあり、(2箇所は単純な評価文の実行忘れ、1箇所は評価タイミングの勘違い)簡単に修正は行えたが、やっぱり、サポートしているつもりとサポートするというのは違う(笑)
自分のプログラムは、コメントは一切入っておらず、しかも、ポインタチェインを延々と追いかけるようになっているので、セグメントのように普段使っていない機能についてデバグしようとすると、思い出すまで一瞬時間がかかる。
たとえば、
r->opr.op[2]=p->opr.op[opr.op[0]->con.val]->opr.op[1];
といったような文は開発当初から3年半も経つと、10秒は考えないと何をしているかは分かりにくいのである。そこで、遅ればせながら、今回からはポインタチェインの修正箇所に関しては、関数として切り出して、関数名を見れば何のことかは少しは分かるようにした。
10秒理解にかかるというのは、やはりデバグ効率を相当下げるので、最初からこうしておけばよかったのだが、この後、どれだけの修正が入るのかというと、現行のSFL言語仕様にあわせる開発をする限りは、もうほとんど機能的にはFIXしているのではないかなぁと、ちょっと思ってもいる。
VHDLへの変換はまだプアだから、この部分を修正したりすることは、商用ユーザのリクエストがあればするかもしれないが・・
(ユーザの少ないVHDL版の機能アップは別料金もらわないと割が合わないかも?)

今度はセグメントもちゃんと動作するので、チュートリアル資料もそれにあわせて、セグメント動作を追加しておかなくては・・・

セグメントを使いたい人は20051222版以降をご利用ください。

SESSAME中級セミナー終了

2005-12-03 09:04:07 | 組込みシステム
組込み中級技術者向けのSESSAMEセミナーが12月1日、2日の二日間実施され、無事終了しました。一年がかりのプラニングに従事されたKさん、ご苦労様でした。

打ち上げでは、見事だるまに目を入れ、みんなで寄せ書きをしました。
写真は、グループワークでの真剣な参加者の様子です。

積極的な参加をいただいた、参加者の皆さんと周到な準備をしたセミナー講師の皆さんのコラボレーションがセミナー成功の鍵でしたね。

私自身はスタッフとして参加しても、あまり仕事をしたわけではなく自己紹介もしなかったのですが、懇親会では、私のことを知っている参加者がいて、ちょっと驚きでした。

グループワークで、あるチームから、XXXの定量的なデータってありませんか?と聞かれ、確かIPAの産業実態調査にそれらしきデータが出ていたなぁと思いながら、PHSでネットに接続し、PDFをダウンロードした。
あんまり大きなファイルをダウンロードしたくないので、まずは概要のPDFを見て、どれを落とせばよいか考えようと思っていたら、たまたま概要にドンピシャのデータがあり、ラッキーだった。

グループワークのプレゼンでそのチームには是非発表してもらいたかったが、時間の都合で発表チーム数を絞っていたので、発表はできず残念でした。

SFL vs VHDL/Verilog

2005-11-18 21:52:05 | 組込みシステム
今日は、久々に今年就職したばかりのかつてのヘビーSFLユーザ二人と展示会場で話ができた。
彼らは今は会社の指定する言語(VHDL/Verilog)を使わされる立場であるが、一人は二日がかりでやっと作成したVHDLのコードが合成するとあまりに大きく、ためしに30分程度でSFLで再作成し、sfl2vhでVHDLに変換してみたら、自分の手書きのコードよりも小さく早い回路が生成されツールに負けたと嘆いていた(笑)
もう一人は、そもそも合成できる回路が記述できず、試行錯誤で仕上げたらしい。
二人ともSFLをやったのだから、どんな回路が合成可能なのかは明らかに分かっているはずなのであるが、経験を生かさないのか、市販合成ツールの実力を過信していたのか、人は痛い目にあわないと学習しないものらしい(笑)

CQ出版のY氏に言わせると、SFLは動く回路が誰にでもできちゃうのがいけないらしいが、忙しい現代人にはVHDLやVerilog、ましてやSystemCなんかで修行を積むなんて時間はばかばかしい無駄にしか過ぎないだろう。

このあたりのロジックは値段が高いものが高級と信じている信者たちには全然理解してもらえないのである。

VHDLへの変換コード

2005-11-15 22:25:13 | 組込みシステム
sfl2vlのVHDL変換は自分では全く使っておらず、
Allianceのvasyで合成が通ればOKとしていた。
ところが、たまたま検索で引っかかったサイトで
VHDLへの変換で文法エラーが発生するという情報が出ており、
少しコードの調整を行った。

どうもVHDLの構文は色々と制約が多くやっかいである。
構文がやっかいなだけでなく、合成可能な記述のベンダー差が
大きいような気がする。

そのため、Verilog版で行っている最適化はVHDLでは相当あきらめて
あえてプアなコードを出している。

性能を出したい人はVerilogを使ってくださいということなのだが、
なぜかVHDLを使いたがる人がいるのだよなぁ。

商用版のユーザと無償版のユーザの差別化のため、
最適化は商用版と評価用の行数制限版のみ有効となるように変更した。

イメージセンサ

2005-11-15 07:44:16 | 組込みシステム
STmicroのイメージセンサを次のプロジェクトに使うつもりでいたのであるが、Mouserの説明によると、STmicroが方針を変更し、一般小売チャネルへはセンサは販売をしなくなったらしい。

来年度の飛行船の搭載用にちょうど良いと思っていたセンサが入手できなくなっていて、代替品も提供されないことから、センサ搭載を想定していた次期飛行船のアーキテクチャは大幅に変更しなくてはならない。

こんなことなら、前に見つけたときに必要な数を買っておけばよかった。
(後悔先に立たず)

SESSAME合宿

2005-11-13 02:15:50 | 組込みシステム
二日間の中身の濃い議論ができ、無事終了した。

合宿の前の日にイギリスから到着したPICマイコンを用いたプロポへの接続キットとRCシミュレータ(FMS)を持っていったので、懇親会の場ではプロジェクタを用いて壁にシミュレータの画面を映し、大画面での酔っ払いラジコン運転をみんなで楽しんだ。懇親会は朝の4時までかけて、調達した日本酒・焼酎・ビール・発泡酒・缶チュウハイをほぼ飲みつくし、よく飲んだなぁと感心するくらいだった(笑)

実は、この接続キット、キットとは言っても、部品だけ送られてきて、説明書の一枚も入っていない。説明書はWEBで勝手に見ろということらしい。組み立てようとすると、コネクタボックスのパネルの大きさもケーブルを通す穴の径もあわない。ぁあ、またか~、なんだか最近キットというものに外れが多い気がすると思いながら、部品の半田付けと、パネルの加工をしてくみ上げたのだった。
FMSのプロポ接続としてはsmartpropoが安価でよいのであるが、(マイク入力が動作しないので)残念ながら、私のノートPCとは接続できないので、急遽イギリスからシリアル接続のコンプリートキットを購入したのであった。合宿に間に合ってよかった(笑)

朝4時まで飲んでいると、さすがに二日目の昼食を食べた後になると、猛烈な睡魔に襲われ、M氏の説明時にはほとんど意識が朦朧として説明のスライドはただ目でおっているだけになっていた(M氏申し訳なし)

先々月の例会まではPLAN-Kは大丈夫かと心配していたが、合宿での議論でこれならいけそうだという感触が得られ、だいぶ安心した。後は、本番を待つばかりである。

先月の例会で、打ち上げにウニでも食べに行こうかといっていたが、Sさんは、「この体調じゃ車で真鶴なんて・・・」と言っていて、他のメンバーも相当お疲れの顔をしていたので、ウニ計画は中止となった。実は私もその時間帯には全然食欲がなかったので行くのは無理だったかも?

ロボコンフェスタ開催

2005-11-03 23:19:28 | 組込みシステム
ETロボコンとほぼ同一レギュレーションによるロボコンを開催した。
遠く、金沢や兵庫からも参加してくれたチームもあり、大人から子供まで
同一ルールで楽しく和気藹々と楽しめた。

景品の分配で子供たちががっかりしないようにと、参加全チーム分の
景品を並べ、一位のチームからくじを引いて景品を決めるようにした。
ETロボコンに優勝経験のある強豪チームが、
二回の走行で両方とも完走し1位だったのだが、
彼らには番外景品となっていた「明日を照らすライト」が当たり、
全く走行できていなかった親子チームに「LEGO MINDSTORMSキット」が行くなど
狙い通り楽しい分配になった。(せっかく遠くから来てくれた1位の
チームには景品は物足りなかったかもしれませんが、大人の余裕で許してください)

参加チームの皆様、協賛各社の皆様どうもありがとうございました。

司会をお願いした方は技術的な解説を頼まれ、マイクを持たされたので
司会以上にたくさんしゃべってしまった・・・笑