ペリフェラルのエミュレータも必要

どうでもええんですが。

QEMUとかbochsとかありますよね。わたしゃVPC2004を使うのですが,VMWareの方がメジャのようですね。

エミュレータとにかくとても便利です。

しかしですねぇ,この手のエミュレータというのは,アプリケーションソフトウェアの実行環境として使われることが多いためか,周辺デバイスのサポートがしょぼしょぼです。

MAME並に豊富なチップをエミュしろとは言いませんが,ある程度周辺デバイスを切り替えるようなことができないと,結局ハード周りのデバッグ環境としては使い物にならないわけで。

組み込み系の一部のツールで見受けられるように,テンプレート的なスタブあるいはモックあるいはダミーが使えるようになっていると非常に便利だと思うのは私だけでしょうか。

例:
・ISAならリソース指定するだけで,ダミーのレジスタがつながっているように振舞う。
・PCIならPCiコンフィグレーションのところまでの雛形。
など。

たったこれだけでも,相当いろんな実験ができるし,ハードがわからん若者のためにもなるんですがねぇ。いきなり実機のハードを叩くにはPCコンパチブルは複雑すぎます。かといって,マイコン実機では皆で楽しめません。

bocsh辺りでソースいじくりゃいいんでしょうが,そんなスキルがあればねぇ・・・

FPGA/CPLD界隈だと,オープンIPなどあるんですけどね,そんな厳密な中身は却って困るんですな。アァ協調検証の夢は儚く・・・

ソフト側のエミュでは,ハードのエミュ精度はビヘイビアレベルで充分なのです。なのでビヘイビア記述(C/C++ベースで書かれていたりして)をパックンチョしてプロセッサのエミュと結合できりゃいいわけなんですよ。

ソフト側で気にするタイミングは,クロックの数十〜数百倍遅くても大丈夫。そこまで気にするなら,ビヘイビアレベルではまずかろうということになって,ブートプロセスのシミュレーションに半時間かかるとかわけのわからんことになってしまいます。

それじゃだめなんです。エミュとかシミュというのはいろんなレベルで動かないとつぶしが利きません。ロンブンで賑やかなキョーチョーケンショーは,バベルの塔なんです。現場では,そこそこ実ハードの振る舞いを真似てくれるスタブこそがソフトウェアの実装で必要となるのです。

特殊な道具が無くてもトレースできるハード。ただそれがあるだけで,ハード周りのソフトの実装はかなりスムースに進むのですよ。

コンカレントエンジニアリングに関して語られる協調検証ですが,なにもかもを1枚のまな板の上に載せてしまったら,ソフト屋とハード屋が別々に作業できなくなります。どこがコンカレントなんです?

正しくは,車屋さんがやっているように,仕事を進めなきゃコンカレントとは言えないでしょう。

ECUを作る人は,エンジンシミュレータプラントとECUをつなぐ。あるいはエンジンソフトウェアシミュレータとECUをつなぐ。開発中のエンジンはまだ陰も形もありませんからね。

エンジン開発中の人は,ラックマウントに入った万能ECUモックを使ってエンジンを動かす。そうしなきゃデータをロギングできませんからね。ECUだって,まだ未完成です。

たとえばそういう風に2方面で別々に作業を進めることができて初めてコンカレントだと思うのですが。それを可能にするにはインターフェースがある程度固まってなければなりませんがね。

完璧なものをタダひとつ,というのはいかにも学者センセイが考えることです。現場で使うには苦労が多いことでしょう。DVDプレイヤを作る人は,テレビは巷のものを使えます。テレビを作る人は巷のDVDプレイヤをつないでみるでしょう。実際にはそれぞれ規格化されたモニタや規格に合致した信号を吐き出す装置を用いるわけです。それはインターフェースが決まっているからですね。

組み込みのハード〜ファーム〜ソフトのあるべき環境は,いろんなエミュ/シミュのレベルごとのモデルの流通市場創設とともにあってしかるべきなんです。しかしながら,そんなことを言っているのはごみためまんくらいですので,まぁどうにもなりませんがね。

さまざまのチップは無数に作られ,インターフェースはばらばらです。そのばらばらを埋めるのが作業の多くの部分を占めるのであれば,それをなんとかしようと考えるのが正しい道だと思います。PCIバスのようにね。問題はファーム屋とかドライバ屋という民族が,物言わぬ種族であることかもしれません。

りんくる:

株式会社MCOR
事業案内の「CAT」参照

つづき:ペリフェラルもエミュレートするGiano