linux设备驱动编程-初探(1)--驱动程序概念

------linux设备驱动程序的简介

之前只是做项目的时候用过一段时间linux,对linux其实不怎么熟悉,但是大致的操作,编程的方法,工具(eclipse, gcc)方面还是稍微懂一点的,对于我来说,一直使用的是C语言(多数嵌入式系统开发使用),一直想花点时间来好好的学习一下linux下的驱动开发,正好这段时间一直在待业阶段,就好好的利用起这段时间来学习一下linux的驱动开发吧。

学习用书----O'REILLY 写的《LINUX 设备驱动程序》第三版,这本书也是大家所推荐的。

###########################################################

今天花了一个下午,把这本书的前2章看了一下,虽然很多东西不理解,但是有些理解的东西和概念还是有必要在这里总结一下,帮助自己理解。

设备驱动程序的作用:

据我的理解这个话题可能说起来要讲很多,但是简单的来说,驱动程序的作用就是就是应该处理如何让硬件可用的问题。

书中一直强调驱动程序的编写一定要注意【机制】和【策略】的区分。机制就是驱动程序提供的功能;策略则强调的是如何使用这些功能。对于使用,编程驱动程序的人员来说,驱动程序的机制是应该由驱动程序的编写人员的实现的,至于怎么样使用这些机制,则由上层的驱动程序使用人员【上层应用程序】来进行处理。所以,在编写不带策略的驱动程序的时候必须要注意一下:同时支持同步和异步的操作,驱动程序能够被多次打开,充分利用硬件特性,以及不具备用来“简化任务”的或者提供与策略相关的软件层。以上几点的理解:如下简单的示意图所示

+-----------------------+
|          App              |
+-----------------------+
|          driver           | ---->Kernel部分
+-----------------------+
|        hardware       |
+-----------------------+

图示中App层负责组织策略,调用driver提供的接口(API),使之能更有效的使用硬件的相关功能。其中driver部分应该属于OS的一部分,随OS一起发行,对于在linux系统中,程序员可以自己向linux系统内核添加功能,当然也可以移除该功能。

设备驱动程序的作用:

1.对设备初始化和释放;

2.把数据从内核传送到硬件和从硬件读取数据.;

3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据.;

4.检测和处理设备出现的错误。

驱动程序与内核

内核功能分成以下几部分:进程管理,内存管理,文件管理,设备控制,网络功能。使用insmod程序将模块连接到正在运行的内核,也可以使用rmmod程序移除连接。linux系统将设备分成三种基本类型:字符模块,块设备,网络模块。其中字符设备是个能够像字节流一样被访问的设备,由字符设备驱动程序来实现这种特性,一般字符设备驱动程序要实现open,close,read,write等基本的系统调用。块设备。。。。。网络接口:负责发送和接受数据包,但是它不需要了解每项事务如何映射到实际传送的数据包。

系统调用init_module会检查调用进程是否具有将模块装载到内核的权利。

关于许可证条款:

GNU通用公共许可证GPL(General Public License):我们的GNU通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。具体的自由软件方面的版本的知识,请参考相关资料,以后逐步完善。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值