REX-PCI60D/PCI64D/PCI70D/PE60D/PE64D/PE70D
 - PCI/PCI-E to RS-232C/422A/485 and Digital I/O Port for Linux Rev 1.1
=============================================================================
  Linux向け REX-PCI60D/PCI64D/PCI70D/PE60D/PE64D/PE70D
   - PCI/PCI-E to RS-232C/422A/485 シリアルドライバ
     Digital I/O ドライバについて

                                                            19 / Nov. / 2012

                                        Copyright(C) 2012 RATOC Systems,Inc
=============================================================================


□目次

   1. はじめに
   2. ディレクトリ構成について
   3. ドライバについて
   4. ライブラリについて
   5. 付属サンプルプログラムについて
   6. 制限事項
   7. 変更履歴



1. はじめに
-----------------------------------------------------------------------------
・ファイルについて

	本ファイルは、REX-PCI60D/PCI64D/PCI70D/PE60D/PE64D/PE70D(以下 REX-Px6x70Dと表記)用の
	シリアルドライバとDigital I/Oドライバの導入について記載しています。

・開発環境について

	本プログラムは以下の環境で動作確認しています。

	Rev 1.0
	  OS : Fedora Core 16 / kernel 3.2
	  GCC: gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1)

	  OS : ubuntu 11.10 / kernel 3.0
	  GCC: gcc (GCC) 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)

	Rev 1.1
	  OS : Fedora Core 17 / kernel 3.6.6
	  GCC: gcc version 4.7.2 20120921 (Red Hat 4.7.2-2) (GCC)

	  OS : ubuntu 12.10 / kernel 3.5.0
	  GCC: gcc 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1)

	これ以外の環境では
	driverコンパイル時、driverインストール時、libraryインストール時
	にエラーになる場合がありますので
	Makefileおよびソースコードを適宜、変更再設定してください。

・REX-Px6x70dのデバイス情報確認について

	以下の手順でREX-Px6x70dが認識されているか確認してください。

	【 Step1 】REX-Px6x70dを接続し起動します

	【 Step2 】lspciコマンドでデバイス情報を確認します
	$ lspci -v
	...

	例) REX-PE60Dの場合
		02:00.0 Serial controller: Exar Corp. Device 0352 (rev 03) (prog-if 02 [16550])
		Subsystem: Ratoc System Inc Device 6005
		Flags: fast devsel, IRQ 16
		Memory at faffc000 (32-bit, non-prefetchable) [size=16K]
		Capabilities: 

	2行目のデバイスIDは製品ごとに下記のようになっています。
		REX-PE60D       6005
		REX-PE70D       6006
		REX-PCI60D      6007
		REX-PCI70D      6008
		REX-PE64D       600B
		REX-PCI64D      600C


2. ディレクトリ構成について
-----------------------------------------------------------------------------

./rexpx6x70d_dio
├── BSD-LICENSE.TXT                             BSDライセンス
├── GPL-LICENSE.TXT                             GPLライセンス
├── Readme.txt                                  本ファイル
├── REX-Px6x70D_Linux_DIO_Library(Rev.100).pdf  Library仕様書
├── driver
│   ├── original
│   │   ├── xr17c15x-linx2.6.37-pak.zip       EXARシリアルドライバオリジナルファイル
│   │   └── xr17v35x-lnx2.6.32-pak.zip        EXARシリアルドライバオリジナルファイル
│   ├── diff
│   │   ├── README                            コード改変内容メモ
│   │   ├── 8250_pci.c.patch                  カーネルソース変更パッチファイル
│   │   ├── xr17c15x.c.patch                  xr17c15x.c変更パッチファイル
│   │   └── xr17v35x.c.patch                  xr17v35x.c変更パッチファイル
│   ├── pci6x70d_drv
│   │   ├── 90-rexdio_pci.rules               xr17c15xpci: udev rule file
│   │   ├── Makefile                          xr17c15xpci: Makefile
│   │   ├── readme                            xr17c15xpci: serial driver readme
│   │   └── xr17c15x.c                        xr17c15xpci: serial driver source code
│   ├── pe6x70d_drv
│   │   ├── 90-rexdio_pe.rules                xr17v35xpe: udev rule file
│   │   ├── Makefile                          xr17v35xpe: Makefile
│   │   ├── readme                            xr17v35xpe: serial driver readme
│   │   ├── release_notes                     xr17v35xpe: serial driver release notes
│   │   └── xr17v35x.c                        xr17v35xpe: serial driver source code
│   ├── 90-rexdio.rules                        udev rule file
│   ├── Makefile                               Makefile
│   ├── rexpx6x70d_drv.c                       dio driver soruce code
│   ├── rexpx6x70d_drv.h                       dio driver header file
│   |                                            ioctl定義ヘッダ
│   └── rexpx6x70d_drv_ext.h                   dio driver header file
├── lib
│   ├── Makefile                               sample library Makefile
│   ├── def_xr17.h                             xr17レジスタ定義ヘッダ
│   ├── rexpx6x70d_dio.c                       sample library source code
│   └── rexpx6x70d_dio.h                       sample library header file
│                                                 ライブラリ公開APIヘッダ
└── sample
     ├── Makefile                               sample application Makefile
     └── dioapli.c                              sample application source code


3. ドライバについて
-----------------------------------------------------------------------------
・ドライバ構成について

	REX-PE60/70/64DとREX-PCI60/70/64Dで分かれています。
	同時に使用することも可能です。
	シリアルドライバはEXARが公開しているドライバを使用しており
	弊社DIO制御ドライバ用に改変しています。
	改変内容については別途./driver/diff/READMEを参照ください。

・デバイスファイルについて

	シリアル制御用のデバイスファイルはボードを検出した順に下記のように割り振られます。

	REX-PE系
	  /dev/ttyXRPE0
	  /dev/ttyXRPE1
	   :

	REX-PCI系
	  /dev/ttyXRPCI0
	  /dev/ttyXRPCI1
	   :

	DIO制御用のデバイスファイルはボードに搭載されているDIP-SWにより設定したIDに対応して割り振られます。

	REX-PE系
	  /dev/rex_dioPE0	- ID 0
	  /dev/rex_dioPE1	- ID 1
	  /dev/rex_dioPE2	- ID 2
	  /dev/rex_dioPE3	- ID 3

	REX-PCI系
	  /dev/rex_dioPCI0	- ID 0
	  /dev/rex_dioPCI1	- ID 1
	  /dev/rex_dioPCI2	- ID 2
	  /dev/rex_dioPCI3	- ID 3

・ドライバインストール準備

	REX-PCI60/70/64D用のシリアルドライバはLinuxカーネルにビルドインされているため
	本ドライバを使用する場合は無効化してカーネルの再構築が必要です。
	ソースコード変更内容については別途./driver/diff/READMEを参照ください。

・ドライバインストールについて

	【 Step1 】driver/pe6x70d_drv または driver/pci6x70d_drv ディレクトリへ移動します
	$ cd rexpx6x70d_dio/driver/pe6x70d_drv      (REX-PE系)
	$ cd rexpx6x70d_dio/driver/pci6x70d_drv     (REX-PCI系)

	【 Step2 】makeを実行します
	$ make clean
	$ make

	【 Step3 】システムへインストールします(管理者権限が必要)
	$ sudo make install

	【 Step4 】ドライバをロードする(管理者権限が必要)
	$ sudo modprobe xr17v35xpe          (REX-PE系)
	$ sudo modprobe xr17c15xpci         (REX-PCI系)

	【 Step5 】lsmodコマンドでドライバがロードされていることを確認します
	$ /sbin/lsmod
	Module                  Size  Used by
	xr17c15xpci            75836  0
	xr17v35xpe            104525  0
	tcp_lp                 12583  0
	...

	【 備考 】
	OS起動時に自動で組み込む場合は下記を実施することで可能となります。
	## Fedora 16の場合
		/etc/modules-load.d/module_name.conf を作成する
		module_name.conf にmodule_nameを記載する。
		module_nameには、ロードしたいドライバ(xr17v35xpe または xr17c15xpci)を使用します。

	## ubuntu 11.10の場合
		/etc/modules にロードしたいドライバ(xr17v35xpe または xr17c15xpci)を記入する。

・ドライバアンインストールについて

	【 Step1 】driver/pe6x70d_drv または driver/pci6x70d_drv ディレクトリへ移動します
	$ cd rexpx6x70d_dio/driver/pe6x70d_drv      (REX-PE系)
	$ cd rexpx6x70d_dio/driver/pci6x70d_drv     (REX-PCI系)

	【 Step2 】ドライバをロードしている場合はアンロードする(管理者権限が必要)
	$ sudo rmmod xr17v35xpe         (REX-PE系)
	$ sudo rmmod xr17c15xpci        (REX-PCI系)

	【 Step3 】lsmodコマンドでドライバがアンロードされていることを確認します
	$ /sbin/lsmod
	Module                  Size  Used by
	tcp_lp                 12583  0
	...

	【 Step4 】システムからアンインストールします(管理者権限が必要)
	$ sudo make uninstall


4. ライブラリについて
-----------------------------------------------------------------------------

・ライブラリインストールについて

	【 Step1 】libraryディレクトリへ移動します
	$ cd rexpx6x70d_dio/lib

	【 Step2 】makeを実行します
	$ make clean
	$ make

	【 Step3 】システムへインストールします(管理者権限が必要)
	$ sudo make install

・ライブラリアンインストールについて

	【 Step1 】libraryディレクトリへ移動します
	$ cd rexpx6x70d_dio/lib

	【 Step2 】システムからアンインストールします(管理者権限が必要)
	$ sudo make uninstall


5. 付属サンプルプログラムについて
-----------------------------------------------------------------------------

・サンプルプログラムについて

	サンプルプログラムはDIOポートのREAD、WRITE、割込み検出を確認可能なGUIアプリケーションです。

・サンプルプログラムビルド環境準備

	サンプルプログラムはGTK+2.0を使用しています。
	ご使用する環境に入っていない場合は別途導入が必要となります。
	導入には管理者権限が必要となります。

	## Fedora 16の場合
	$ sudo yum install gtk2-devel

	## ubuntu 11.10の場合
	$ sudo apt-get install libgtk2.0-dev gtk2-engines-pixbuf

・サンプルプログラムビルドについて

	【 Step1 】sample(サンプルプログラムディレクトリ)へ移動します
	$ cd rexpx6x70d_dio/sample

	【 Step2 】makeを実行します
	$ make clean
	$ make

	【 Step3 】サンプルプログラムの実行
	$ ./dioapli


6. 制限事項
-----------------------------------------------------------------------------

・ドライバ使用時の制限

	[Rev 1.1] 2012/11/19
	OSインストール時に同時にインストールされている、
	ModemManagerのバージョン 0.6.0.0と競合するため、ドライバ使用時はModemManagerを停止するか
	前のバージョン(ModemManager 0.5.x.x)を使用するようにしてください。


7. 変更履歴
-----------------------------------------------------------------------------
  Rev 1.0  2012/02/21	Linux向け初版作成
			Driver Ver1.0
			Library Ver1.0.0

  Rev 1.1  2012/11/19	kernel 3.5 / 3.6 対応
			Driver Ver1.1
			Library Ver1.0.0

-----------------------------------------------------------------------------

以上