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

組み込まれたエンジニア

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

ガルシアへの手紙

2010-10-28 06:33:24 | Weblog
4000万冊も売れたブックレットという触れ込みのガルシアへの手紙、英文では読んだが、人に読ませるのに英文は薦めにくいと思っていたら、ガルシアへの手紙の和訳がWEBにあった

一度は読んでおくといい文だと思う。


ぜんぜん関係ない話だけれど、Beyond Bullet-Pointsプレゼン手法についてのブログ記事をたまたま見つけた。

通常のセミナーだとこれでいいと思けれど、技術セミナーでプレゼンをハンドアウトにする場合、話を聞く基本「聞いたことをメモする」ができていない人が圧倒的多数な今日この頃では、資料を持ち帰っても役に立たないと文句が出そうだ(笑)。

文句を言う前に、自分はガルシアへ手紙を届けられる人間かを振り返ろう。

64bit WindowsでPDFの作成

2010-10-25 02:14:45 | Weblog
PDFを作成するのに、32ビット時代は、Adobe PSPrinterドライバを使ってPSを作成し、それをPDFに変換という手順を踏むことが多かったけれど、64ビットのWindwosでは、このドライバが動かない。

急遽、印刷画面をPDF化する必要に迫られ、検索してみると、
Bullzipという会社のPDFプリンタの記事が見つかる。

記事は3年も前のものだけれど、まだこの会社はちゃんと継続していて、試してみると、無事PDFが作成できた。


Linux演習冶具

2010-10-24 21:16:36 | Weblog
Linuxセミナー用の新しい演習冶具を作成中。
以前の冶具はLED1つだけで、点滅制御をさせたので、チャタリングが2回おきると区別がつかなかった。

そこで、今回は、7セグLEDとして、表示をカウントアップさせることにする予定だ。

基板を起こす予算はないので、蛇の目基板に手半田で作成したが、安定して使えかどうか・・・

基板ができたので、確認しようと思ったら、我が家のLinuxマシン、パラレルポートがなかった。仕方ないので、パラレルポートのあるマシンをCDブートさせて確認しようとしたら、ブランクCDが在庫切れ。

ということで、確認は後日また。

AllianceVHDL関連でLiveCygwinアップデート

2010-10-15 18:56:15 | Weblog
AllianceVHDLのレイアウトエディタ graalが、LiveCygwinだと動きがおかしかった。
レイアウトエディタとして利用する場合、インスタンスを生成したりするため、文字入力を行うが、これが行えないという報告があった。

調べてみると、どうやら、Motifのキー番号の解析に失敗しているのが原因らしい。

ということで、/usr/share/X11/XKeysimDB をLiveCygwinに追加することにした。

ウォーニングは出ているのは知っていたけれど、実害がないと思っていたら、思わぬ実害があったというお話。

この修正後は、graalの起動でウォーニングが出なくなり、気持ちよい。

名刺の取り込み

2010-10-11 04:56:16 | Weblog
メモの類や名刺は、ふと思いついた時に、さっと探し出すことができるというのが大切。

メモに関しては、私は一冊のノートにすべてのメモ類を集約し、何かの時には、ノートを見ればいいようにしている。ノートは、万年筆で記入し、消したりはしないので、ゴミアイデアも全部残るが、「残す」というのが大切なのだ。

ところが、名刺は膨大な量になるし、検索性が非常に悪いので、デジタル技術に頼るべきものの筆頭である。スキャナで名刺を取り込んで整理を試みたが、これまた、家に帰って据え置き型スキャナに入れるのも面倒この上ないし、行く先々で別々のPCを用いる私には、PCに取り込んだデータは可搬性が悪く、あまりよろしくない。さらに、取り込んだ名刺をPCでしか見られないのも、機動力が悪い。パーソナルクラウドなる「Pogoplug」の導入も試みたが、実用性に乏しく、運用できなかった。

そこで、遅ればせながら、キングジムのピットレックを導入しようと思っている。

KINGJIM デジタル名刺ホルダー「PITREC( ピットレック)」 DNH10

これなら持ち歩いて、いつでもチェック可能となり、PCよりもずっと機動力に富んでいる。



かばんの中はガジェットだらけになりつつあるが・・・

Kindleを買う

2010-10-05 06:35:57 | Weblog
Amazon.comからKindle 3G版を買う

Kindle 3G Wireless Reading Device, Free 3G + Wi-Fi, 6" Display, Graphite, 3G Works Globally - Latest Generation


何も入っていないのもあれなんで、青空文庫の作品を青空kindle経由でホームズやら源氏物語やらいくつかをダウンロードし、プロジェクトグーテンベルグから、ホメロスのIliadなどをいくつかダウンロードしてみる。

それと、バス停の時刻表のスナップショットを取って・・と思ったけれど、JPEG画像は、生では認識せず、ZIPで圧縮すると認識した。同じZIPに地下鉄路線図も入れて、ページ切り替えで読めるようにしておく。でも、路線図は、小さすぎて、拡大しないと読みづらい。


3G回線が無料で使えるというのが面白い。これにIMEがついていて、gmailが使えたら、とっても便利なんだけれど・・

Linuxで動いているらしいので、そのうち、誰かがIMEを作ってくれそうな気がする(人任せ)
なんてことを書いていたら、日々のつぶやきをまとめるブログ: Kindle3で日本語入力なんてのを見つける。これを使うかどうかは微妙なところだが、面白い。(自分のWEBサイトにスクリプトを置けばいいかな?)

一番の購入目的は、将来出版する予定の、自分の書籍をkindleに載せるための評価だけれど、こちらは、執筆が進んでいないので、いつになることやら。

ソフトバンクのプリモバイル:端末持ち込み契約

2010-09-15 10:35:51 | Weblog
ショップによって受付されないケースがあったようだが、ソフトバンクからは、正式に持ち込み契約ができることが示されている

手元に3Gの端末さえあれば、最低限の投資で回線が使えるので、プリモバイルはとても便利だと思う。(常用中)

最近の高機能端末であれば、ネット接続はWiFiにすればいいので、パケット通信ができないことはほとんど障害にならないしね。

とくに、自分からはほとんど発信せず、待ち受け専用の回線としては、維持費が最安値となるので、お勧め。

夏の出張ラッシュ

2010-09-09 09:27:35 | Weblog
普段、なかなか出張する時間的余裕がないので、夏や春にまとめて海外を含む用事を済ませる。
今年も8月中旬から、タイで集中講義を行い、その後、京都、大阪、兵庫、岡山と出張が続いたが、ようやく一段落だ。

出張中は、ネットも不自由なので、メールは個人宛の緊急性の高そうなもののみ携帯から読み出していたので、これから、8月以降のメール処理を順次始める。

そうこうするうちに、すぐに、次の仕事のピークが来るので、ゆっくりする暇はないですね~

Out of Order実行 SN/X 完成

2010-08-03 17:25:12 | Weblog
一応、自分で用意している4つのテストケースは完動したので、完成としておこう。

最終的に、LD/ST専用にインオーダーのリザベーションステーションを作ったり、各種事象の同時発生対応コードを入れたりと、コード量はずいぶん増えて、現在、794行。

かろうじて800行は切った。まぁ、これでも、Out of Order実行CPUとしては、極小の部類だと思う。

主要諸元は以下の通り


 
CPU アーキテクチャ SN/X
リザベーションステーションALU(2エントリ)
リザベーションステーションBRANCH(2エントリ)
リザベーションステーションLD/ST(2エントリ:インオーダー)
リオーダーバッファ・リネームレジスタ8エントリ
ストアバッファ2エントリ
コード行数794行
開発期間実働4日
使用言語NSL




最後まで悩ませたのが、SORTの例題で、実行結果のメモリがおかしいというもの。これは、メモリまでアウトオブオーダーにしていたので、STの後にLDで同じアドレスを読み出すケースで、LDをSTよりも先に実行してしまい、値を誤っていた。LD/STのリザベーションステーションを1エントリにするという方法もあるけれど、一応、インオーダー2エントリとして対処。メモリをアウトオブオーダーに実行すると、性能上は非常に優れているのだけれど、演算結果がおかしいのでは意味がないね。

インオーダーCPUは、順番に実行するので、リソースの競合はあらかじめ避けるように設計するのだけれど、アウトオブオーダーの場合には各ユニットが勝手に実行するので、同時発生の競合や、読み出し・書き込み同時の場合に、スルーでデータを渡すのか、待たせるのかなど、個別に詳細な検討が必要だ。

それに、何より、結果がおかしい時のデバッグが難しい。
お勧めは、命令リタイヤはインオーダーだし、発行もインオーダーなので、まずは、リタイヤを追いかけて、命令結果を見て、その後、リタイヤアドレスから命令発行場所を探して、解析を行うというもの。

命令発行と命令リタイヤが1命令ずつなので、アウトオブオーダーにしたからといって、大きく性能が向上するわけではないけれど、原理を理解するための教育目的CPUなので、その目的には十分な効果があると思う。


Out of Order実行のSN/X

2010-08-01 07:30:46 | Weblog
500行に収めるのはあきらめ、NSLに非商用ライセンスを設定し、一昨日、3時間、今朝、1時間ほどデバッグ作業の時間が取れたので、少し動きはじめた。でも、メモリへの格納値が微妙(?)に違う。

インオーダーのCPUと違い、デバッグで命令を追いかけるのは、結構大変な作業だ。
デバッグの続きは来週後半かな。。

現状、661行で、(それなりに)動作している。たぶん、アウトオブオーダーCPUとしては、世界最小ではないかな? :-)

/home/SNX> wc snxo.nsl
  661  1647 15510 snxo.nsl


問題のメモリログは、下記。もともと、SN/Xはメモリ待ち時間は0なので、単にアウトオブオーダーにすると、(分岐でリオーダバッファフラッシュが入るし)実行時間は長くなるのだけれど、レジスタリネーミングしているので、レジスタ数の少ないSN/Xには、OOO実行は向いている気がする。

HALTED at      122 clock
00000000: 0001 0002 0004 0000 0000 xxxx xxxx xxxx
00000008: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000010: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000018: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000020: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000028: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000030: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000038: 000b xxxx 000b 0000 000b 0001 0003 0002
00000040: xxxx 0003 xxxx xxxx xxxx xxxx xxxx xxxx
00000048: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000050: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000058: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000060: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000068: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000070: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000078: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

PC:0006 /home/SNX> ^simo^sim
tail -20 sim.log
PC:0003 st  $1,   0($0) -- $0:0010 $1:0006 $2:0003 $3:00
PC:0004
HALTED at      109 clock
00000000: 0006 0002 0004 0000 0000 xxxx xxxx xxxx
00000008: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000010: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000018: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000020: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000028: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000030: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000038: 000b 0000 000b 0001 000b 0002 0003 0003
00000040: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000048: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000050: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000058: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000060: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000068: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000070: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
00000078: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx


NSLとAllianceVHDLでチップ試作

2010-07-29 23:16:32 | Weblog
NSLで論理を作成し、AllianceVHDLでレイアウトをしたチップが上ってきた。
1.2um 2層メタルのミニチップだけれど、デザインフローの確認には充分。

ただ、2層メタルなので、クロックツリーの作成など、次のステップとなる部分は確認できず、以降の試作で確認予定。

80ピンQFPのパッケージ品で動作確認する必要があるので、確認回路の設計をしないといけないですね。

ベアチップに顕微鏡でピンを立てて、動作確認する方が、私好みなのだけれど、「できる気がしない」などと言う奴に、やる気を出させるアイデアはないですか?

NSL: SystemCシミュレーションスケルトン生成

2010-07-29 22:45:13 | Weblog
SystemCのシミュレーションスクリプトは、
慣れれば難しくはないのだけれど、
慣れるまで、少し作成に時間がかかるので、
NSLからスケルトンを生成できるようにした。


#include <systemc.h>
#include "inc16.sc"
#include <stdlib.h>
sc_clock m_clock("m_clock",10,0.5,0,false);
sc_signal<bool> p_reset;
sc_signal<sc_uinit<16> > a;
sc_signal<sc_uinit<16> > q;
sc_signal<sc_uint<1> > exe;

inc16 inc16("inc16");

static int ctrl_clock=0;
SC_MODULE (c_clock) {
        sc_in<bool> m_clock;
        void do_reset() {
                ctrl_clock++;
                if(ctrl_clock==0) p_reset=1;
                if(ctrl_clock==1) p_reset=0
        }
        SC_CTOR(c_clock) {
                SC_METHOD(do_reset);
                sensitive << m_clock.pos();
        }
};

int sc_main(int argc, char *argv[])
{
        int stop;
        if(argc>1 && (stop=atoi(argv[1])<=0)) stop=1000;
        sc_trace_file *tf = sc_create_vcd_trace_file("inc16");
        sc_trace(tf,inc16.p_reset,"inc16.p_reset");
        sc_trace(tf,inc16.m_clock,"inc16.m_clock");
        sc_trace(tf,inc16.a,"inc16.a");
        sc_trace(tf,inc16.q,"inc16.q");
        sc_trace(tf,inc16.exe,"inc16.exe");
        c_clock cclk("cclk");
        cclk.m_clock(m_clock);
        inc16.p_reset(p_reset);
        inc16.m_clock(m_clock);
        inc16.a(a);
        inc16.q(q);
        inc16.exe(exe);
        sc_start(stop, SC_NS);
        sc_close_vcd_trace_file(tf)
}


DeSmetCコンパイラ

2010-07-24 16:17:05 | Weblog
MSDOSの時代、一世代を築いたコンパイラにDeSmetCがあった。
途中から、ANSI C互換文法もサポートし、利用者がかなりいたと思うが、DOSの時代が終わるとともに消え去っていた。

FreeDOSで小さなアプリを作るため、x86の16ビットコンパイラをいろいろと探していたが、どうも、思ったようなものがなかった。

やはり、ここは自分で移植しないとだめかと、ほぼあきらめかけたとき、DeSmetCがオープンソース(GPL)になっていたことが分かった。

このコンパイラは、非常にコンパクトなので、変更したりするのも便利だし、何より、ライセンスを気にせず使えるのがうれしい。

少し落ち着いたら、VMでFreeDOSを動かして、動作確認をしてみよう。

LiveCygwinにnxtOSEK同封

2010-07-10 10:04:54 | Weblog
教育に使うには、LiveCygwinは便利なので、サーバー容量の関係で削っていたnxtOSEK同封版を復活させた。

複数のLiveCygwin環境をメンテナンスするのは、もうやっていられないので、全部入りとしてしまったので、これまで最大の大きさになった(115MB)。

それでも、これ一つ持ち運べば、ソフトがインストールできないマシンでも、たいていの教育はできてしまうので、便利である。

搭載ソフトウェア:


  1. 例題を実行するため必要最低限のCygwinバイナリ
  2. GCC
  3. EDAtools

    1. NSL CORE: i386/win32 コマンドライン版
    2. UML2NSL: Java コマンドライン版
    3. Icarus Verilog
    4. GTKWave
    5. SystemC
    6. AllianceVHDL


  4. LEGO NXT向けの開発環境 nxtOSEK(v2.13)