2011年2月8日火曜日

FT2232HをPythonで使う

ストロベリーリナックスからFT2232Hを載せたUSB高速シリアル変換基板が発売されております.
FT2232H(2ch)高速USBシリアル変換モジュールキット
これは単純に言えば,パソコンから自作マイコンやFPGAボードなどに480Mbpsでデーターを簡単に送れてしまえるスグレモノなのです.
パソコン側のソフトを開発するためのライブラリなどはFTDI様が配っておられます.
FTDI CHip D2XX Driver Download site
筆者はこの頃,年をとったせいか開発中にコンパイラを起動するのがストレスになり,
単にアウトプットだけが問題なときやテストメインの時は,Pythonでお手軽に処理するのが最近の趣向なのです.
そこで上記のボードもPythonから使えるようにFTDI様のDLL用にctypesラッパーモジュールを書きました.
これを書いているほうが断然キーボードを叩く量が多い気が途中でしましたが,一度作れば480Mbpsの通信を
Pythonで制御できるので嬉しい気分となります.
ftd2xx-py.zip
スクリプトの中身は整理もなんにもしてなくて,コメントもありませんがご容赦下さい.

使い方は,例えばこんな感じです.32メガバイトを送信する例となっています.
from ftd2xx import *
handle = c_ulong()
ret=FT_Open(0, byref(handle))
ret=FT_SetBitMode(handle, c_ubyte(0xff), c_ubyte(0x0))
print "FT_SetBitmode=", ret
ret=FT_SetBaudRate(handle, 6000000)
print "FT_SetBaudRate=", ret
data = range(1024)*1024*32
ret=easy_write(handle, data)

2011年2月3日木曜日

健康食品

今週の週明けは,新幹線移動による日帰りでの出張からはじまった。
その日の盛岡の朝は,寒かったが晴れ渡った空に上る朝日がまぶしい。
きっとこの寒さは放射冷却現象という現象に違いないと思った.
以前はこの言葉を天気予報でよく聞いた気がするのだが、
このごろあまり聞かなくなったのではないか。
私は出張の時に、決まって乗る盛岡駅行きのバスには乗らずに、
青山駅まで徒歩で向かった。
途中の歩道は凍っていて転倒するかしないかは運みたいなものだ。

歩くと汗が心地よい。

体によいことをすると気持ちがくなるように
人間の体はできているのだと誰かに聞かされことがある。
しかし「体によい気持ちよさ」が得られる機会とは、
実に限られているものではないか。

たとえば,昨今、健康ブームもあってか
様々な健康食品が世にあふれている。
だが健康食品が体によいものであっても
直接的な心地良さを効能として体感できるものではない。
病気の際に飲む薬とは違って効果が見えないのだ。
健康が持続していることこそが健康食品の効果であると
いえるかもしれないがそれが、
直接的に影響したのかどうかはわからないのだ。

ここで前述の通り体によい事をしたときには
心地よさが得られるような体の仕組みが
実際に存在したと仮定しても、
健康食品にはそれが当てはまらないことは明白だ。
強いて健康食品を摂取したときに得られる
心地よさをあげるとするならば、
「おいしさ」や「はごたえ」といった味覚と食感のみである。

乏しい直接的効能にも関わらず高価な健康食品に人気があるのは、
カタログや説明書に書いてある効果が得られたという体験談や
毎日継続して飲んでいるのだからきっと効き目があるに違いないという
目には見えない働きを信じているのだ。
つまり期待感や自己満足と行った
心理的快感を得ているにすぎない。

現代人は理性や科学を信じたことによって、
理屈で説明が付かない事柄には関心がなくなったかといえば
このことからも違うことがわかる。
健康食品一つとってみても、
自分の体への有効性を確かめることもなく
高価な健康食品を信じて今日も食べるのだ。
健康食品のラベルやパンフレットには
体によい根拠が記載されているではないかという
主張が聞こえてきそうだが、実際にそれを検証した
客観的事実を確認しつつ飲んでいる人たちがどれだけいるだろうか。
コレステロールにいいとか、おなかにいいと言われていることがらを
有効成分の働きなどを交えて科学的に説明する広告を見て、
それが自分の体にも聞くに違いないと信じるから買うのだけど、
自分の体への有効性が保証されているわけではないのに
それを追求せず今日も健康食品を食べ続けるのだ。
医者からもらう薬でさえ、風邪をなかなかなおしてくれず、
時と場合によって効果があったりなかったりするというのに
自分用に特別に作られたものでもない「食べ物」や「飲み物」がなぜ、
個人間で異なる様々な体質の人間たちに
一様に有効であるといえるのだろうか。

それでも健康食品を買って飲むのだから、
それを動機づけしているものとは、
自分の健康が損なわれそうな可能性を恐れ、
健康食品のもつ目には見えない働きに、
自分を健康にしてくれるのではないかという
期待感であると思うのだ。

「実際に少しでもプラスならよいではないか」
そのような許容によって、私たちは
目に見える世界と見えない世界の狭間で
揺れ動く心のバランスを
保っているのではかなろうか。

2011年1月28日金曜日

pythonでctypesを使ったときにちょっと困った不可解なエラー

経験のないUSB機器をお手軽に試用するため、
久しぶりにpython+ctypesを試してみることにした。
長いこと使っていないと一度調べたことを再び
一から確認していかねばならなくなるので、
煩わしくて、せっかく適応可能な機会に恵まれても
使う気力は失せてしまう。
それでも、全く使わないですむかというと、
使ったときの快適感だけは鮮明に記憶されているので、
引っ張りだして使ってみたくなるのがpytho+ctypesだと
僕は思うのだ。
以前に書いたスクリプトとドキュメントを参考にしながら、
今回お世話になるDLLのヘッダファイルを見て、
ctypesラッパーを書いたのだけど、すぐにつまずいた。
正しく関数の引き数の指定しているにも関わらず、
引き数の数が合いませんとかいうエラーが出るのである。
エラーメッセージを頼りにしてGoogle先生に聞いてみたら、
DLLに組み込まれている関数のプロトタイプ宣言に
関係があるらしい。いわゆるstdlibとCDECLの違いだ。
簡潔に言えばstdlibは、Win32APIみたいなOSの
サービスコール的な関数をDLLに埋め込むときの規約で
CDECLは、C/C++でつくった関数を単純にDLL化したときに
適応される約束みたいなものだ。
話を元に戻すと自分が今回でくわしたエラーは、
stdcallで宣言された関数を呼び出すときに、
ctypesに対してそれはCDECL宣言の関数ですよと
謝った情報でDLLをオープンしていたかららしい。
DWORD testFunc(DWORD a, DWORD *b);
みたいなDLL関数をインポートするとき、次でエラーが出るような場合だ。
from ctypes import *
_lib_hoge=clib.LoadLibrary("hoge.dll")
testFunc=_lib_hoge.testFunc
testFunc=testFunc.args=[c_ulong, c_void_p]
bb=c_ulong()
ret=testFunc(10, byref(bb))
testFuncがstdcallな関数だった場合に、このスクリプトを
実行したときのエラーメッセージはこんな感じ。
"ValueError:Procedure called with not enough
argments (8 bytes missing) or wrong calling
convention"
一見,引数の数か型指定が間違っているだけとしか思えない.
でも正しい指定をしているから期待通りに動かない怒りは,
結果としてctypesに向けられることになるのだ.
エラー対策方法は,スクリプトの冒頭にあるDLL読み込みのところを
次のように改めればよい。
from ctypes import *
_lib_hoge=clib.LoadLibrary("hoge.dll")
testFunc=_lib_hoge.testFunc
testFunc=testFunc.args=[c_ulong, c_void_p]
bb=c_ulong()
ret=testFunc(10, byref(bb))
知っていれば些細な問題なんだけど、知らないとこれだけで
python+ctypesをあきらめてしまう要因になると思うのだ。

湯船につかりながらポメラでこの記事を書いているのだけど、
昨日やったばかりの作業やエラーメッセージを思い出せない。
日頃どれだけコピペに頼る生活をしているのか、
実感させられるのである。
2011/01/27 07:23

2011年1月23日日曜日

ソリの思い出

「東北小さな旅」は毎週土曜日の朝にNHKが
放送している東北地方限定ニュースのなかのコーナー。
その名の通り東北地方の各地を回り田舎の風景を
そこに住む人々の生活も交えて紹介していく番組だ。

毎週絶対見るのだと決めているわけではないのだけど、
土曜日の遅い朝に目が覚めてテレビをつけチャンネルを
ポチポチと切り替えると決まってこの番組に落ち着く。

今日の町は「秋田県にかほ市」
ちょうどテレビをつけたところで、
雪深い神社の境内に長く張り巡らされた階段を
女性レポーターが歩いているところだった。
階段には10cmほどの新雪があり
レポーターは長いブーツで雪を漕いで歩いていた。

雪と階段をテレビに見ながら僕は、
冬になると決まって思い出すソリの思い出を
反芻していた。

小学3年生まで僕は盛岡市青山4丁目にある
自衛隊官舎に住んでいた。
そこは運動公園の前にあり、雪が積もると
誰も来なくなる冬の運動公園に行っては
雪を漕いで歩いた。

あの頃は今に比べると盛岡も寒かった。
運動公園の中にある日本庭園の池も
カチガチに凍っていた。
学校から池の氷の上に乗らないように
注意されたが、1度くらいは
氷の上にのっかったような気がする。
高松の池でスケートをしていた頃だから
真冬ならなにが問題だと思うほど
ガッチリと堅く凍っていた。
今は絶対に無理だろう。

冬の運動公園へ遊びに出かけるときは
いつも後ろにプラスチック製の
青いソリをひいていた。
ソリの先端につけた白いビニールのヒモ、
確かピーピーテープと家では呼んでいたのだけど、
そのヒモを長めにソリに結んでおいて、
外に遊びに出かけるときは欠かさず引いていた。
夏は自転車、冬はソリが子供の乗り物だと
子供の僕は堅く信じていた。

一度だけ運動公園の中にあるスタジアムの西側の階段で
ソリ滑りをして遊んだ思い出がある。
スタジアムというのは運動公園の最北端にある
今改修している野球場のことだ。
このスタジアムの階段は、西側にあって観客用の
入り口に設置されているもので今も昔も変わっていない

ソリを引いた小学3年生の僕は、
このスタジアムにさしかかり、
この階段に心を奪われた。
階段の中程にある踊り場が
ジャンプ台となって
ソリのスリルを味わうには
よい場所に見えた。

そう思って僕は迷わず雪の積もって
上りにくい階段をソリを手にかけあがり、
そして滑った。

階段の踊り場は予想通りジャンプ台となって
ソリと僕を勢いよくはじきとばし、
回転しながら氷の地面にたたきつけた。
怪我をした記憶はないが、
僕の大事な青いソリの中程に
パックリと亀裂が入ってしまった。

親は壊れたからと言って易々と
買い換えてはくれないとあきらめていたので、
僕はこの階段の踊り場でソリ滑りをしたことを
とても後悔した。
それから何度もソリの亀裂をガムテープなどで
修理して滑ったが、雪の上を滑らせるとすぐに
テープは端からはがれ亀裂から雪が吹き込み
ソリは鉋のようになって止まるようになった。
だからソリ遊びはあきらめざるを得なくなった。

ソリが壊れた冬の雪が溶ける頃、
僕は父の転勤で幼少期を過ごした
思い出の多い盛岡を後にし、
北海道旭川市へと引っ越した。

それから28年たった今、自分は再び岩手に住んでいる。
毎朝の通勤時に運動公園横を車で通過する度に、
あの階段は、ソリの思い出と共に
僕は少年時代へとフラッシュバックさせられるのだ。

3年前、旭川に帰省した際、割れたソリが
家にまだあって冬に濡れた靴をストーブの前に
乾かすときに活躍していることを知った。
子供の頃の買い換えは無理だろうと
あきらめた事は正解だったと
これで証明されたような気がした。

2011年1月21日金曜日

bitファイルからPicoBlazeの命令用BRAMブロックのみを入れ替える方法

PicoBlazeと共に頒布されているDATA2MEM_assistanceをよく見たら
KCPSM3アセンブラが吐き出すMEMファイルを使って,
BITファイル中のPicoBlazeの命令BRAMブロックのみを
更新する方法が記載されていたので,自分自身も忘れないようここに紹介する.

まず次のフォルダにパスを通しておく.
C:\Xilinx\12.4\ISE_DS\ISE\bin\nt
このフォルダに,PicoBlazeの開発ツールの下記フォルダにある
bp_bmm.exeを上記フォルダにでもコピーしておく.
KCPSM3\DATA2MEM_assistance

ここでPicoBlazeのアセンブリファイルをprogram.psmとし
ISE Navigatorのプロジェクト名がsampleだとすると
次のコマンドを実行する
kcpsm3 program.psm
pb_bmm program.bmm sample.ncd
data2mem -bm program.bmm -bd program.mem -bt sample.bit -o b new_sample.bit

出来上がったnew_sample.bitをFPGAにアップロードすればよい.
data2memを実行途中でPicoBlazeの命令を収めたメモリブロックを選択する
プロンプトが表示される.1つしか無いなら迷わず1を押してリターン.
複数ある場合は,確認する必要がある.

ひとまず,これでPicoBlazeのマシン語を修正したときに
論理合成とインプリメントの時間待たされずにすむので大助かり.
出来上がったBITファイルをJTAGケーブルでダウンロードすれば
新しいプログラムの実行を確認できる.

2011年1月6日木曜日

「風情故に雪を願い,利便の故に雪を嫌う」

正月休みにドカ雪が振り,
盛岡の街中の沿道にも
うず高く雪が積もっている.

雪が降るとめんどくさい作業が増え,
車の運転にも慎重を要し,
渋滞が増えたりして
生活の利便性は良くないのだけど,
雪はやっぱり風情があっていいと思う.

僕が高校生まで育った旭川では,
半年くらい雪と共に暮らしていたからか,
冬の足元に雪がないとしっくりこない.
でも実際にドカ雪が降ると
「やっぱ雪はイイっすネ」と
言いにくくはなるが,
風情故に僕は雪が好きなのだ.

雪は自然が降らせるものだから,
もっと降って欲しいと思ったところで降らないし,
降らないで欲しいと願っても降る.

「また こんなに降った」と,
「もう たくさん」と思っても,
人の思いとは関係なく降り続く雪は,
普段は気づかない人のエゴを炙り出すような気がする.

早く目的地に付きたいと思っても雪の渋滞で動けない.
車を出そうとしても雪にハマって動けない.
雪で滑って歩きにくい.
それらは全て雪のない日常が人にとってありがたい
状態であったかの裏返しだ.
しかし日常において,そのことに感謝する事を知らない.

でも,考えてみると
雪のふる北國に住む人は
心が温かいとか情緒豊かだと
言われることがある.
もしかしたら,それは人の力の及ばないことを,
毎年の雪に思い知らされているからではないか.
降った雪に文句を言ったところでどうにもならない.
雪を前すると諦めて除雪するしかない.

水害や地震に被災した人達が,その経験を堺に
生き方や自然に対する見方が変わるという.

毎年降るこの雪は,静かに僕らに語りかけると思うのだ.
人の及ばぬ力が雪を降らせるから,
僕らもそれを思わずにはいられぬ.

2011年1月3日月曜日

サイデル教授のかっこよさ

あけましておめでとうございます。
今年もどうぞよろしくお願いいたします。

私は正月休み中は 家でゴロ寝をしながら、ひたすらにテレビとネットを眺めて過ごしています。
この二つは時間を無意味にやり過ごすには最高のものだと今回つくづく思いました。
31日は紅白歌合戦を見ずにビートたけしが出演しているアンビリーバブルを見てるうちに眠くなって寝てしまいました。
怪奇現象などのネットビデオを紹介したり心霊写真を解説したりしているうちはまだ興味をもって見ていられたのですが、途中からフジテレビのスタジオに作ったお化け屋敷に芸能人を歩かせて驚く様子をみんなで面白がるという軽薄な内容となってしまたのが残念なところです。
今日は既に3日の夜なので明日の1日を過ごしてしまえば正月休みも終わって仕事始めです。
休み前はいろいろとやってやろうと思ってはいても、終わってしまえばなんともあっけないものですね。
このような堕落した正月を過ごしていると自分がさらに救いようのないダメ人間になっていくような怖さを感じますが、たとえ何かをしていても対して変わらないかとも思うので、そのように気楽に考えて自分を安心させております。

そういえば元旦の夜に、いつもは見ないNHK教育テレビをつけてみたら話題になっているハーバード大学サイデル教授の政治哲学の講義を連続で放送しているのを目にしました。
講義の中身はともかく、サイデル教授のかっこよさが光っておりました。
ズボンのポケットに手を突っ込みながら絶妙の間合いでジョークを飛ばし、重要なポイントを鋭く放つサイデル先生の授業スタイル、アメリカの政治家が選挙中に繰り広げる演説スタイルとダブります。
そして随時、学生に発言させる機会を与え、必ず最後に「君の名前は?」と聞くところが特に印象的です。
もう1つ注目すべきと思うのは、サイデル教授の授業の後、番組の最後で日本の先生が解説を加えているシーンです。
かっこよすぎるサイデル先生が登場してため息がでそうなすばらしい講義を聴いた後に、あの日本の先生のお話を聞くのは、アメリカの教育レベルと日本の教育レベルの差を見せつけられているようで皮肉でしかありません。
サイデル先生と解説している日本の先生の髪の毛は、同じぐらい薄いのだけど、二人を比較するとまるで大人と子供のようなオーラの違いを感じさせられるような気がしてなりません。
聞くところによるとサイデル先生の授業はアメリカの標準的な大学の講義スタイルなのだそうです。
日本の一方的な講義とはずいぶん違うことに驚いてしまいます。
日本の大学は少子化によって学生が少なくなっていくことですし、この際、大学の講義をアメリカのような積極参加型に改め、知識を詰め込むのではなく考える力を身につけさせる事を目指したらいいんじゃないでしょうか。
ゆとり教育が叫ばれたときに小中学生に考える力を身につけさせると言う話がありましたが、むしろ子供の時は知識を詰め込み、大学生ぐらいになってから深く物事を考える力を身につけさせる手順の方が、現実の社会で活躍できる人物を育てることができるのではないかと個人的には思います。

サイデル教授の哲学の講義の中身そのものは,正直なところどうでもいい内容なのですが,どうでもいい内容を楽しく人に伝える技術を学ぶ良い教材だと思いました.
そのうち録音して通勤の車の中で聞きたいと思っています.