VME/CAMACデバイスドライバ開発専門研修の中間報告		2001年1月19日

					講師:素粒子原子核研究所 安 芳次

受講者は下記の通りです。
名前		所属			研修内容
仲吉一男	素粒子原子核研究所	USB-CAMACデバイスドライバの開発
多田野幹人	物質構造科学研究所	 CompactPCI-I/Oボード用デバイスドライバの開発 
佐藤節夫	物質構造科学研究所	USB-VMEデバイスドライバの開発		 
小田切淳一	加速器研究施設		リアルタイムOS, L4-Linux用VMEデバイスドライバの開発

目的
この専門研修の目的はVME/CAMAC/PCIなど高エネルギー物理学実検等に用いられる バスを利用した
Linux用デバイスドライバの開発です。 Linuxにおけるデバイスドライバの基本構造を理解し、
各自の 目的に沿ったデバイスドライバを開発して頂きます。 

開発手順
開発の手順はおよそ次のようです。 
          設計の段階では外部仕様及び内部仕様を作成します。 
          製作(コーディング)の段階ではプログラムの作成及びコンピュータ等環境整備を行ないます。 
          デバッグの段階ではプログラムのデバッグをユーザレベル及びカーネルレベルで 行ないます。 
          性能評価の段階では計測ツールを作成し、ソフトウエア/ハードウエアの 性能評価を行ないます。 
          レポート作成の段階では、技術レポート、学会発表、論文作成等 可能な限り行ないます。 
これらは順序よく進められるとは限らず、場合によっては性能評価の段階まで進めてきても設計に逆戻りする可能性もあります。

進捗状況
講師:
4人の受講者はそれぞれ開発すべき対象が異なっていますので、一様な指導はできません。
そこで講師による講議と受講者たちによる輪講を併用し、Linuxデバイスドライバの基本的な理解を進めています。
同時に各自の目的に沿った開発環境を協力しながら整えています。講師はWEBページを作成し、
デバイスドライバの作成方法や関連する様々な情報を受講者に共有できるようにしています。
これはまだプライベートに運用されていますが、整備され次第公開します。
受講者からの電子メールやミーティングでの質問や疑問に答えつつ、FAQやデバイスドライバ作成法に反映し、
WEBページに掲載しています。現在のところ、この方法は成功しています。
これは4人の技術者が有能でかつ目標達成に向かって意欲的な方々であるところに依っています。

受講者:
	仲吉一男
テーマの概要
	USBは、電源を入れた状態で接続 ケーブルの抜き差しが可能で取扱が簡単であるなど、
ポータブルデータ収集(DAQ )に適した性質を持っている。Linux では正式サポートとなりUSB が利用可能である。
これまでオンライングループは、 Linux による DAQ システムの整備を行なってきた。
それにより Linux から CAMAC や VME にアクセスしてデータ収集が可能である。
以上の 2 点から Linux と USB による DAQ システム の開発を行ないたいと考えた。
まず NOTE PC 等で気軽に使える DAQ システム をイメージして、USB による CAMAC DAQ システムの構築を行なう。
現段階で は既存のハードウエアを極力利用したいので、SCSI インターフェイス付き CAMAC Crate Controller と 
USB-SCSI 変換ケーブルを用いて USB-SCSI 経由 で CAMAC へアクセスすることを試みる。
USB を用いた大規模な DAQ システム の構築が可能かどうかの調査を今回開発するシステムを使って行う。 
設計
	すでにCAMACシングルアクションの動作を行なうドライバを作成し、 動作を確認した。
またCAMACブロック転送の動作も成功した。 ユーザに見せるインターフェースの作成(外部仕様書)は完了した。
残る 詳細設計書(内部仕様書)の作成に入っている。
コーディング
	大方のコーディングは終了したが、まだ最終のものではない。 
デバッグ
	大方デバッグは終了したが、最終コードのデバッグは残っている。 

	多田野幹人
テーマの概要
	コンパクトPCIは産業界ではVMEバスと比較した場合主流となっている。
たくさんの製品が出回っていることで量産効果が期待できたり、デスクトップPCからのソフトウエアの流用ができるので、メリットが大きい。
そこでコンパクトPCIを採用し、標準のVMEバスよりバススピードの早いPCIバスを産業用に 拡張したコンパクトPCIシステムで
Linuxから既製品の各種 インタフェースボードを操作出来ることを目的にする。
手始めに、 A/DボードがLinuxから使用できるようにデバイスドライバ の開発を行い、
可能であれば順次DI/Oやその他のボードのデバ イスドライバの開発を行う。 
設計
	コンパクトPCIシステムはすでにある。 Linux(LASER5-6.2, kernel-2.4.0-test12)のインストールは終了した。
現在はPCIデバイスドライバプログラミング法を学んでいる最中である。

	佐藤節夫
テーマの概要
	Macintosh上で自ら作成したUSB-SCSI及びSCSI-VMEインターフェースを使ったデータ収集システムを開発し、現在運用している。
このデータ収集システムは、Linux上ではまだ動作していない。
そこで、LinuxからUSBを使えるようにし、Linux上でもこのデータ収集システムが動作する様にしたい。
そのためにUSB-VMEデバイスドライバを作成し、最終的 にはデータ収集システムで採用しているLabVIEWをLinuxの上で使用して、
VMEからデータ収集ができるようにする。 
設計
	USB付のラップトップPCにLinux(LASER5-6.4, kernel-2.4.0-test5) をインストールした。 
USB-VMEをLinux-LABViewでサポートする場合、 Program I/O(PIO)のみをサポートする。
Direct Memroy Access(DMA)や割り込みは必要ない。SCSI-VMEボードを最近改良した。
転送スピードが今まで400KB/s程度だったが、改良後は MacG4で4MB/s程度まで達した。
この辺でハードの限界に近付いている。現在、外部仕様書の作成は終って、内部仕様書の作成中である。 
コーディング
	ほぼコーディングは終った。 
デバッグ
	ほぼデバッグは終った。 

	小田切淳一
テーマの概要
	KEKB 加速器の制御システムは EPICSをベースとして構築されている。
EPICS は フロント・エンドの VME 計算機用の OS としてVxWorks を必要としてきたが、 
次期バージョンからはVxWorks を含む、その他多くの OS 上でも動作するように拡張される。
ここで VxWorks を置き換えるための条件を満たし得る OS として、L4-Linux を候補として選んだ。
この システムを実用に供し得るものにするためには、CAMAC、GPIB 等の数多くの デバイス・ドライバが必要となるので、
これまでに VxWorks をベースにEPICS用 に開発されてきたデバイス・ドライバがそのまま利用できることが肝要である。 
このために、VME のアドレス空間を L4-Linux ユーザ・プロセスのアドレス空間内にマップし
ユーザ・プロセスから直接VME バス上のモジュールにアクセスする方式を採用し、実装する。
さらに、このシステム上で割込み機能を実装し、割込みに対する 応答性を測定し、
実際にマイクロ秒のオーダーのリアルタイム性が保証されて いることを検証することまでを目標とする。 
設計
	Linuxのmmapシステムコールを 使ってマップ方式でVMEをアクセスを検討している。
Hannapel氏が標準Linux用に作成したVMEデバイスドライバ(Universe ドライバ)を基にしてリアルタイムL4-Linux用に移植する。
割り込み機能の移植については、Universe の割込みハンドラから EPICS ドライバの割込みハンドラに向けて L4 のメッセージを送信する、
という形でイベントを通知する方法を考えている。
この設計のポイントは、イベントの発生から EPICS ドライバの処理開始までの間に Linux のスケジューラが介在しないことである。
これにより次のようなメリットを享受できる。
・Universe ドライバのコードに加える修正が最小化される。
・割込みコントローラ、及び Universe チップの制御が Linux 側に一元化されることでシステム全体の見 通しが良くなる(保守性、拡張性が向上する)。
なお、開発に利用するハードウエアは近く納入に予定なので納入され次第、ドライバの実装に着手する。外部仕様の作成はほぼ終了した。