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

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

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

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

转载于:https://www.cnblogs.com/ideawu1001/p/3190641.html

linux设备驱动学习笔记(1)相关推荐

  1. linux设备驱动读书笔记

    linux设备驱动读书笔记 设备驱动简介 机制:提供什么能力 策略:如何使用这些能力 在编写驱动时, 程序员应当编写内核代码来存取硬件, 但是不能强加特别的策略给用户, 因为不同的用户有不同的需求. ...

  2. linux设备驱动读书笔记(转)

    linux设备驱动读书笔记 设备驱动简介 机制:提供什么能力 策略:如何使用这些能力 在编写驱动时, 程序员应当编写内核代码来存取硬件, 但是不能强加特别的策略给用户, 因为不同的用户有不同的需求. ...

  3. linux设备驱动学习,linux设备驱动学习4

    Linux设备驱动程序学习(4) -高级字符驱动程序操作[(1)ioctl and llseek] 今天进入<Linux设备驱动程序(第3版)>第六章高级字符驱动程序操作的学习. 一.io ...

  4. Linux设备驱动开发笔记

    0 Linux 操作系统知识 Linux是一个操作系统. 优点: 免费: 丰富的文档和社区支持: 跨平台移植: 源代码开放: 有许多免费开源软件. 家用电脑用Windows,服务器端用Linux. 操 ...

  5. USB U盘Linux mass_storage驱动学习笔记(1)

    学习博客地址:https://blog.csdn.net/fudan_abc 学习书名:<Linux那些事之我是USB> 看代码之前,我曾经认真的思考过这么一个问题,我需要关注的仅仅是dr ...

  6. linux设备驱动学习(四)——阻塞与非阻塞I/O

    1.阻塞与非阻塞I/O介绍 阻塞和非阻塞I/O是设备访问的两种不同模式.阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作.被挂起的进程进入睡眠状态,被从调度器的 ...

  7. linux设备驱动学习(二)——字符设备编写及测试

    一.字符设备体结构介绍 1.字符设备作为linux内核三大驱动设备之一,主要完成字节的读写操作,常见的应用有鼠标.键盘等,结构体形式如下所示: struct cdev{ struct kobject ...

  8. linux 设备驱动学习总结

    从熟悉的开始. 设备驱动模型. device device driver class bus dra7xx pcie驱动 bus:platform bus device:platform_device ...

  9. linux设备驱动学习(一)——简单的helloworld模块

    在内核驱动中新建hello文件夹 1.需要.c文件与Makefile文件 在..../drivers/hello目录下新建xxx.c 和Makefile文件 .c文件样例: #include < ...

最新文章

  1. TCP/IP反码求和校验
  2. pythondocx批量提取目录及内容_使用pythondocx搜索目录中的所有docx文件(批处理)...
  3. special-symbols in package(data.table)
  4. python+pywinauto之PC端自动化一
  5. 构建之法第5词作业(12-15章)
  6. JAVA入门[23]-SpringBoot配置Swagger2
  7. [论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search
  8. 一直误解的memset函数
  9. 买下千万美元豪宅的库克 在周日获得了价值3600万美元股票
  10. Linux 2.6中基于Sysenter的系统调用机制
  11. django和celery结合应用
  12. swif开发之--协议的使用
  13. 基于SSM框架和easyUI框架的简易人事管理系统(六)
  14. 华为笔试题:根据子网掩码判断两个IP地址是否在同一子网,并输出IP1的网络号
  15. 开源)Java生成二维码分享海报
  16. 阿里双十一 11 年:购物狂欢背后的技术演进
  17. UTC时间和CST时间
  18. 分频电路设计(笔记)
  19. 微信小程序直接上传文件到阿里云OSS组件封装
  20. 安卓期末大作业——图书信息管理系统

热门文章

  1. 张小龙:我是对AI的未来表示担忧的人之一
  2. 无法量产自动驾驶汽车的企业,与谷歌公司差在哪儿
  3. 杭州往事之与L项目SME Cathy小聚
  4. 深度丨当AI变得无处不在,人类社会将发生这五大变化!
  5. 【前沿技术】Facebook 硬件负责人,带摄像头的智能眼镜将在 10 年内成为常态
  6. 用研究新范式破解生命科学难题
  7. 脑机接口简史——假如这篇推送是你靠意念打开的
  8. 深度学习已经彻底改变了制造业的质量控制,但还不够深入
  9. Gartner 2019 年 BI 炒作周期五大趋势:增强分析、数字文化、关系分析、决策智能、实施和扩展...
  10. 5G时代,智能工厂迎来4大改变!