(M)のドタバタ編集記 2006年5月号(?)


●5月1日
 今日は午後2時から、某筆者さんの某秋葉原の事務所にはじめておじゃまします。さすが9階は眺めが違いますね。神田明神がよく見えますねぇ〜 で、この目の前にあるのは… おぉ〜動いてますねぇ〜 でですね、カクカクシカジカ… etc
 おっと、打ち合わせが長引いてしまって、会社に戻ったらもう夕方です。さっそく本誌の校正校正!!

 ん〜 連休中はNewsが少ないなぁ〜(^^;)

●5月2日
 現在編集作業中の号は2006年7月号です。この号は“ゴールデンウィーク進行”と呼ばれる恐怖の前倒しスケジュール(汗)で制作スケジュールが組まれているため、本日5月2日は、いつもの月でいえば、6日や7日に相当すると言ってもよいでしょう… げ!目次まだ決まってないよ!! ってことで、あわてて目次を作ってます(^^;)
 初校を戻してないから再校も出てくるわけが無いのですが(汗)、とりあえずなんとかゴールデンウィーク進行はしのげた感じですかね??

●5月3日
 なぜか昨日から会社で徹夜してます。とりあえず7月号の制作進行の目処は付いたので、今度はこっちに注力しないと…
 さて、今日は、“なんちゃってprintf関数”の実装。せっかくテキストVRAM付きの画面出力があるので、Cプログラムがprintf関数を呼び出すとことで画面に文字列が表示されるようにしたいっすよね!? とはいえ、ホンモノprintf関数は、あとでgccに詳しい筆者さんにnewlibを移植してもらうので、今回用意するのはnewlibもない、newlibもコンパイルできない?、最小限のコンパイラしかない状況で、浮動小数点表示関連を削除し、%d(%D) %x(%X) %c %s程度に対応してメモリサイズがより小さくしたprintf関数です。なので“なんちゃって”が付くわけです(笑)
 実は書式変換ルーチンの部分は某氏に作ってもらっているので、最終的にメモリバッファ上に展開された文字列を、テキストRAMに展開していくルーチンを用意するだけなんですが… あれ? カーソルが一番右から左に移らないな… ありゃ、最下行がスクロールアップしないぞ… 色や反転表示の属性をどう指定させるかな… I/Oアクセス部分の関数でワーニングが出てるけど、とりあえず気にしない!(をぃ)
 ん〜 “なんちゃって”とはいえ、printf関数(正確には cq_printf関数だけど)で文字列が画面に表示されると、オリジナルパソコン上でプログラミングしている雰囲気になりますね!!(^^;)

●5月4日
 昨日の“なんちゃってprintf関数”のとある仕様についてBLANCA設計筆者陣の間で意見の対立が発生!?
DOS/Windows派:「改行はやっぱりCR+LFでしょ!」
UNIX派:「いや、LFだけでok!」
Mac派:「CR以外は譲れませんな…」
(↑すいません。現在筆者陣の中にMac使いの人はいないので、ココ脚色です(爆))
(汗) え? 私ですか? 個人的にはDOS/Windows派に1票…(^^;) いやぁ〜 技術的にはどうでもいいコト?なんですが、こんなところでもオリジナルなコンピュータシステムの仕様を自分たちが一から決めてるんだ!っていう実感がありますねぇ〜 と、筆者陣のメールのやりとりをニヤニヤしながら眺めてます(笑)
 現時点ではまともな漢字テキストVRAMが無いから話題に出てませんが、いずれ漢字表示対応になったら、今度は『漢字コードどうする?』論が勃発しそうだな…(笑)

●5月5日
 すいません、今日は充電日とさせていただきますす

●5月6日
 実はBLANCAには、量産ボードの前に、数枚だけ作った量産試作ボードがあります。この量産試作ボードは、部品手配の問題から、とりあえずあり合わせ??の部品を実装した関係で、量産ボードと論理的にも仕様が異なっているところがあります。たとえば、A/Vプロセッサとして実装しているFPGAのゲート規模が小さいとか(^^;)、SDRAMの容量が半分とか、PS/2コネクタの上と下が逆(キーボードとマウスが逆)とか(汗) …
 そんなわけで、時々「量産試作ボードでは動いた設計が量産ボードでは動かない!?」という現象も出てくるのですが、たいていは、その仕様の違いを忘れてるだけだったりもします。
 量産ボードもできてるんだから、試作ボードなんか捨てろよ…って? なんてもったいない! 仕様の違いこそあれ、ちゃんと動作するので、ソフトウェア的に見て量産版と違いがわからない部分(またはソフト的に見て同じ仕様に見えるようにハードウェアを作って)でのテストには、十分使えます。
 そんな仕様の違いの中で、つい最近明らかになった点が… フラッシュメモリの書き換え単位であるセクタサイズですが、他のセクタよりサイズの小さいブートセクタが、低位アドレス側にあるか高位アドレス側にあるかで、ボトムタイプとトップタイプと区別されています。で、最近まで、フラッシュは量産ボードも量産試作ボードも、どちらも同じ物が実装されているものとばかり考えていたのですが、先日「特定のアドレスでフラッシュが書き換えできない!?」という現象が発覚し、よくよく見たら、セクタ消去したつもりが、途中のアドレス以降が消えてない… つまり、そこからセクタサイズが小さくなってることが判明。量産試作ボードに実装したフラッシュはブートセクタが高位アドレス側にあるタイプだったというオチです。
 だったら逆に、細かいと思ってたセクタが実はサイズが大きかった場合、直前に書いたデータまで消去されてしまう…ことになるわけですが、そこは大丈夫!? こちらで用意したフラッシュ書き換えプログラムは、あらかじめ書き換えるサイズに応じてセクタ消去を先に済ませてから書き込みをするようにプログラムしたので、とりあえずデータの書き込みは正常なんですね(だからこそ、この仕様の違いに気が付かなかった!?) 正確には、セクタが細かいと思っているので、すでに消去済みの領域に対して何度も消去コマンドを発行していることになるので「消しすぎにご注意」ですが…(UV-EEPROMなら“消しすぎ”ってあるけど、フラッシュにはあるのか??)
 そういえば、フラッシュの書き換えテストって、頭のアドレスでしかテストしてなかったからなぁ〜(汗)

●5月7日
  今日は“BLANCAを使っておもろいことしようや”プロジェクトの打ち合わせ(え? 違うの?(笑)) 私が寝坊した関係で(汗)、結局、巣鴨で打ち合わせとなりました…
 いやぁ〜 すいません。連休明けの展示会に向けてデモを作らなければならなかったんですが、ちょっと今日は間に合わなかったですね… もう少しかっこいいデモをお見せしたかったんですが…。
 さて、何か面白い活用ネタあります? やっぱりパソコン作りたいよねぇ〜 ○○さんは、これに移植できそうなIPコアありますか? そうそう、誰か、めちゃくちゃかっこいい起動画面を作ってくれないっすかね?(汗) etc

●5月8日
 あさってから開催されるET関西の荷物、今日宅急便で送るんですか… まぁ〜たしかに、明日送ったら開催日当日到着で、その日は荷物が受け取れないかもしれないもんな… っということで、当初の予定になかった液晶ディスプレイを急遽用意してもらい、まずはBLANCAのグラフィック出力がちゃんと写るかどうか確認。よし、ちゃんと表示されるぞ… 写ってるのはSDRAM上のゴミだけど(^^;)ここで問題としているのは、同期が取れるかどうかなので問題なし! ぢゃこの液晶ディスプレイを送ってください。
 あと、肝心の展示ボードは… デモ設計とプログラムを今晩じゅうに仕上げるので、明日までまってください(滝汗)

 さて、せっかくなので、連載の記事にもなるマルチチャネルSDRAMコントローラとCRTコントローラの組み合わせでデモしたいな…っということで、懸案だった、読み出し要求連続発行方式のテストをしてみることに… 現状の設計では発行した読み出し要求に対して、データレディが返ってきた時点でカウントを開始し、16ワード目をカウントした時点で次のアクセス要求を出してますが、まずは次のアクセス要求の発行タイミングを、1ワード目のデータレディを検出したところで発行するように変更… さて、画面表示は… やっぱちらつくか… orz…
 次、もっと先行してアクセス要求を出す…のはいいんですが、どっかでコマンドバッファフル状態になるはずで、何らかの信号でそのコマンドバッファフル状態を判定する必要があるはず… と思って信号を見ると、なにやらAccess_Fullなる信号があります。たぶんコレだろう…ということで、この信号が1になるまでとにかく連続してアクセス要求を出すという、これ以上ないくらい前倒ししたアクセス要求発行方式にしてみると… なんじゃ、ぜんぜん画面になってないぞ!? なんかおかしいな…
 で、ロジアナのサンプリング長を長くして、1ライン分をめいっぱい取り込んで波形を見ていくと… ん? なんだここ、レディの長さが妙に短くないか? げげ! 途中でレディが途切れてるよ!! いったんバースト転送が始まったら、16ワード連続してデータレディになるんぢゃないのか!? ん〜 予想外の波形(^^;) 実際問題現物がそういう動きをしてるんだから、しかたがない、レディの期間をカウントして、合計して16ワードをカウントして、次のバースト転送を認識するように回路変更。
 さて、これでどうだ!! うぉ!? もしかしてCPUからのSDRAMアクセスの優先順位が下がった? なんか画面のちらつきが激減されたぞ!? おお こりゃいけるかも!? ん? っは! …すいません。私の勘違いでした… さっき動かしたプログラムはブロックRAM上で動くバージョンですたorz2
 ん〜 結局、これ以上ないくらい読み出しコマンドを先行して発行してもダメか…

 ん〜 税別598ですか… ゲームマシンとしてみれば、かなり高いのはたしかですが… 発表会とかのプレゼンで大風呂敷広げてるネタが本当に実現するのであれば、高くはないかな。それがいつ実現すんのよ…ってのは別にして(^^;) もっともそのころにはスリム化&低価格化したモデルが出てる可能性は高いような気がする…
 おっと、なんじゃこりゃ… そうか、HyperTransportできたか!! 別にこれがOpteronをエミュレーションするわけじゃなくて、1個はホンモノのOpteronをマザーボードに乗せないとならないわけか(だからデュアル以上のCPU対応マザーボードが必須なわけだ) HyperTransportの事例として非常に面白いネタではあるが… ん〜PCI Expressの×16とかのほうが汎用性があるように思うんだが…

●5月9日
 明日から開催されるET関西のデモの準備のため、結局徹夜です。まぁ〜なんとか、アナログRGB出力のデモをでっちあげ仕上げて、さらに会場では電源を入れただけで画面が表示されるようにROM化までしておかないとね。ってことで、DWM編集部のN村さん、荷物になってもうしわけないですけど、貴重なBLANCAボードなのでハンドキャリーでお願いします(^^;)

 コレって、USBとか何か適当なバスに接続して使うモンじゃないのね… 音源感知コントローラって、写真の丸いやつ? なんか外からの雑音とか拾いそうだし、ボリューム絞るとLEDの点滅もなくなっちゃうんだろうな… だったらライン入力とかに差し込んだほうが得策のような気も??

●5月10日
 大阪では、BLANCAのデモは無事起動しただろうか… 現場に行くと動かなくなる…というのは「マーフィーの法則」だからな(^^;)
 さて、こちらは本誌の校正を片っ端からやらねば…

 今日はメモリ周りで注目ネタが2件。FB-DIMMが認証されたそうで… FB-DIMMは当初はサーバ用なんでしょうが、ゆくゆくは普通のデスクトップ用途に使われるようになるんですかね?? PCのまわりにあるバス関連で、パラレルなのはCPUソケットとメモリソケットしか残らなくなってきてるし(^^;)
 もう一つはNANDフラッシュねた。グループにSamsungと東芝が無いのがナニだな…と思ったら「第3のグループとしてシェアの向上を目指す」だそうな… 「次々と新手の規格出さないでよ!」っと言うのは疲れたので、アクセスコマンドさえ公開してくれればもう文句言わないっす(涙)

●5月11日
 で、本誌2006年7月号は、いま出てるのを見れば終わり?? っということで、今日は片っ端から三校読み!!

 復刻版、“容量も当時を再現”だったら完璧!?『昨今の機器でご使用になりますと、瞬く間に電池がなくなります。』(←んなアホな^^;)
(↑いや実際、当時は何mAhくらいだったんだろ…)

●5月12日
 今日は、ET関西から荷物がもどってきてるハズなんですが… 液晶ディスプレイはどうでもいいけど(こら)大事な大事なBLANCAボードはちゃんと戻ってくるよな…(無事戻ってきました^^;)
 さて、今日は午後から編集会議。10月号以降の特集予定、そろそろ確定しないと… ローテーションも決めないとならないし…
 夕方。筆者さん来社。マルチチャネルSDRAMコントローラの件で、最後の裏業として、MicroBlaze君に「ちょっとまった!」と、CPUを強制的に停止する方法を検討中。dbg_stopという信号があるそうなんですが、これで停止できるかも?? で、こんな感じに作ってみたんですが、どうもCPUコアは止まらないですね… 筆者さんもこの信号は使ったことがないそうで、さらにドキュメントに詳細なタイミングや制御方法が書いてないという信号なそうで… これ以上突っ込んだテストができそうにないですね。
 さて、ここ数週間いろいろ実験してみましたが、やはり当初の予想どおり、残る方法はEDK付属のマルチチャネルSDRAMコントローラを使わずに、自前のSDRAMコントローラを機能拡張して、MicroBlazeのキャッシュリンクにも対応させたものを作るのがよさげですねぇ… で、誰が作るの??(滝汗)

 玄箱対抗か、安価なNASキットがまた一つ… ん〜 もうちょっと基板写真見せてほしいんだけどな…(^^;)

●5月13日
 さて、連休も明けてハードウェアとサンプルソフトウェアがそろってきたので、ここらで少し、ソフトに詳しい人に手伝ってもらって、サンプルプログラムをブラッシュアップすることに。弊社のLAN管理者でもある某氏を無理やり引きずり込んでに声をかけて、プログラムの構造とかを相談。
 さて、問題はどのプラットホームでやってもらうかだ… ハードウェアの完成度が一番高い(っというか、各IPコアの動作確認を先にやってるから)のはMicroBlazeなんだが… こいつの開発ツールであるEDKを、そのままソフト屋さんに使わせるのもなぁ〜 逆にソフトの開発ツールはgnuベースのツールが使えるのは某32Rなんだが、こっちはまだIPコアの移植が終わってないんで、一部のI/Oが付いてない状態だし…
 …とりあえずMBで行く?? ってことで、とりあえず某開発ツールのインストールから始める。しかしこれがスッタもんだで大変。ネットワークごしにファイルをコピーしようとしたら… げげ! バックアップHDDの中のファイルが壊れれてて、ファイルが取り出せない!(バックアップの意味ねぇ〜!?) 今開発に使ってるマシンにもツールは入ってるけど、こいつはスタンドアロンなマシンなので、ネットワークにつながってないし… しょうがないので、USB-HDDにいったんコピーしてから… げげ! このマシンUSB1.1か? 12Mbpsで数Gバイトのファイルのコピーって鬼のように遅いな…(涙)
 なんとかファイルをコピーして、やっとのことでインストール作業開始。さて、日本語Windowsにインストールする場合、言語設定か何かを英語にしないとダメだったような… 記憶をたどりながら「これかな??」とインストール。あれ? DISK2と3も別々にsetup.exeを起動してインストールするんだっけ?? DISK1だけ入れて先にパッチ当てたら、バージョンがあがってしまって、後からDISK2とDISK3のsetup.exeを起動しても「バージョンが違います」なエラーでインストールできないぢゃん!!!(削除するのも時間かかるので、とりあえずフォルダ名だけ変更して再インストール)
 よし、これでパッチもあたって、やっとツールが起動… ジャン!(エラーダイアログが開く!!) なに!? VC++のランタイムDLLがないだとぉ〜!? をぃをぃをぃ、ランタイムDLLはEXEといっしょに配布&インストールしてくれよ… VCのランタイムだから、どっかそこらのマシンに入ってない?(^^;)
 ふぅ〜 やっと起動したぜ… いやぁ〜 今使ってる開発環境へのインストールは、実は筆者先生にやってもらったので、こんなに苦労した覚えがないっす(滝汗) やっぱインストール方法のヘルプを作らないとダメだな…

●5月14日
 結局今日も徹夜でゴソゴソと… すでに先行して何人かの筆者さんにはBLANCAを使ってもらっているんですが、「うち、LPTポートのあるPC、もう無いんだよねぇ〜」という声がちらほら…(汗)
 ん〜 そろそろLPTポートを標準と考えるのは、無理な時期になってきたのかな… FPGAをJTAGでコンフィグレーションする方法については、ベンダ純正のUSBダウンロードケーブルなどがあるので、それを使ってもらうとして(実際、そういう筆者さんらはみんなUSBダウンロードケーブルを持っている)、問題はBLANCAオリジナルのブート部分。
 すでに記事でも紹介しているように、BLANCAにはFPGAコンフィグレーション用のシリアルROMは搭載しておらず、一般的にCPUのプログラムを格納しておくNOR型フラッシュを搭載して、そこにFPGAのコンフィグレーションデータを書き込んでおきます。で、FPGAとフラッシュの間にCPLDがありまして、パワーONでこいつがフラッシュからコンフィグレーションデータを読み出してFPGAに書き込む…という寸法でシステムをブートします。なので、このフラッシュにコンフィグレーションデータを書き込む手順を用意しておかないと、完成したFPGA設計データをROM化できません。
 で、当初はこの書き換えインターフェースとしてもLPTを使うことにして、LPT経由でフラッシュを書き換えるユーティリティも用意している(実は現状ではまだDOS版しかないけど(^^;))んですが、「LPTが無い!」という声が多いなら、もっと別の標準的なインターフェースを使ってフラッシュを書き換える手立てを考えないと… っということで白羽の矢があったったのが、USBなわけで…
 なわけで、USBターゲットコントローラのIPコアの完成度を上げる必要性に迫られております… っということでUSB担当の某筆者さん、アレとソレにまだバグがありましたよね? それとエンドポイントの仕様ですが、バルクOUT系のEPをもう一つ増やして、EP1をインタラプトIN転送(割り込みステータス通知用)、EP2をバルクOUT転送でコマンド用、EP3をバルクIN転送(データ用)、EP4をバルクOUT転送でデータ用としましょう!
 ハードウェアはOKとして、次、ユーティリティプログラムのほう。とりあえずVBでかまわないので「こんな感じで操作したい」という雛形をこちらで作るか… 詳細はプログラマ屋さんに投げちゃう!(汗)

 うぉ〜 『製品化は見送りの予定』とか言わずに、ぜひとも製品化をお願いします!! たしかにブリッジ物は、つなぐデバイスによってはWinodwsが正常に初期化してくれない物もありますが、そこはユーザーの責任で使っていただくという割り切りで!!。  いやぁ〜 この手のバス変換とかブリッジマニアとしては、外せない一品でしょぉ〜!!(爆)

●5月15日
 今日は午後から小田原方面でBLANCA作戦会議。せっかくなので、その場でBLANCAのデモも見せることに。しかし、先日の展示会用に画像表示デモはROM化したものの、ほかのデモプログラムはROM化できてないので、ダウンロードして動かさざるを得ず、しかたがないので自前のノートパソコンをもって行くことに。さらに、先方に電源がないとせっかく準備してもムダになってしまうので、動作確認が取れている小型のATX電源やらPS/2マウスやらも担いでいくことに!(を、重い…) さすがに液晶ディスプレイは持ち歩けないので、無理を言って用意してもらいました。
 さて、まずは画面表示のデモはこんな感じで…(よかった、用意してもらった液晶ディスプレイに写った(^^;)) 手前のテキスト表示はテキストVRAMプレーンになってまして、後ろのグラフィックスプレーンと重ね合わせで表示してます。PS/2はこんな感じで…あれ? こっちのマウスは認識しないですね(汗) いやぁ〜実はPS/2の初期化部分で、まだ懸案事項がありまして、PS/2デバイス認識率がまだ若干低いんですよ(言い訳) PS/2担当の筆者さんには、初期化ロジックを見直してもらってるんで、いずれ安定版があがってくると思います(必死に言い訳^^;)
 さて、今日は実は筆者さんからもお話があるそうで… おぉ、これが例のボードですか。えぇ!? SH-3搭載でその価格はホントですか!? 発売開始まで、期待して待ってます!!
 おっと、気が付いたら5時回ってるし… 今日はありがとうございました(玄関を出るときには終業のベルがなってました^^;)

 おっと、さっそくレポート記事があがってるが… いや、だから、もうちょっと基板がよく見える写真をアップして欲しいんだけど…(汗)

●5月16日
 さて、連休明けに各筆者から提出された最終版のIPコアと制御サンプルプログラム、そしてドキュメントの整理統合作業を開始。このIPコアのREADME.TXTが付いてないですよ! こっちのコアのサンプルプログラムはまだですか?? なんだかんだで、ファイルの抜けがあるので、ちゃんとチェックせねば…
 そして今日の夕方は、SH-2付録基板の関係者を集めて、ささやかな打ち上げ。本企画へのご協力、まことにありがとうございました。ルネサスの担当者さん以外は、私は始めてお会いする人ばっかりですが… 今回の企画は編集長主導で進められたので、私は脇役に徹して…(^^;)

 またまたS社がちっこいPCを出してきましたねぇ〜 ガジェットとしては面白いけど、個人的にはこの手のアイテムには触手は動かないなぁ〜

●5月17日
 USBコアのバグがなかなか取れなくて、すったもんだしてたらもう朝でしたよ(汗) やば! 今日は午後1番に筆者と打ち合わせがあるんだから、こんなカッコじゃまずいっしょ!ってことで朝帰り(^^;) メシ食ってシャワー浴びて一休みしたら、もう11時過ぎ! 急いで電車乗って出社。1時10分前になんとか到着。
 えぇ〜 コレの発売が延び延びになってしまい、申し訳ありません。で、どうでしょうか。この上で動く某CPUコア用のコンパイラとデバッガなんですが… ふむふむ、なるほど… ってことで、いろいろ無理をお願いすることになりそうですが、よろしくお願いします(^^;)

 おっと、黒Macですか… 何度も言ってるけど、Macを名乗ってるのにCPUがx86とは世も末だな(をぃ)

●5月18日
 おっと、バージョンアップ版USBターゲットコントローラとユーティティプログラムがあがってきました。おぉ〜以前と比較して安定して動きますね。お! BMPファイル(正確にはフレームバッファのピクセル構造(1ドット32ビット)に変換したバイナリファイル)のダウンロード速度、先日の雛形の時より断然早くなってません?? そっか、雛形の時は、汎用USBドライバのDLLを呼び出す段階で、USBフルスピードの最大パケットサイズである64バイトに区切ってDLLコールしてたのを、今回はWin32アプリレベルではもっと大きなブロックサイズでDLLコールするようにしたわけですね(DLL内で分割処理してくれる)。いやぁ〜このくらいの転送レートなら、12Mbpsでも十分使えるっしょ。これでもUSBターゲットコントローラのバッファはシングルバッファ構成なので、ダブルバッファ構成にすればもう少し早くなる可能性もあるし、いけるいける、全然実用の範囲内っすよ!
 さらに、おぉ〜 ちゃんとターゲットからホスト方向へのデータ転送(アップロード)も、ハングアップせずに動いてますね(以前の設計データだと、バルクIN転送のどっかにバグがあったみたいで、アップロード中にハングアップすることが時々(^^;)) ダウンロードとアップロード、そしてファイルコンペアを繰り返すプログラムを作って、USB経由のファイル転送でデータが化けないことを確認するテストもしたいですね。
 そしてもっとも驚いたのは、フラッシュ書き換え機能。ん〜 BLANCAに載せてるフラッシュって、結構早いんですね(^^;) その昔、某CPUボードに実装した某社のフラッシュは書き換えがえらい遅かったんで、フラッシュメモリは遅いイメージがあったんですが(汗) いやぁ〜 USBターゲットログから次々とアドレスカウント表示が吐き出されてますよ… 以前から用意してあるLPT経由でフラッシュを書き換えるユーティリティとは比較にならない速さです。すばらしいです! 正直、あれ(LPT版)で合計2Mバイト分の書き換えは気が重かった(笑)んですが、いやぁ〜このUSB版ならぜんぜんストレスなくフラッシュ書き換えできますよ!!

 さて、夕方は今後の特集予定の件などについて、編集部内会議… どうしましょうねぇ〜(徹夜明けなので、今日は頭が働いてません^^;) 

●5月19日
 明日、某大学の研究室でデモを見せるので、いろいろ準備を… とりあえず、昨日できあがってきたUSB周辺のデモは披露したいので、BMPファイルをフレームバッファのピクセルフォーマットに変換するツールを使って、著作権フリーの風景写真集から適当な画像ファイルを見繕ってデモ表示用に画像変換。
 次、SD/MMCカード用のサンプルを少し手直し… 以前のデモは、カードが差し込まれている状態で走らせる構造だったので、MMCカード・コントローラの初期化だけを先に処理して、カードが挿入状態かどうかを確認してからカードの初期化および情報取得を実行し、セクタダンプする流れに変更。CompactFlashのサンプルも、割り込み駆動式に修正したいんですが… とりあえず時間切れなので、また後日…(^^;)

 コレとかコレって、要はSPDを独自に拡張したってことだよね? で、JEDECはこの拡張が気に入らないみたいで… 勝手規格として放置しときゃいいんじゃないのかな??
 それはそうとメモリのレイテンシに「5-5-5-15」とかいう表記があるんですが… SDRAMとかは最初がレイテンシが多くて、以降は-1-1-1で少なかったよね… ん〜 DDRやDDR2の詳しい解説記事はまだ載せたことが無いので、ちょっと解説記事を書いてもらうか…

●5月20日
 今日は湘南方面の某大学の研究室にBLANCAのデモを披露しに行きます。今回も完全なROM化ができてないので、ノートパソコンを担いで向かいます。荷物の多さには前回苦労したので(汗)、今回ATX電源などは先方で用意していただくようお願いしておきました(お手数をおかけしました)
 いやぁ〜 都内からだと思った以上に時間がかかってしまった… ってことで、駅前からタクシーを使うことに(弱!) 大学名を言うと「何号館ですか?」と。おっと、建物の目の前までつれてってもらえるみたい(^^;) 駅前の交差点を抜け、坂を上りきるともう正門が見えてきました。この距離なら帰りは歩きだな。…あれ? タクシーの運ちゃん、正門から入らずに大学敷地脇の道路を延々走ってるんですが… ん〜 どこに連れて行かれるんだろう(笑) どうも目的の建物は正門からみると敷地の反対側にあるらしく、反対側にある門から学内に入ったということらしいです。うむ、結構な速度で5,6分走ってたから、行きはタクシー使って正解だったな(汗)
 遅くなりまして申し訳ありません。あ、よろしくお願いいたします。っということで、さっそくノートパソコンを広げて、デモの実演。ありゃ、用意していただいたATX電源だと電源が入らないですね。壊れたHDDか何かあります? 最近のATX電源は負荷が軽すぎると動かないのがあるんですよね…(^^;) あら、このHDD、モータがスピンアップしてる音がしないな… IDEケーブルを繋がないとモータが回らないタイプか… 別のHDDありません?(すいませんです^^;) よし、FPGAがブートしました。あ、用意していただいた液晶ディスプレイだと、オーバースキャン気味で表示されますね。画面の上下左右の端っこが写らない(汗) いや、まぁ、とりあえず、画面表示はこんな感じで… 一番手前はテキストVRAMで、漢字も表示されてるので「お!漢字テキストVRAMか!?」と思うかもしれませんが、このテキストVRAMは8ビットキャラクタ対応で、80h〜FFhまでのフォントテーブルが空いてるので、そこに漢字のフォントを埋め込んだだけで、全角文字だと64文字しか定義できない、なんちゃって漢字表示です(^^;)
 PS/2は、ハードウェア的には正式には活線挿抜には対応してないんですが、無理やり抜き差ししちゃっても、ドライバレベルでコマンドをやり取りして、デバイスが抜き差しされたことを検出して、再度初期化から行うような構造にしてます。これでキーボードからマウスに切り替わりました。えぇ、ホイールマウスやMS純正のチルトホイールマウスも認識して、ホイールやチルトの情報、第4、第5ボタンの状態も検出できますよ。
 あとSD/MMCカードのセクタダンプとか、CompactFlashのサンプルとかetc… っという感じです。
 さて、このボードを使って… なるほどなるほど… ハードウェアはどのレベルまで互換性を狙って? BIOSもすべて自前ですか? 時期的なところはそちらの研究発表のタイミングでかまいません。よろしくお願いいたします!!(内容はまだナイショ)

 おりょ! あのDellがAMDチップを採用か… まぁ〜サーバー分野ならありえるか。

●5月21日
 今日は休養日ですす……

 「HDMI Ready」って、HDMI出力が可能ってことだろぉ〜 “単に「今後発売されるHDMI対応ビデオカードに接続するための、S/PDIFケーブルが同梱されている」という製品”って、そりゃサギだろぉ〜(汗)

●5月22日
 今日もBLANCAの件で終日打ち合わせ。ここのところのBLANCA関連の打ち合わせは、まずは発売が延び延びになっていることの平謝りから…(滝汗)
 さて、今日の議題はソフトウェア関連…とくにOSネタなのですが… えぇ、たしかに、BLANCAの上でクロック周波数400MHzクラスのMMU内蔵CPUも動き始めているので、当然Linuxを…という話は出てくるのはわかるのですが、私としてはいきなりLinuxが入っている環境を用意するのではなく、まずは“main()”から書き始めるCのサンプルプログラムから始めたいんですよ。そのような考えから、BLANCAに添付するCのサンプルプログラムは、テキスト画面表示プログラム、PS/2キーボード制御プログラム、IDEセクタリード/ライトプログラム、Ethernetパケット送受信プログラム…etc を用意しています。そしてこれらのサンプルをまとめて、ブートプログラムやIPLに発展させるつもりです。
 よって、OSを走らせる話題は、第2段階かと考えています。しかも、当初想定するOSはITRON系を考えています。というのは、FPGAに実装できるソフトCPUコアは、一般的には非力なCPUであることが多いので、Linuxを走らせるだけのリソースが無い場合もあるからです。そこでOS第1弾としてはITRON系OSを、そしてMMUの有無やCPU性能が高い場合には、次にLinux…という展開を考えているんですが… どうでしょうか??

 Processor Forumで、大手ベンダ以外の日本の会社からの発表もあるんだねぇ〜 で、面白い??のは一番下のほう。

今回聴衆に一番「?」マークが浮かんだのはおそらく写真18のプレゼンテーションだろう。筆者にとってはあまりに馴染みのメーカーが並んでおり、…
いやぁ〜 本誌ではよく見るベンダのアイコンが並んでるんですけど(笑)

●5月23日
 いやぁ〜 実はこの期に及んでまだバグが取れてないIPコアがあったりします(滝汗) 何を隠そう(^^;)Ethernetコントローラなんですが… 受信バッファとしてブロックRAMを16Kバイト使ってるんですが、容量の少ないブロックRAMをめいっぱい有効に活用することを狙って、受信バッファはリングバッファ構成にして、ハードウェアでリードポインタ/ライトポインタを制御してます。さらに次に読み出すべきパケットの取り出し先頭アドレスをスライドさせて、CPU側には常に固定した受信バッファの先頭アドレスを見せるという、ちょっと凝った受信バッファになっているのですが…
 で、もともとこのコントローラ、某A社デバイスで動いてる設計を、ブロックRAM部分のハードウェア依存部だけ皮をかぶせて、X社デバイスに移植した… んですが、どうもその時に受信バッファ制御部とブロックRAMの部分の記述で、何かミスってるような気がするんですが…??
 もちろんこの問題は修正せねばならないのですが、さらに一歩引いて考えると、はたしてこのマニアックな設計(笑)が、ハードウェアの入門キットに最適か??と言われると、ちょっとナニですかね…??
 そう考えると、もっと初心者でも理解しやすい受信バッファ構造のEthernetコントローラを添付したほうがいいような気もするんですよね…(って、今頃言うな??) かといって、送信バッファのようにバッファが1個(そうなんです!このLANコントローラ、送信バッファは1個だけっす^^;)しかない受信バッファではあまりに貧弱なので… とりあえずブロックRAMは16Kバイトくらいは使えそうなので、1パケットあたり2Kバイト(2のn乗のほうが都合がいいので)として8パケット分の受信バッファとすることに。
 …っということなので、今週中に受信バッファの仕様をこの仕様に変更した入門者向けEthernetコントローラのIPコア、よろしくお願いします(簡単に言ってますが(^^;))
 ハードウェアの設計を変更してしまうと、ドライバソフトウェアも変更しないとならない…というのが普通ですが、そこはご安心ください。そのための“凝った仕様”なんです。すでに説明したように「CPU側には常に固定した受信バッファの先頭アドレスを見せる」というところがポイントで、そのため上記のように受信バッファの仕様を変更しても、対応するドライバはいっさい変更する必要はありません。えぇ、そこまで考えてでハードウェアの仕様を考えてるんですってば!(^^;)

 FlexRayってそんなに重いのかな?? PowerPCコア内蔵だそうな。とはいえe200コアだそうだから、そんなに高性能なコアってわけではなさそうだな…
 お、RAMとフラッシュも内蔵してるんだ。PowerPCアーキテクチャのCPUでフラッシュやRAMまで内蔵した1チップ志向の石ってあったっけ??(この写真を見ると、ほかにもあるらC) PowerPCというと、数百MHz以上の上の石しか見てなかったからな… ちょっと要チェックだな。

●5月24日
 ここのところ打ち合わせ先にorから直行直帰してるんで、メールが溜まっております…(^^;) ってことで、今日は素直に出社して、メールの返事書き…
 夕方、日本橋方面の某有名PC周辺機器ベンダさんにおじゃまして意見交換会?! いや〜御社の次期製品に関する重要な会議??にうちみたいなところが顔出しちゃっていいんでしょうか?という状況なんですが(汗) とりあえず、以前の企画ネタでどんなものがあって、今後も同様な企画を進めたいので、こんな機能やらこんな仕様になってるとうれしいです!と、こちらの要望を伝えておきました。まぁ〜それが実際に製品に採用されるかどうかは先方次第ですが(^^;)

 AMDから新手のソケット仕様の発表ですか… まぁ〜メモリがDDRからDDR2に変わるタイミングってことで、ある意味仕方が無いところか。レンテンシが長くなるのを嫌ってDRAMコントローラをCPUと結合するという、Intelとは対極をなす考え方で設計されているわけで、ぜひともがんばって欲しいアーキテクチャではあります。え? じゃ〜実際に買えって? テストマシンとしては1台Athlon/Opteron系マシンが欲しいなとは思ってはいるんですがね…(汗)

●5月25日
 まずいまずい、気が付くともう25日。担当の連載記事を送稿しないとな… 今回から新しいCPUコアの解説編を始めます。このアーキテクチャのCPUは、かなり以前に一度解説記事を掲載しましたが、それからだいぶ時間が経っていることもあるので、あらためて、アーキテクチャの解説から…

 毎年毎年行こう行こうと思ってるんだけど、忙しくて結局一度も行けてないコレ。今年もNewsサイトの記事で行った気になるか(笑)
 同様に、ココの一般公開も行ってない… このうちの某研究所は実は自宅の近所で、毎年「一般公開」のチラシがポストに入ってるんですが… 次こそは…

●5月26日
 実は今日は、急遽出展が決まったTOPPERSカンファレンスなのです。本当は午前中から、高田先生の講演を聴きたかったのですが、いろいろ宿題仕事が残ってたので、午前中は雑用のお片づけ…
 昼過ぎ、都営新宿線に揺られて(関係ないけど地下鉄でほんとに駅をすっとばす快速って初めて乗ったかも(^^;))船堀まで。出展が急遽決まったということもありますが、格好いいデモなんて何もないわけで、うちが展示できるのはITRON関連の書籍ぐらいのものですが…
 そして最後に行われた懇親会は、なかなか楽しませてもらいました。“ライトニングトーク”という「5分間で何かしゃべれ!」というコーナーに私も出まして、ちょっとBLANCAの宣伝をさせていただきました(汗) 他にはガンダムとか戦車とかアスラーダとか、みなさん「夢」に向ってがんばられてるんですね(…っと私は理解したのですが、違いましたか??(笑))

 ん〜 このHDDアクセスをフラッシュでキャッシュするって、ホントに有効なのかな… どうも書き込みが遅そうなイメージが強くて、どうにもイメージしがたいんだけど…(先日のUSB経由でBLANCA上のフラッシュを書き換えるツールは思った以上に速かったから、フラッシュに対するイメージを変えないとな…(笑)) まぁ〜試作機があって、実際に高速起動のデモが動いてるそうだから、効果はあるんだろうけど… いやぁ〜 実際にこの目で見てみないことには…(^^;)

●5月27日
 某氏にお願いしたコンソール入出力ライブラリを実現する上で、テキスト画面出力とPS/2キーボード入力以外に、シリアル入出力もコンソールとして同等に扱うように考えています。で、そのコンソールなんですが、現状のUARTのIPコアにはFIFOが付いてないので、FIFOを付けてハードウェアフロー制御に対応させる必要が出てきました。ってことで、あわててコントローラの設計中。
 とりあえず、現状のサンプルでもブロックRAMがいくつかあまっているので、手っ取り早くFIFOにはブロックRAMを使うバージョンを用意してみるか… とはいえ、Spartan3のブロックRAMは1個でも2Kバイトの容量になるので、シリアルコントローラのFIFOとしては大容量すぎる気が… ま、いっか(汗)
 FIFOの制御はいいとして、ハードウェアフロー制御を実現するには、FIFOのハーフフルに相当する信号は必要だよな… ハーフフルの信号ってどうやって生成すりゃいいんだ?(^^;) リードポインタとライトポインタをすったもんだしてなんとか生成。とりあえずまんま、FIFO容量が半分のところでハーフフルとして動作テスト。ためしに読み出し側を止めて、ターミナルから送信だけを行う。で、ちょうど1024バイトを送信したところでRTSがディセーブルに。
 FIFOがいっぱいに近づいたので、RTSをディセーブルにして相手に送信休止を要求… はいいんだけど、それを解除するタイミングが問題だな。単純に考えれば、FIFOから1バイト取り出して空きが1025バイトになったから、すぐに送信可にしちゃうのもありだけど、ここは一つ、送信不可/許可の切り替えにヒステリシス特性??を持たせたほうがカッコイイかと(笑)
 ってことで、今度はFIFOの残り容量が1/4になったら送信不可、残り容量が3/4になったら送信許可とするフロー制御ロジックを実装。あれ? なんかFIFOのリードポインタがライトポインタより大きい状態だと、予想より1バイト手前でRTSがディセーブルになるな… だとすれば、たぶんこの条件判定文を修正すれば… ほら直った(って、そんな泥縄式な修正でいいのか!?!?(汗))

 おっと、もうこんな時間だ… ってことで、午後3時に渋谷某所でボードの受け渡し。とりあえずこの2枚ともこの修正で問題がなさげなら、他のボードもプルアップ抵抗の交換で行きたいと思います(謎)
 で、会社に戻って先ほどの続き…(^^;)

●5月28日
 結局シリアルコントローラのバグが取れずにそのまま徹夜っす(T_T)
 っというかですね、ハードウェアはこれ以上、手を入れる必要はない感じが… あとは割り込み駆動のソフトウェア側を修正すればすむ気がするんですが… サンプルプログラムの書き方が問題か??
 ん〜 もうこんな時間か…ってことで、へろへろな状態で帰宅。さて、録画しておいた番組でもゆっくり見るか… っと、おもむろにDVD/HDDレコーダの電源をいれると…
 “ディスク状態に異常があり、録画も再生もできません。”(←こんな意味のメッセージ)
…はい? DVDドライブに-RWか-RAMのディスク入れっぱなしで、TOCが読めなくなったかな?? 改めて“HDD”ボタンを押すも…
 “ディスク状態に異常があり、録画も再生もできません。”(←こんな意味のメッセージ)
…なにぃ〜!!!! …きれいさっぱり消えてしまいますた(滝涙)
 とりあえず、HDDの初期化を実行したら、録画できるようにはなりましたが… HDDが物理的にいっちゃったわけではなさそう??

●5月29日
 そうでした。「作らなきゃ作らなきゃ…」っと思いつつ、FPGA内だけで閉じてるので、後で何でもなるや… っと思い後回しになってたIPコアとして、タイマコントローラがあったんでした!! 他のバス/インターフェース系のコントローラは、外とつながる信号線もあるので、基板上の配線が間違ってないかとかをチェックする意味でも、実際に動かす必要がありましたが、タイマコントローラ、とくに単純にクロックをカウントして時間経過を判断するためだけのタイマは、外と信号をやり取りする必要が無いので実質I/O信号が不要なリソースだし(実際にはクロック信号源が必要だけど、同期回路が動いてるならシステムクロックは入力されてるハズ)、後回しにされてきた可愛そうなコントローラなのでした(汗)
 …っということで、某筆者さんの事務所にお邪魔して、「タイマって、どんな仕様がいいですかね??」と仕様を打ち合わせて、ささっと作ってもらいました(速っ!!(^^;))
 で、その動作確認プログラムは、こちらで適当にでっち上げごく普通に記述して(笑)動作確認! まぁ〜何のひねりも無い、コンソールに経過時間表示するだけなんですが。とりあえずは1秒間隔で表示されるようなので、大丈夫そうなんぢゃない??
(あ、コントローラとしては最小1msで割り込み出せます)

 HRP-2がデスクトップサイズになったか… 制御CPUがSH-4というのは個人的にポイントUP!(^^;)

●5月30日
 今日もBLANCA関連で某所で作戦会議。一応弊社としては、BLANCAシステムバスへのIPコア接続に関して、簡単なガイドラインは用意しています… って、そんなんこの世界のどこにドキュメント化されてるんだよ!!(←えぇ、まだ私の頭の中だけなんですが…(笑)) まぁ〜別に絶対それを守って欲しいとか、強制力はぜんぜんないので、独自の仕様で載せていただいてもまったくかまわないんですが…
 まぁ〜ね、この内部システムバスとIPコアの接続の部分は、かなり苦労させられた部分ではあるんで、いろいろ言いたいことはあるんですが… すでにできあがってるコントローラのIPコア評価版を用意する場合は、バス仕様を大きく変えるわけにも行かないんで、最悪、BLANCAシステムバスとそのIPコアの間にブリッジかますしかないかな??
(ブリッジの先にさらにブリッジが…って、あまり美しくないけどねぇ〜)

●5月31日
 今日は午前中にちょっと打ち合わせがあったんですが、午後に急遽いつもの筆者さんが巣鴨に来られるとのメールを受けて、打ち合わせもソコソコに巣鴨に帰社。そしていつもの喫茶店に。すいません、遅くなりまして。そうそう、ESECまであと1ヶ月無いんですよね… プレゼンタイムもあるんですよね? PPTファイルとか、何か先行して提出する必要のある資料とかありますよね? それはいつまでに… で、何を展示します&何をしゃべりますぅ?(をぃをぃ)

 そうだよなぁ〜 なんで今頃になって?新ブランドを付けたんだろ… “VARDIA”ってBRAVIAとごっちゃになって「ブラディア」って読んぢゃうし(^^;) TVのほうも、最近“REGZA”になったけど、あれもブラウン管から液晶に変わるタイミングで切り替るべきだったかと。
 まぁ〜T芝のDVD/HDDレコーダのRDシリーズは、開発コードネームのほうが有名らしいので、“VARDIA”ブランド名は廃れるに一票(笑)


●2006年 4月に戻るのだ

●2006年 6月を読むのだ


(M)のページにもどる

Interfaceのページへワープする!