下载此文档

基于Mini6410的Linux驱动学习总结.doc


文档分类:IT计算机 | 页数:约20页 举报非法文档有奖
1/20
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/20 下载此文档
文档列表 文档介绍
基于Mini6410的Linux驱动学习总结
基于mini6410的linux驱动学习总结(一驱动程序介绍)
1、什么是驱动程序?
使硬件工作的软件。
2、驱动分类
1)字符设备驱动
2)网络接口驱动
3)块设备驱动
字符设备
字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open, close,read和write 系统调用。

1)在大部分的Unix 系统, 块设备不能按字节处理数据,只能一次传送一个或多个长度是512字节( 或一个更大的2 次幂的数)的整块数据。
2)而Linux则允许块设备传送任意数目的字节。因此, 块和字符设备的区别仅仅是驱动的与内核的接口不同。
网络接口
任何网络事务都通过一个接口来进行, 一个接口通常是一个硬件设备(eth0), 但是它也可以是一个纯粹的软件设备, 比如回环接口(lo)。一个网络接口负责发送和接收数据
报文。
3、驱动程序安装
1)模块方式(已知J)
2)直接编译进内核
直接编译进内核
1)Kconfig
2)Makefile
例:将helloWorld编译进内核
在类unix系统中,字符设备和主要有以下3点不同:
1、字符设备是以字节为单位进行访问。块设备是以块为最小单位进行访问。块可以是512字节或一个更大的2次幂的数。
2、在linux系统中,字符设备和块设备都可以以字节为单位进行访问,区别仅仅是二者访问的接口函数不同。
3、块设备与字符设备访问的顺序不同,字符设备只能顺序访问,而块设备可以随机访问。
基于mini6410的linux驱动学习总结(三使用驱动程序)
Linux用户如何使用驱动程序?
Linux用户程序通过设备文件(又名:设备节点)来使用驱动程序操作字符设备和块设备
下图是linux系统中应用程序、驱动、硬件之间的关系图。
设备(字符、块)文件在何处?
设备文件存放在dev目录下。
背景:       
阅读新闻
基于Mini6410的Linux驱动学习总结
[日期:2012-04-28]
来源:Linux社区  作者:yinjiabin
[字体:大 中 小]
基于mini6410的linux驱动学习总结(四设计字符设备驱动程序)
涉及的知识点
1、设备号
2、创建设备文件
3、重要数据结构
4、设计字符设备驱动的步骤
 

设备号用来做什么?
设备号作用:主设备号用来标识与设备文件相连的驱动程序。次编号被驱动程序用来辨别操作的是哪个设备。
**主设备号用来反映设备类型**
**次设备号用来区分同类型的设备**

1)内核中如何描述设备号?
 dev_t
**其实质为unsigned int 32位整数,其中高12位为主设备号,低20位为次设备号。
2)如何从dev_t中分解出主设备号?
MAJOR(dev_t dev)
3)如何从dev_t中分解出次设备号?
MINOR(dev_t dev)

Linux内核采用静态申请,动态分配两种方法
1) 静态申请方法:
1根据Documentation/,确定一个没有使用的主设备号
2使用register_chrdev_region函数注册设备号
优点:简单
缺点:一旦驱动被广泛使用,这个随机选定的主设备号可能会导致设备号冲突,而使驱动程序无法注册。
静态申请函数:
int register_chrdev_region(dev_t from, unsigned count, const char *name)
功能:申请使用从from开始的count 个设备号(主设备号不变,次设备号增加)
参数:
from:希望申请使用的设备号
count:希望申请使用设备号数目
name:设备名(体现在/proc/devices)
2)动态分配方法:
使用alloc_chrdev_region分配设备号
优点:简单,易于驱动推广
缺点:无法在安装驱动前创建设备文件(因为安装前还没有分配到主设备号)。
解决办法:
安装驱动后,从/proc/devices中查询设备号
动态分配函数
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,const char *name)
功能:请求内核动态分配count个设备号,且次设备号从baseminor开始。
参数:
dev:分配到的设备号
baseminor:起始次设备号
count:需要分配的设备号数目
name

基于Mini6410的Linux驱动学习总结 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数20
  • 收藏数0 收藏
  • 顶次数0
  • 上传人cdsqbyl
  • 文件大小0 KB
  • 时间2015-05-09