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 ...
随机推荐
- nginx通过spawn-fcgi调用C++写的cgi程序
通过apt-get install 安装nginx和spawn-fcgi /usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 9002 -C 25 -f ...
- Codeforeces 954C Matrix Walk
题目大意 考虑一个 $x\times y$ 的矩阵 $A_{x\times y}$ ,$A_{i,j} = (i-1)x+y$ . 从矩阵中的某个位置出发,每次可向上下左右移动一步,每到一个位置,记录 ...
- bzoj4380[POI2015]Myjnie dp
[POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 368 Solved: 185[S ...
- gradle ofbiz 16 开发环境搭建
原 gradle ofbiz 16 开发环境搭建 2017年02月13日 10:59:19 阅读数:2702 1.安装jdk 2.配置jdk环境变量 3.eclipse 安装svn 插件 4.svn下 ...
- poj 3250 Bad Hair Day
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21084 Accepted: 7202 Des ...
- 《Java性能权威指南》笔记----JIT编译器
概览 编译型语言(C++,Fortran等):运行程序前,需要用编译器将代码静态编译成CPU可执行的汇编码.汇编码针对特定的CPU. 优点:只需编译一次,且有足够的程序信息来优化汇编码.执行速度快: ...
- nvarchar与varchar的区别
原文发布时间为:2009-08-05 -- 来源于本人的百度文章 [由搬家工具导入] 1、通俗一點就是varchar適合輸入英文和數字,nvarchar一般用做中文或其它語言的輸入,這樣到別的語系不會 ...
- [LeetCode] Same Tree 深度搜索
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- [LeetCode] Valid Number 确认是否为数值
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- 此时不应有 \Microsoft (转)
原文转自 http://www.tuicool.com/articles/J7RFRz 下载boost库后,在cmd中运行bootstrap.bat ,输出 "此时不应有 \Microsof ...