基于S3C2410的Linux驱动程序开发
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结构中的函数指针。
- 基于s3c2410的CramFS根文件系统的移植(07-13)
- AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现(11-06)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于WinCE的I2C驱动程序设计(04-24)
- WinCE下光电编码器的驱动程序设计(04-12)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)