十、编写LED混杂设备驱动】的更多相关文章

led.c修改为: #include <linux/init.h> #include <linux/module.h> #include <linux/miscdevice.h> #include <linux/fs.h> #include <linux/io.h> #define GPMCON 0x7F008820 #define GPMDAT 0x7F008824 static int * __gp_gpmdat; static int le…
1. Linux混杂设备驱动模型 ① 在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice).所有混杂设备形成一个链表,对设备访问时内核根据次设备号查找相应的混杂设备. ② Linux中使用struct miscdevice来描述混杂设备 struct miscdevice { int minor; const char *name; const struct file_operations *fops; struc…
linux2.6.30.4中,系统已经自带有了ADC通用驱动文件---arch/arm/plat-s3c24xx/adc.c,它是以平台驱动设备模型的架构来编写的,里面是一些比较通用稳定的代码,但是linux2.6.30.4版本的ADC通用驱动文件并不完善,居然没有读函数.后来去看了linux3.8版本的ADC通用文件----arch/arm/plat-samsung/adc.c才是比较完善的. 但是本节并不是分析这个文件,而是以另外一种架构来编写ADC驱动,因为ADC驱动实在是比较简单,就没有…
Linux混杂设备是字符设备的一类,主要是混杂设备拥有相同的主设备号(10),但是次设备号是不同的.所有的混杂设备行程一个链表,对设备访问时内核更据次设备号查找到相应的混杂设备. 混杂设备用struct miscdevice来描述一个混杂设备. struct miscdevice  {     int minor; /*次设备号*/     const char *name; /*设备名*/     const struct file_operations *fops; /*文件操作 其他由内核…
1.查看用户手册 led1.led2.led3.led4 连接的分别是 GPK4.GPK5.GPK6.GPK7 2.查询6410芯片手册 下面还需要3个步骤: 1.设置GPIO为OUTPUT. 将GPK4.GPK5.GPK6.GPK7设置为输出output=0001 即GPKCON0的19:28都配置为0001 2.设置GPIO的数据. 将GPKDATA的4:7位赋值为0 3.设置GPKUP为上拉. 将GPKUP的4:7位设置为10 3.代码 led_driver.c #include <lin…
首先需要知道的是,设备跟驱动是分开的.设备通过struct device来定义,也可以自己将结构体封装到自己定义的device结构体中: 例如:struct platform_device: 在include/linux/platform_device.h文件中: //这个位置还是个盲点,我一直没找到这个位置在哪里 struct platform_device { const char * name u32 id struct device dev u32 num_resources struc…
[ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 按照ldd的说法,linux的设备驱动包括了char,block,net三种设备.char设备是比较简单的,只要分配了major.minor号,就可以进行读写处理了.相对而言,block和net要稍微复杂些.net设备姑且按下不谈,我们在以后的博文中会有涉及.今天,我们可以看看一个简单的block是怎么设计的. 为了将block和fs分开,kernel的设计者定义了request queue…
驱动代码如下: #include <linux/kernel.h>//内核头文件 #include <linux/init.h>//__init等 #include <linux/module.h>//模块加载的头文件 #include <linux/fs.h>//file_operations #include <linux/errno.h>//错误状态常数 #include <linux/types.h>//size_t,ssiz…
// 申请IO资源 int gpio_request(unsigned gpio, const char *label); // 释放IO资源 void gpio_free(unsigned gpio); // 将IO引脚配置为输入 int gpio_direction_input(unsigned gpio); // 将IO引脚配置为输出并设置引脚电平 int gpio_direction_output(unsigned gpio, int value); // 读取引脚电平 int gpio…
本文转载自:https://blog.csdn.net/zqixiao_09/article/details/50858776 版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/zqixiao_09/article/details/50858776       编写驱动的第一步仍是看原理图: 可以看到,该蜂鸣器由 GPD0_0 来控制 ,查手册可知该I/O口由Time0 来控制,找到相应的寄存器: a -- I/O口寄存器及地址 GPD0CO…