linux驅動入門之AD轉換驅動

2021-06-17 23:34:22 字數 1815 閱讀 3216

需要用ad轉換,網上找來找去也沒找到合適的,自己寫了個,查詢方式的,後續更新中斷方式的。

1.tq2440_adc_sk.c

#include #include #include #include #include #include //包含class_create, device_create, ......這些程式 

#include #include #include 版本核心為此位置 

//之前版本的核心位置可能為

//#include //#include #include #include #include //clk

//加入兩個結構體,用來供核心自動建立主裝置號 

//主要就是在init和exit兩個函式中加入了這兩個結構體

static struct class *adcdrv_class;

static struct class_device*adcdrv_class_dev;

volatile unsigned long *adccon;

volatile unsigned long *adctsc;

volatile unsigned long *adcdat0;

volatile unsigned int adc_val;

static int adc_drv_open(struct inode *inode, struct file *file)

ssize_t adc_drv_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)

static struct file_operations adc_drv_fops = ;

int major;

static int adc_drv_init(void)

static void adc_drv_exit(void)

module_init(adc_drv_init);

module_exit(adc_drv_exit);

module_license("gpl");

2.makefile

kern_dir = /home/stevenking/workspace/code/linux-2.6.39

all:

make -c $(kern_dir) m=`pwd` modules

clean:

make -c $(kern_dir) m=`pwd` modules clean

rm -rf modules.order

obj-m += adc_drv.o

3.測試程式

#include #include #include #include /* seconddrvtest 

*/int main(int argc, char **argv)

while (1)

return 0;

}

4.補充:新增到核心驅動

/driver/input/misc/

kconfig:

config input_tq2440_adc_sk

tristate "a/d changer by steven king"

depends on arch_s3c2410

help

a/d changer by steven king 8/18/2013.

makefile:

obj-$(config_input_tq2440_adc_sk)+= tq2440_adc_sk.o

linux驅動之入門

首先通過第乙個程式簡單了解下驅動的框架 首先 開發環境 fedora 17 核心版本 3.9.10 檢視核心版本命令 uname r 更新核心命令 yum update 需重啟之後檢視核心才行 另外需要安裝編譯好的核心的標頭檔案和庫 yum install kernel devel arm開發板型號...

Linux驅動基礎 platform裝置驅動

以高通平台為例,會在kernel arch arm mach msm下的相應的board c檔案裡邊用 dt machine start 這個巨集定義一系列的晶元。以高通8916為例 在kernel arch arm mach msm board 8916.c檔案裡定義了 當然下面使用哪個要看一下。...

linux驅動入門之觸控螢幕驅動

廢話不多說,直接上檔案 1.tq2440 ts sk.c include include include include include include include include include include include include include include include i...