Linux设备驱动
文章平均质量分 78
caijp1090
这个作者很懒,什么都没留下…
展开
-
linux字符设备注册相关函数
本文介绍linux字符设备注册相关的四个函数:cdev_alloc、cdev_init、cdev_add和cdev_del。这四个函数在文件:fs/char_dev.c中定义,在头文件include/linux/cdev.h中声明。其中cdev_alloc和cdev_init是一对“互斥”函数,以不同的方式完成“相同”的功能:为函数cdev_add做前期准备。cdev_alloc509 s原创 2012-04-16 20:56:50 · 621 阅读 · 0 评论 -
s3c2410_gpio_cfgpin与s3c2410_gpio_setpin函数
在arm的gpio字符设备驱动中主要由s3c2410_gpio_cfgpin与s3c2410_gpio_setpin函数来设置相应的寄存器值,下面我们来看着两个函数所实现的功能:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){ void __iomem *base = S3C24XX_GPIO_BA原创 2012-04-20 15:24:54 · 1118 阅读 · 0 评论 -
linux2.6.32内核信号量的实现
首先看看信号量的相关数据结构:include/linux/semaphore.h>struct semaphore{ spinlock_t lock; #lock应该是这个信号量的自旋锁 unsigned intcount; #count表示的是这个信号量的计数器 struct list_head wait_list;#转载 2012-04-18 20:18:52 · 867 阅读 · 0 评论 -
linux字符设备按键驱动之防抖动
按键驱动程序抖动问题会造成多次中断发生,实则可能是一次按下或释放的操作。本驱动程序就是在按键驱动程序(中断方式)的基础之上,用定时器来去抖动。当一次按键按下的时候,可能产生多个脉冲,我们可以等到最后一个脉冲平稳时再真正地做按下或释放的处理。所以,在中断中我们可以不断修改定时器的值,当最后稳定下来,没有中断产生了,就会调用超时函数,再在超时函数里面判断按键状态,返回值给用户空间等。定时器转载 2012-05-03 00:14:32 · 3884 阅读 · 1 评论 -
copy_to_user,copy_from_user,get_user和put_user函数实现
1、static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n){ if (access_ok(VERIFY_WRITE, to, n)) n = __copy_to_user(to, from, n); return n;}原创 2012-04-19 01:04:02 · 1389 阅读 · 0 评论 -
linux内核宏定义
1. gcc的__attribute__编绎属性要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn表示没有返回值、pure表明函数除返回值外,不会通过其它(如全局变量、指转载 2012-04-18 16:48:31 · 2210 阅读 · 0 评论 -
linux驱动程序调试常用方法
驱动程序开发的一个重大难点就是不易调试。本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是:利用printk 查看OOP消息 利用strace 利用内核内置的hacking选项 利用ioctl方法 利用/proc 文件系统 使用kgdb 一、利用printk这是驱动开发中最朴实无华,同时也是最常用和有效的手段。scull驱动的main.c第338行如下,就是使用pri转载 2012-04-18 00:28:17 · 23118 阅读 · 7 评论 -
Linux常用文件结构体
1、struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或filp。如下所示: str原创 2012-04-16 22:51:46 · 771 阅读 · 0 评论 -
最简单的字符设备驱动程序
首先,先理清一下简单字符设备驱动程序的思路:(1)申请设备号 动态申请:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,const char *name) 静态申请:int register_chrdev_region(dev_t from, unsigned count原创 2012-04-17 19:10:01 · 1336 阅读 · 0 评论 -
总线设备驱动框架程序
总线设备驱动框架程序 装载自:http://blog.csdn.net/sjwangjinbao/article/details/6077236这里总结下简单的总线设备驱动的框架程序。 0、建立文件夹busdevdrv1、总线 在文件夹内建立总线文件bus.c,代码如下。#include #include #include #i转载 2012-05-08 12:22:38 · 653 阅读 · 0 评论