linux下的fpga驱动

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#ifndef _FPGA_H_

#define _FPGA_H_

#define INTMSK (0x4A000008)

#define EINTMASK (0x560000A4)

#define S3C2410_ENABLE_EINT8_23 (~(1<<5))

#define S3C2410_ENABLE_EINT18 (~(1<<18))

#undef PDEBUG /* undef it, just in case */

#define DEBUG //调试时添加此行程序,实际产品中需要注释掉

#ifdef DEBUG

# define PDEBUG(fmt, args...) printk( KERN_WARNING "fpga: " fmt, ## args)

#else

# define PDEBUG(fmt, args...) /* not debugging: nothing */

#endif

#define DEVICE_NAME "FPGA"

#ifndef FPGA_NR_DEVS

#define FPGA_NR_DEVS 1 /*设备数*/

#endif

#define FPGAMEM_SIZE 1024/*FPGA每次产生中断可以读取到缓存的数据大小*/

#define FPGACMD_SIZE 3 /*FPGA每次产生中断可以读取到缓存的数据大小*/

#define FPGA_ADDR_START (0x08000000) //nGCS1地址

#define FPGA_ADDR_SIZE 0x30 //申请IO内存的大小

#define FPGA_ADDR_DATA 0x10 //FPGA数据寄存器偏移地址

#define FPGA_ADDR_CMD 0x14 //FPGA命令寄存器偏移地址

/* 定义幻数,定义一个字符,8位,用于检测是否是这类设备,ioctl-number.txt中给出了已经使用的幻数,定义的时候注意避免冲突*/

#define FPGA_IOC 'k'

/* 定义命令,这里的命令都是unsigned int类型*/

#define FPGA_IOC_ALLON _IO(FPGA_IOC, 0) //

#define FPGA_IOC_ALLDOWN _IO(FPGA_IOC, 1) //

#define FPGA_IOC_SET _IOW(FPGA_IOC, 2, int) //

#define FPGA_IOC_CLEAR _IOW(FPGA_IOC, 3, int)//

#define FPGA_IOC_MAXNR 4 //定义命令的最大序列号

/* Per-device (per-bank) structure */

struct fpga_dev {

struct cdev cdev; /* The cdev structure */

unsigned int readlength; /* 每次中断从FPGA读取数据的实际字节数*/ char bus_data[FPGAMEM_SIZE]; /* 缓存从FPGA读取的数据*/

char cmd_data[FPGACMD_SIZE]; /* 缓存发送给FPGA的命令*/

// struct fasync_struct *async_queue;/* 异步结构体指针,用于读*/

/* ... */ /* Mutexes, spinlocks, wait

queues, .. */

wait_queue_head_t r_wait; /* 阻塞读用的等待队列头*/

} *fpga_devp;

#endif /* _FPGA_H_ */

#include

//#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include

//#include

#include "fpga.h"

//#define FPGADATA (*(volatile unsigned long *)(fpga_addr + 0x10)) //FPGA data

//#define FPGACON (*(volatile unsigned long *)(fpga_addr + 0x08)) //FPGA control //struct cdev cdev;

相关文档
最新文档