arm編譯器版本:3.32
核心版本:2.6.28.7
arm號:s3c2440
驅動原始碼:
#include
#include
#include
#include
#include
#include
#include
#include
#define device_name "leds"
#define led_major 237
dev_t devnm=mkdev(led_major,0);
static struct cdev *leds_cdev;
static struct class *my_class;
module_license("dual bsd/gpl");
static int leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)
}static struct file_operations leds_fops=;
static int leds_cdev_init(struct cdev *dev,int index)
my_class=class_create(this_module,device_name);
if(is_err(my_class))
device_create(my_class,null,devnm,null,"leds");
return 0;
}static int leds_init(void)
ret=register_chrdev(led_major,device_name,&leds_fops);
if(ret<0)
ret=leds_cdev_init(leds_cdev,0);
s3c2410_gpio_cfgpin(s3c2410_gpf5,s3c2410_gpf5_outp);
s3c2410_gpio_setpin(s3c2410_gpf5,1);
printk(kern_alert "hello ,world\n");
return 0;
}static void leds_exit(void)
module_init(leds_init);
module_exit(leds_exit);
編譯makefile :
obj-m:=leds.o
kdir:=/home/share/linux
pwd:=$(shell pwd)
all:
$(make) -c $(kdir) subdirs=$(pwd) modules
@rm -rf *.mod.*
@rm -rf .*.cmd
@rm -rf *.o
@rm -rf module.*
clean:
@rm -rf *.ko
測試程式:
#include
#include
#include
int main(void)
printf("start...................\n");
while(1)
close(fp);
return 0;
}
我的第乙個驅動程式
說明 開發環境 ubuntu14.04 硬體 easyarm i.mx283.a linux核心屬於單核心,簡單來說,就是把很多東西都整合進核心,除了最基本的程序 執行緒管理 記憶體管理外,檔案系統,驅動,網路協議等等都在核心裡面,形成單一的核心映像,其優點在於執行效率高,核心中各模組之間的互動通過...
第乙個驅動程式
原始出處 驅動程式的開發,向來是令人感到有所畏懼的,可能很多人像我一樣,看了很久卻還是一頭霧水,不得其門而入。我們今天就通過乙個簡單的程式來使讀者學會初步的驅動程式開發。在開發windows驅動程式之前,我們需要首先安裝ddk,win98及其以前的vxd我們就不要再考慮了 windows 2000 ...
第乙個驅動程式
從今天開始就要進入核心驅動程式部分了,在這一節裡就通過第乙個驅動程式來介紹一下核心驅動模組的編寫框架。static intfirst drv open struct inode inode,struct file file static ssize t first drv write struct ...