自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Linux_11th_poll机制

poll机制:在读取按键电平状态的时候,查询法是在应用程序的死循环中不断调用read函数去读取键值,这将占用几乎所有的CPU资源。中断方法解决了在死循环中不断读取按键电平的问题,具体做法是:在read函数中判断,如果没有中断发生,就在read函数中就地休眠,当按键按下或松开时,触发中断,进入中断服务函数,在中断服务函数中读取引脚电平,然后在退出终端服务函数之前唤醒进程,让进

2016-12-30 08:29:41 381

原创 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

原创 Linux_9th_第1个linux驱动___应用程序才是大Boss

我们的驱动模块已经可以被自动分配主设备号了,可以说到目前为止,一个驱动模块所具备的一些“基础设施”它都具备了,就像是养兵前日,用兵一时,已经可以让first_drv这个驱动模块出去打仗了。那么说是出去打仗,总得有个发号施令的首长吧,在linux系统中,这位调兵遣将的首长就是应用程序,应用程序才是大Boss,我们“一直精雕细琢的驱动模块”说白了只是个跑腿的。这

2016-12-23 10:17:39 322

原创 Linux_8th_第1个linux驱动___自动分配主设备号

本篇博客内容不会很多,主要是对这个驱动程序进行一点优化,每次都要cat /proc/devices去查看还有哪些主设备号可用太麻烦了,linux如此受到热捧,显然我们不是每次都得这样做。其实register_chrdev函数可以帮我们从1~255里面找到一个可用的主设备号,然后将这个主设备号返回给我们,当然这次我们同样要给register_chrdev函数传一个数字进去,只不过

2016-12-22 08:45:30 669

原创 Linux_7th_第1个linux驱动___给驱动模块上户口(二)

从这篇博文开始,我们终于可以给我们的驱动模块first_drv一个正式的编制了,现在他已经填好了自己的户口登记信息表,距离拿户口本儿只有一步了!内核内部有自己的一套安装驱动模块的方法,就像是民政局工作人员知道怎么给一个人办户口一样,对于一个普通公民来说,工作人员做了哪些操作办好了户口本,并不是普通公民需要关心的,我们最关心的是如何把我们填好的户口信息登记表交给工作人员,如何

2016-12-21 08:38:46 300

原创 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

原创 Linux_5th_第1个linux驱动___投奔NFS网络文件系统

之前我们一直是在虚拟机ubuntu环境中测试我们的first_drv驱动模块,但是这不是我们的开发方向,在刚开始的学习中我们避免搭建过多的环境,因此选择了只在ubuntu中测试驱动。我们的模式是:[first_drv.c]-->[使用ubuntu内核源码编译]-->[first_drv.ko(可运行于虚拟机)]-->[ 安装到虚拟机中 ]

2016-12-19 09:12:38 349

原创 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

原创 Linux_3th_第1个linux驱动___编译空壳驱动程序

cscda

2016-12-17 10:00:13 826

原创 Linux_2th_第1个linux驱动___整个系统是怎样工作的

接着上一篇博文中,我们已经在first_drv.c中写好了空壳驱动程序。但是编译这个空壳驱动程序之前,我们需要了解整个系统是怎么工作的。不着急,首先,我们先来了解一点linux驱动的基本概念:linux驱动分为字符设备驱动、块设备驱动、网络设备驱动。这是按照驱动程序对不同的硬件的操作方式差异而划分的:

2016-12-12 09:53:21 690

原创 Linux_1th_第1个linux驱动___搭建环境,蓄势待发

如何开始写最简单的linux驱动?在阅读本文前,你需要对linux的基本知识、ubuntu虚拟机的安装与命令行操作有基本的了解。环境搭建:我在windows电脑上使用VMware打开安装好的虚拟机ubuntu9.0,ubuntu是运行linux内核的linux发行版。我习惯secureCRT通过SSH远程登录到虚拟机上操作,当然你也可以直接在虚拟机环

2016-12-11 19:52:15 312

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除