一步一步学习linux驱动
本专栏旨在帮助linux驱动初学者少走弯路,同时也是自己一点一滴的技术积累。希望和大家一起成为技术达人! --------王奇
_Archie
了解够多,看的才远!
展开
-
linux驱动之NandFlash驱动
写块驱动程序的框架:分配 gendisk 结构体,使用alloc_disk设置:队列,属性注册Nandflash芯片操作:1、NandFlash和S3c2440怎么硬件怎么连接?DATA0 ~DATA7上既传输数据,又传输地址,也传输命令当ALE为高电平时传输的是地址当CLE为高电平时传输的是数据当ALE和CLE都为地电平时传输的是数据2、数据线既接到NAND原创 2015-01-02 22:57:49 · 1640 阅读 · 0 评论 -
TQ2440从nfs网络文件系统启动
前提:我的PC已经配置好了 NFS服务 nfs根目录为:/home/daysmark/nfsdir如果不会配置,请看点击打开链接1、进入uboot进行设置Set the boot parameters Set parameter 设置如下:serverip=192.168.0.149ipaddr=192.168.0.151netmask=255.25原创 2015-01-03 22:53:59 · 1719 阅读 · 0 评论 -
linux驱动之块设备驱动框架
本文主要介绍了 linux块设备驱动的框架。并且以内存为例子,讲解如何书写块设备驱动程序原创 2015-01-01 22:24:32 · 1621 阅读 · 0 评论 -
linux驱动之usb鼠标按键的读取
上一篇博文只是usb总线驱动程序的框架,下面来真正写一个usb驱动程序。USB鼠标驱动,鼠标输入HID类型,其数据传输采用中断URB,鼠标端点类型为IN目的:usb鼠标按键的驱动代码编写:框架:分配一个input_dev结构体设置注册硬件相关的操作思路:1、分配/设置usb_driver结构体static struct usb_driver usb_mous原创 2015-01-01 18:07:14 · 3210 阅读 · 1 评论 -
linux驱动之USB驱动程序框架
USB驱动程序框架:app:----------------------------------------------------------------------- USB设备驱动程序内核 -------------------------------------------------------原创 2015-01-01 10:37:01 · 4202 阅读 · 0 评论 -
linux驱动程序之触摸屏(涵盖了常用的事件编码)
作为一个输入子系统,步骤依然是:1、分配2、设置3、注册4、硬件相关的操作触摸屏的使用过程:1、按下,产生中断2、在中断处理程序里面启动ADC转换XY坐标3、ADC结束,产生中断。4、在ADC处理函数里面上报input_event,启动定时器5、定时器时间到,再次启动ADC(处理长按,滑动)6、等待松开原创 2014-12-30 16:08:08 · 2906 阅读 · 1 评论 -
linux驱动之LCD
以下是写LCD驱动的框架:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2014-12-27 22:21:31 · 1653 阅读 · 0 评论 -
linux驱动之分离分层的概念
bus_drv_dev模型:简单说明:这张图就是全部了。device是与硬件相关的代码,driver是比较稳定的驱动代码。当修改硬件部分的时候,只修改dev里面的东西。====================================================================================================原创 2014-12-26 20:54:01 · 2592 阅读 · 1 评论 -
linux驱动程序之基于输入子系统写驱动程序
步骤:分配input_dev结构体设置这个结构体注册硬件相关操作原创 2014-12-26 19:32:04 · 1401 阅读 · 0 评论 -
linux驱动之输入子系统概念
以前的博文介绍linux驱动程序的时候一直遵循以下步骤:确定主设备号定义一个file_operation结构,填充函数如:open write read poll等设备注册入口函数出口函数以上即是字符设备的框架。------------------------------------------------------------------------------------原创 2014-12-24 23:00:20 · 1974 阅读 · 0 评论 -
linux驱动程序之定时器防按键抖动
前提:按键按下通过中断方式进行处理。本博文基于上一个博文改写:上一篇博文目的:使用定时器防止按键抖动产生中断。方法:每次发生按键中断后,推迟10ms进行处理,最终将会只执行一次定时器中断处理函数。这样就避免了按键抖动引起的误中断。步骤:1、定义一个定时器结构体static struct timer_list button_timer;//定义一个定时器,用于按键消抖原创 2014-12-24 18:35:58 · 2624 阅读 · 0 评论 -
linux驱动程序之增加按键异步通知机制
目的:按下按键时驱动程序通知应用程序大体框架:1、应用程序:注册信号处理函数2、驱动程序发送信号3、应用程序通知驱动 PID4、驱动程序发送如何发送信号原创 2014-12-22 18:27:05 · 1316 阅读 · 0 评论 -
linux驱动之poll操作
POLL操作1、POLL执行过程:poll是一个系统调用,其内核入口函数为sys_poll,sys_poll几乎不做任何处理直接调用do_sys_poll,do_sys_poll的执行过程可以分为三个部分: 1,将用户传入的pollfd数组拷贝到内核空间,因为拷贝操作和数组长度相关,时间上这是一个O(n)操作,这一步的代码在do_sys_poll中包括从函数开始到调用do_poll原创 2014-12-22 12:29:27 · 1138 阅读 · 0 评论 -
linux驱动之中断方式获取键值
linux驱动之中断方式获取键值------------------------------------------------------------------------------------------------------------------------------------------------------回顾在单片机下的中断处理分辨是哪个中断调用处理函原创 2014-12-21 11:48:37 · 2370 阅读 · 2 评论 -
linux驱动之按键驱动
目的:编写按键驱动原理图:按键与引脚对应关系:1、编写驱动程序框架2、查看原理图与s3c2440手册3、编写open函数配置引脚4、编写read函数功能驱动代码:#include #include #include #include #include #include #include #include MODULE_LI原创 2014-12-20 19:04:02 · 1065 阅读 · 0 评论 -
linux驱动之LED驱动_2
在上一个帖子中,讲述了如何给led编写驱动程序,但是实现的功能比较单一,接下来我们要实现的功能是在上一个的基础上能够单独控制每一个led灯。上一个帖子的链接: linux驱动之LED驱动_1 上一个帖子的驱动源码在:点击打开链接 测试源码在:点击打开链接目的:实现板子上每个led能够单独的控制。方法:0、通过次设备号来单独访问每个led1、更改入口函数: 为原创 2014-12-19 21:35:10 · 1389 阅读 · 0 评论 -
linux驱动之LED驱动_1
步骤:1、框架 2、完善硬件的操作: a.看原理图、引脚 b.看2440手册 c.写代码: IO口需要用ioremap映射我的板子电路如下所示1、配置GPBCON 寄存器,配置输出 在open函数中去配置2、配置GPBDAT 寄存器 在write函数中去配置#########原创 2014-12-19 16:25:37 · 1297 阅读 · 0 评论 -
linux驱动之设备号与创建设备节点
设备号:1、自动分配major = register_chrdev(0,"first_drv",&first_sdv_fops);//注册注册设备时给设备号写0,则内核会自动分配一个主设备号返回。2、手动指定到 proc/devices 文件下查找都有哪些主设备号,如果没有被使用的我们即可拿过来使用它。应用程序设备节点:我们会使用open这个函数带开一个设备,那么o原创 2014-12-18 21:50:18 · 2011 阅读 · 1 评论 -
linux根文件系统init进程分析
init程序本身即busybox:配置文件解析配置文件执行用户程序程序执行过程:busybox -> init_main parse_inittab file = open(INITTAB,"r"); //打开配置文件 /etc/inittab原创 2014-12-16 18:28:15 · 1308 阅读 · 0 评论 -
linux内核启动流程
内核启动:1、内核引导阶段确定内核是否支持该架构 __lookuo_processor_type 确定内核是否支持该单板 __lookup_machine_type建立一级页表 __create_page_tables设置arm920 cpu核 禁止 I,D caches等 __arm920_setup使能MMU __enable_mmu原创 2014-12-16 17:16:49 · 886 阅读 · 0 评论