Linux
文章平均质量分 72
weqpo
这个作者很懒,什么都没留下…
展开
-
Linux_1th_第1个linux驱动___搭建环境,蓄势待发
如何开始写最简单的linux驱动?在阅读本文前,你需要对linux的基本知识、ubuntu虚拟机的安装与命令行操作有基本的了解。环境搭建:我在windows电脑上使用VMware打开安装好的虚拟机ubuntu9.0,ubuntu是运行linux内核的linux发行版。我习惯secureCRT通过SSH远程登录到虚拟机上操作,当然你也可以直接在虚拟机环原创 2016-12-11 19:52:15 · 312 阅读 · 0 评论 -
Linux_2th_第1个linux驱动___整个系统是怎样工作的
接着上一篇博文中,我们已经在first_drv.c中写好了空壳驱动程序。但是编译这个空壳驱动程序之前,我们需要了解整个系统是怎么工作的。不着急,首先,我们先来了解一点linux驱动的基本概念:linux驱动分为字符设备驱动、块设备驱动、网络设备驱动。这是按照驱动程序对不同的硬件的操作方式差异而划分的:原创 2016-12-12 09:53:21 · 690 阅读 · 0 评论 -
Linux_12th_异步通知
第12.6课异步通知:之前的三种读取按键电平状态的方法分别是:查询法、中断法、中断+Poll机制。这三种方法都需要应用程序主动去读取,我们可以进一步改进,如果应用程序可以休眠或者做别的事情,当发生按键中断时,驱动中的中断服务函数来主动提醒应用程序去读取就好了。这个设想可以通过驱动程序给应用程序发信号的方法来实现。首先明原创 2017-01-03 08:22:48 · 242 阅读 · 0 评论 -
Linux_11th_poll机制
poll机制:在读取按键电平状态的时候,查询法是在应用程序的死循环中不断调用read函数去读取键值,这将占用几乎所有的CPU资源。中断方法解决了在死循环中不断读取按键电平的问题,具体做法是:在read函数中判断,如果没有中断发生,就在read函数中就地休眠,当按键按下或松开时,触发中断,进入中断服务函数,在中断服务函数中读取引脚电平,然后在退出终端服务函数之前唤醒进程,让进原创 2016-12-30 08:29:41 · 382 阅读 · 0 评论 -
Linux_10th_input子系统
linux中input子系统的编程模型:命令行界面的输入类设备应用接口GUI界面struct input_eventstruct input_event {struct timeval time;__u16 type;__u16 code;__s32 value;};通过该结构体将输入类设备的类别、特征等相原创 2016-12-29 15:53:08 · 287 阅读 · 0 评论 -
Linux_9th_第1个linux驱动___应用程序才是大Boss
我们的驱动模块已经可以被自动分配主设备号了,可以说到目前为止,一个驱动模块所具备的一些“基础设施”它都具备了,就像是养兵前日,用兵一时,已经可以让first_drv这个驱动模块出去打仗了。那么说是出去打仗,总得有个发号施令的首长吧,在linux系统中,这位调兵遣将的首长就是应用程序,应用程序才是大Boss,我们“一直精雕细琢的驱动模块”说白了只是个跑腿的。这原创 2016-12-23 10:17:39 · 322 阅读 · 0 评论 -
Linux_8th_第1个linux驱动___自动分配主设备号
本篇博客内容不会很多,主要是对这个驱动程序进行一点优化,每次都要cat /proc/devices去查看还有哪些主设备号可用太麻烦了,linux如此受到热捧,显然我们不是每次都得这样做。其实register_chrdev函数可以帮我们从1~255里面找到一个可用的主设备号,然后将这个主设备号返回给我们,当然这次我们同样要给register_chrdev函数传一个数字进去,只不过原创 2016-12-22 08:45:30 · 669 阅读 · 0 评论 -
Linux_7th_第1个linux驱动___给驱动模块上户口(二)
从这篇博文开始,我们终于可以给我们的驱动模块first_drv一个正式的编制了,现在他已经填好了自己的户口登记信息表,距离拿户口本儿只有一步了!内核内部有自己的一套安装驱动模块的方法,就像是民政局工作人员知道怎么给一个人办户口一样,对于一个普通公民来说,工作人员做了哪些操作办好了户口本,并不是普通公民需要关心的,我们最关心的是如何把我们填好的户口信息登记表交给工作人员,如何原创 2016-12-21 08:38:46 · 300 阅读 · 0 评论 -
Linux_6th_第1个linux驱动___给驱动模块上户口(一)
我们已经成功地通过开发板的最小根文件系统的/mnt目录挂接了虚拟机ubuntu的/work/my_drivers/ko_file目录下的内容,现在只要在最小根文件系统环境中执行:insmod /mnt/first_drv.ko,即可把ubuntu中编译好的first_drv.ko安装到开发板的内核中,卸载执行:rmmod first_drv或rmmod first_drv.ko即可。原创 2016-12-20 09:17:06 · 298 阅读 · 0 评论 -
Linux_5th_第1个linux驱动___投奔NFS网络文件系统
之前我们一直是在虚拟机ubuntu环境中测试我们的first_drv驱动模块,但是这不是我们的开发方向,在刚开始的学习中我们避免搭建过多的环境,因此选择了只在ubuntu中测试驱动。我们的模式是:[first_drv.c]-->[使用ubuntu内核源码编译]-->[first_drv.ko(可运行于虚拟机)]-->[ 安装到虚拟机中 ]原创 2016-12-19 09:12:38 · 349 阅读 · 0 评论 -
Linux_4th_第1个linux驱动___内核与驱动模块的第一次接触
在上一篇博文中,我们已经通过Makefile编译得到first_drv.ko文件,这是一个可以被安装到ubuntu中的驱动模块,要怎样做呢?在/work/my_drivers/first_drv/1th/目录下执行:insmod first_drv.ko如果你是在普通用户状态下执行的这条命令,可以看到系统提醒我们:insmod: error insert原创 2016-12-18 15:31:34 · 432 阅读 · 0 评论 -
Linux_3th_第1个linux驱动___编译空壳驱动程序
cscda原创 2016-12-17 10:00:13 · 826 阅读 · 0 评论