微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于S3C2410的Linux驱动程序开发

基于S3C2410的Linux驱动程序开发

时间:12-01 来源:互联网 点击:

if ((RCC->

RCC_Clocks->SYSCLK_Frequency= (HSE_Value >>

为桥梁联系起来的。file_operations数据结构的每一个成员的名字都对应着一个系统调用。用户进程利用系统调用在对设备文件进行诸如read、write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这是linux的设备驱动程序工作的基本原理。因此,编写设备驱动程序的主要工作就是编写file_operations数据结构的各个子函数。下面的结构体就是一个典型的file_operations结构:

struct file_operations {

int (*seek) (struct inode * ,struct file *, off_t ,int);

int (*read) (struct inode * ,struct file *, char ,int); i

nt (*write) (struct inode * ,struct file *, off_t ,int);

int (*readdir) (struct inode * ,struct file *, struct dirent * ,int);

int (*select) (struct inode * ,struct file *, int ,select_table *);

int (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long int (*mmap) (struct inode * ,struct file *, struct vm_area_struct *); i

nt (*open) (struct inode * ,struct file *);

int (*release) (struct inode * ,struct file *);

int (*fsync) (struct inode * ,struct file *);

int (*fasync) (struct inode * ,struct file *,int);

int (*check_media_change) (struct inode * ,struct file *);

int (*revalidate) (dev_t dev);

} file_operations

结构体中的成员都是函数指针,每个应用程序对设备的操作,都会根据major、minor设备号,转换成对file_operations结构的访问。开发者在编写设备驱动程序的时候,根据自己的需要完成file_operations结构中的函数实现,对不需要用到的函数接口可以在file_operations结构中初始化为NULL。file_operations变量会在程度程序初始化时,注册到系统内核。当应用程序对设备进行操作时,会调用驱动程序注册的file_operations结构中的函数指针。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top