Advanced Robot Control System  5.1-REV.51SF170515
pcie_ac01.c ファイル

PCIe-AC01用デバイスドライバ [詳解]

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/kthread.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/proc_fs.h>
#include <linux/cdev.h>
#include <asm/uaccess.h>
pcie_ac01.c の依存先関係図:

マクロ定義

#define PCIE_AC01_DEV_NAME   "pcie_ac01"
 デバイス名 [詳解]
 
#define PCIE_AC01_VERSION   "REV.1020170130\0"
 バージョン情報 [詳解]
 
#define PCIE_AC01_MEMSIZE   4096
 PCIe-AC01のメモリサイズ [詳解]
 
#define PCIE_AC01_MAX_AXIS   16
 最大モータ軸数 [詳解]
 
#define PCIE_AC01_TIMEOUT   200
 [μs程度] ビジーウェイト用タイムアウト [詳解]
 
#define MAX_BUFLEN   64
 

列挙型

enum  ReadDataList {
  Read_Status = 0x0001, Read_DaxisCurrent = 0x0002, Read_QaxisCurrent = 0x0004, Read_EncoderData = 0x0008,
  Read_EchoBack = 0x0010
}
 readデータの定義 [詳解]
 
enum  WriteDataList { Write_Command = 0x0001, Write_DaxisCurrentRef = 0x0002, Write_QaxisCurrentRef = 0x0004, Write_EchoForward = 0x0010 }
 writeデータの定義 [詳解]
 
enum  TransVarAddr { AxisCommand = 0x0, DaxisCurrentRef = 0x1, QaxisCurrentRef = 0x2, EchoForward = 0xF }
 送信変数アドレスの定義 [詳解]
 
enum  RecvVarAddr {
  AxisStatus = 0x0, DaxisCurrent = 0x1, QaxisCurrent = 0x2, EncorderData = 0x3,
  EchoBack = 0xF
}
 受信変数アドレスの定義 [詳解]
 
enum  AxisCommandList {
  Req_Status = 0x10000000, Req_DaxisCurrent = 0x10000001, Req_QaxisCurrent = 0x10000002, Req_EncoderData = 0x10000003,
  Req_EchoBack = 0x1000000F
}
 コマンドリストの定義 [詳解]
 

関数

 MODULE_DESCRIPTION ("ARCS PCIe-AC01 Device Driver")
 
 MODULE_AUTHOR ("Yuki YOKOKURA, Siderwarehouse Industries")
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 module_param (MemAddress, ulong, S_IRUGO)
 
 module_init (PCIeAC01_module_init)
 
 module_exit (PCIeAC01_module_creanup)
 

変数

unsigned char cdev_buf [MAX_BUFLEN]
 

詳解

PCIe-AC01用デバイスドライバ

日付
2017/01/30
著者
Yuki YOKOKURA

マクロ定義詳解

§ MAX_BUFLEN

#define MAX_BUFLEN   64

§ PCIE_AC01_DEV_NAME

#define PCIE_AC01_DEV_NAME   "pcie_ac01"

デバイス名

§ PCIE_AC01_MAX_AXIS

#define PCIE_AC01_MAX_AXIS   16

最大モータ軸数

§ PCIE_AC01_MEMSIZE

#define PCIE_AC01_MEMSIZE   4096

PCIe-AC01のメモリサイズ

§ PCIE_AC01_TIMEOUT

#define PCIE_AC01_TIMEOUT   200

[μs程度] ビジーウェイト用タイムアウト

§ PCIE_AC01_VERSION

#define PCIE_AC01_VERSION   "REV.1020170130\0"

バージョン情報

列挙型詳解

§ AxisCommandList

コマンドリストの定義

列挙値
Req_Status 

ステータス要求

Req_DaxisCurrent 

d軸電流要求

Req_QaxisCurrent 

q軸電流要求

Req_EncoderData 

エンコーダデータ要求

Req_EchoBack 

エコーバック要求

§ ReadDataList

readデータの定義

列挙値
Read_Status 

ステータスレジスタ

Read_DaxisCurrent 

d軸電流

Read_QaxisCurrent 

q軸電流

Read_EncoderData 

エンコーダデータ

Read_EchoBack 

エコーバック

§ RecvVarAddr

受信変数アドレスの定義

列挙値
AxisStatus 

ステータス

DaxisCurrent 

d軸電流

QaxisCurrent 

q軸電流

EncorderData 

エンコーダデータ

EchoBack 

エコーバック

§ TransVarAddr

送信変数アドレスの定義

列挙値
AxisCommand 

コマンド

DaxisCurrentRef 

d軸電流指令

QaxisCurrentRef 

q軸電流指令

EchoForward 

エコーフォワード

§ WriteDataList

writeデータの定義

列挙値
Write_Command 

コマンドレジスタ

Write_DaxisCurrentRef 

d軸電流指令

Write_QaxisCurrentRef 

q軸電流指令

Write_EchoForward 

エコーフォワード

関数詳解

§ MODULE_AUTHOR()

MODULE_AUTHOR ( "Yuki  YOKOKURA,
Siderwarehouse Industries"   
)

§ MODULE_DESCRIPTION()

MODULE_DESCRIPTION ( "ARCS PCIe-AC01 Device Driver"  )

§ module_exit()

module_exit ( PCIeAC01_module_creanup  )

§ module_init()

module_init ( PCIeAC01_module_init  )

§ MODULE_LICENSE()

MODULE_LICENSE ( "Dual BSD/GPL"  )

§ module_param()

module_param ( MemAddress  ,
ulong  ,
S_IRUGO   
)

変数詳解

§ cdev_buf

unsigned char cdev_buf[MAX_BUFLEN]