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 ----------------------------------------------------------------------------- 以上