Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309781
  • 博文数量: 72
  • 博客积分: 3111
  • 博客等级: 中校
  • 技术积分: 668
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-30 15:45
个人简介

朝着心的方向前进

文章分类

全部博文(72)

文章存档

2014年(5)

2013年(1)

2012年(1)

2011年(1)

2010年(24)

2009年(40)

我的朋友

分类:

2009-08-24 22:35:33


Linux设备驱动概述
以点亮LED为例:包括应用程序、库、操作系统、内核、驱动程序。而开发人员中
只要关注自己的那一层,相邻层只关注接口就可以了
1,应用程序使用库提供的open函数打开LED的设备文件
2,库根据open函数传入的参数执行“SWI”指令,这是软中断,这条指令会引起
CPU异常,进入内核
3,内核异常处理函数就会根据这些参数找到相应的驱动程序,返回一个
句柄给库,进而返回给应用程序
4,应用程序得到句柄后,使用库提供的write和ioctl函数发出控制指令
5,库根据write和ioctl函数传入的参数执行“SWI”指令,再次引起CPU异常
进入内核
6,内核根据异常处理函数根据这些参数调用驱动程序的相关函数,点亮LED
在异常处理函数中,内核会根据传入的参数执行各种操作,比如根据设备文件名
找到对应的驱动程序,调用驱动程序的相关函数
另外,驱动程序从不主动运行,都是被动运行,但也不是绝对的,用户完全可以

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