linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》
本文摘自本人拙著 《嵌入式Linux驱动模板精讲与项目实践》
初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别。事实上做一段时间驱动之后回首看来主要就是下面几点:
(1)对驱动进行分类。先归纳为哪个类型的驱动。归类正确再利用内核提供的子系统进行开发,往往会发现事实上非常多通用的事情内核已经帮我们做了,一个优秀的驱动project师应该最大程度上利用内核的资源。内核已经实现的毕竟稳定性强。可移植性高。
(2)找到内核的提供的子系统。接下来就是要制作该子系统对该类设备提供的表征,也就是描写叙述该类驱动的结构体,然后定义这个结构体把必要的数据进行初始化,最后调用该内核子系统提供的接口函数提交给内核管理。
这是大部分驱动程序开发的战略流程。
(3)明白子系统已经做了什么,须要在自己驱动中实现哪些内容,通常做法是找一个接近的驱动程序进行改动,而不是一行一行代码进行编写。到内核中找接近的驱动例程是一个非常好非常快的方法。这些例程基本上提供接口怎样使用,调用流程等等。
(4)以上基本上都是与内核接口有关,驱动第二个涉及到的就是芯片手冊,这个与做其它嵌入式软件一致。故从单片机软件开发或者其它操作系统软件开发转过来做Linux驱动开发的人员来说,这部分是一个强项。
(5)驱动另外一个内容就是协议,各种嵌入式总线协议从简单的SPI到复杂的PCI或者USB等等。
协议基本知识是须要掌握的。好在内核对各种常见协议都是以子系统的形式提供,在子系统中做了大部分共性的工作。大大减少了驱动开发的工作量。
故学好驱动开发。一个重要的方面就是对内核的学习,熟悉内核的组织和思维方式,所以对其思想做个总结是很有必要的。
linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》的更多相关文章
- 嵌入式Linux开发系列之一: 走进嵌入式Linux的世界
转载:http://www.ibm.com/developerworks/cn/linux/l-embed/part1/index.html 随着信息化技术的发展和数字化产品的普及,以计算机技术. ...
- 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇
驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...
- 驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇
驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ...
- Embedded Linux Primer----嵌入式Linux基础教程--2.4节--嵌入式Linux发行版
嵌入式Linux发行版 究竟什么是Linux发行版?在Linux内核引导之后,它期望找到并挂载根文件系统.当一个匹配的根文件系统已经挂载上,启动脚本开始运行大量程序和系统要求的工具.这些程序经常调用其 ...
- 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- linux驱动开发—基于Device tree机制的驱动编写
前言Device Tree是一种用来描述硬件的数据结构,类似板级描述语言,起源于OpenFirmware(OF).在目前广泛使用的Linux kernel 2.6.x版本中,对于不同平台.不同硬件,往 ...
- Linux驱动开发学习笔记(1):LINUX驱动版本的hello world
1.关于目录 /lib/modules/2.6.9-42.ELsmp/build/ 这个是内核源码所在的目录 一般使用这样的命令进入这个目录:cd /lib/modules/$(una ...
- Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)
Linux 文件系统与设备文件系统(3) 成于坚持,败于止步 sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs ...
- linux驱动开发之九鼎板载蜂鸣器驱动测试【转】
本文转载自:http://whylinux.blog.51cto.com/10900429/1932491 字符设备驱动用的fileopretion结构体. 1.板载蜂鸣器的驱动测试 我手里有一个BS ...
随机推荐
- 【转】Unity摄像机的使用二:摄像机的切换
http://blog.csdn.net/liujunjie612/article/details/45847877 我们接着上一篇博文继续研究摄像机,这篇我们说下Unity中摄像机的切换,说到切换, ...
- “取出数据表中第10条到第20条记录”的sql语句+selecttop用法
1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...
- system权限无法访问外挂SD卡
总结Android应用system权限无法访问SD卡问题 包括android1.6 解决方案http://hi.baidu.com/yunlongchn/item/7d6636d8547317ffca ...
- jmeter作接口测试入门的简单使用说明
一.添加接口信息 1.添加线程组 (1)路径如下图: (2)部分内容解释 a. Number of Threads(users):线程数 b. Ramp-Up Period(in seconds) ...
- vs2017 出现“文件中的类都不能进行设计,因此未能为该文件显示设计器”问题处理
今天拷贝了以前的一个项目.打算出一个新版本. 但是拷贝了sln文件后,去除掉以前的项目,新增了一个 winfrom项目中 出现了:文件中的类都不能进行设计,因此未能为该文件显示设计器.错误 百度了一 ...
- *UOJ#223. 【NOI2016】国王饮水记
$n \leq 8000$的数列,问不超过$m \leq 1e9$次操作后第一个数字最大是多少.操作:选一些数,把他们变成他们的平均值.需要保留$p \leq 3000$位小数,提供了一个小数高精度库 ...
- SQl性能优化1
原文发布时间为:2010-11-05 -- 来源于本人的百度文章 [由搬家工具导入] 性能优化,从上面我说的两点来考虑优化,主要是以Sql为主,平台暂不介绍,我们现在使用的数据库以SQL Server ...
- Ubuntu中配置Tomcat与Eclipse整合
Apache Tomcat 作为web服务器已经广泛用于Java Servlets 和 JSP (Java Server Pages) 开发. 环境:Ubuntu10.10 java环境的配置见另一篇 ...
- LeetCode OJ-- Divide Two Integers *
https://oj.leetcode.com/problems/divide-two-integers/ 在不使用乘法.除法.求余的情况下计算除法. 使用减法计算,看看减几次. 刚开始寻思朴素的暴力 ...
- c# 序列化对象为xml 方法
public static string XmlUtils(object obj, bool omitXmlDeclaration = true, bool indent = false, bool ...