Chinaunix首页 | 论坛 | 博客
  • 博客访问: 481738
  • 博文数量: 93
  • 博客积分: 1431
  • 博客等级: 上尉
  • 技术积分: 1006
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-18 10:30
文章分类

全部博文(93)

文章存档

2011年(20)

2010年(2)

2009年(71)

我的朋友

分类: LINUX

2009-06-18 16:15:22

个人从事linux驱动开发已经一年多了,在这里我想浅谈一下我对linux 驱动的一点理
解和认识
 
我个人把linux驱动分为两类:
1. kernel/linux/driver 目录下的驱动,如网卡,Nandflash驱动等
2.比较简单的外围设备如LED灯
这里主要谈第1类驱动,这类驱动较为复杂
个人理解驱动的软件部分主要分3大块:
   1.协议部分,如网卡驱动的网络协议部分,这部分由内核自己完成,且较为规范,
对于驱动工程师来讲,这部分很少需要改动,所以我也很少关注它。它主要包括两方面:
你对协议的理解,和协议是如何通过软件实现的,个人认为此块较为复杂。
    2.驱动与内核的接口部分,如 我要注册使用一个驱动,需填充哪个内核提供的结构
体,有哪些函数需要我完成。这类结构体大多包涵两部分:模块参数和一些功能函数。
    对于不同设备 需填写的结构体函数各有不同,详情可参照
《linux设备驱动开发详解》一书,宋宝华 编著,此书可谓是内核驱动的一幅地图。
 我们读驱动代码是经常会遇到一些不认识的函数,多为linux系统提供用于实现
某种机制如中断唤醒,内核定时器,同步,共享,自旋锁等等,如果不能很好的理解这些
东西,看代码是难免云里雾里的。推荐一书《linux设备驱动》 第三版 魏永明等译
此书堪称linux驱动工程师的葵花宝典。有助于我们理解linux驱动的一些机制
    3.驱动与硬件关联部分:如何读写芯片寄存器和对芯片手册中时序图的实现软件模拟
通常会有相应的函数实现具体的功能,我们称这部分函数 为 底层函数,它与底层硬件密
切相关。
     此部分需 详细阅读数据手册,原理图,或与硬件工程师沟通。
后两块是我们平时做linux驱动关注的重点。
再浅谈一下个人学习体验:
1.看书,几本书对照着看,因为很少有书讲的 很全面,而我们做东西需较全面的知识。
多看几本书可以知识互补,重复讲的地方还能加深印象。
2.做实验,理论联系实际,不但可以加深对书本知识印象,再回过头去看书也会加深对知
识理解的深度

 
阅读(1879) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

guliangzeng2009-10-23 15:58:29

补充一点自学经验: 3.看书要多读几遍,技术类的书刚开始看一遍不理解不要紧,静下心来多看几遍,就会有根深的理解。书读百遍,其义自现,每一遍都会有新的认识。再对照一下其他同类书籍的讲解,更能加深理解