学习了将近半个月的设备驱动程序的编写,也有一些体会,这里写下来也给学习做一个总结,为后面的学习做更好的准备。

首先,个人感觉驱动程序的设计是很有套路的,最基本的要求就是要掌握这些套路。所谓的套路就是一个比较标准的流程,更具体一点就是某个函数是什么时候调用,函数的作用等。这些函数都是内核提供好了的。还有一点要注意,就是写驱动程序虽说是内核编程,但是不应该过分去了解内核的相关知识,否则目标就会转移,而不是停留在我们最根本的驱动程序的学习上了。

其次,就是对驱动类型的一些看法,由于块设备和套节字还没有学习到,所以认识还不够全面。到现在为止,我看到过的套路有四个,字符设备,混杂设备,总线设备驱动,platform驱动,前两个属于一个性质,后两个属于一个性质。字符设备的驱动的使用必须通过文件操作的系统调用来使用,否则无法进入驱动,所以其特点是完成fops这个结构体及里面函数的实现。总线设备驱动完成的主要是总线,设备,驱动的注册,内核在发现驱动或者设备被加载到系统后,就会去完成设备和驱动的匹配,进入驱动的probe函数,这个函数是整个驱动的入口,这类驱动程序是没有什么系统调用的,和用户空间不进行交互的,事实上这类驱动的实际应用,如usb设备,插入到系统后系统会自动识别。

最后,驱动程序的难点,虽说套路很死板,灵活的地方在于各类硬件的操作方式。根据LDD3书上的章节,可以看出大体分为两类内容,除了重要的套路内容以外,就是一些内核函数,这些内核函数可以在各个地方使用,贯穿各类套路,熟记这些函数的使用也是难点。

最新文章

  1. HP QR Code 实现二维码
  2. 使用MVC过滤器保存操作日志
  3. iptables之链之间的跳转
  4. .Net如何在后台设置日期格式,并显示在前台页面上
  5. 安装Ifconfig
  6. 你需要知道的swift必备函数 map
  7. HDU 3065 病毒侵袭持续中(AC自动机)
  8. 重构if...else...或者switch程序块
  9. Jquery学习—jquery的事件
  10. NSArray,NSSet,NSDictionary的遍历,基本使用集锦
  11. leetcode:Lowest Common Ancestor of a Binary Search Tree
  12. log4j配置祥解
  13. ORACLE 中IN和EXISTS比较
  14. JQuery实战总结二 横向纵向菜单下拉效果图
  15. python模块之random
  16. 一起学Hive——详解四种导入数据的方式
  17. unable to load http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
  18. 如何停止和禁用Linux系统中的不需要的服务
  19. 基于.NET平台常用的框架整理 【转载】
  20. mathType插入公式编号,及对公式编号的字体进行修改。调整公式上下间距。

热门文章

  1. 洛谷P2676 超级书架
  2. laravel 数据库配置
  3. Influx kafka
  4. PSO(Thepopularity-similarity-oplimization) modol
  5. centos tomcat 关于日志
  6. git(三):第一次github了解使用
  7. BZOJ——1606: [Usaco2008 Dec]Hay For Sale 购买干草
  8. hg下拉和上传代码
  9. bzoj 5216: [Lydsy2017省队十连测]公路建设
  10. Maven实现多个项目关联自动化构建(maven-invoker-plugin插件的使用)