Linux字符设备驱动模型

本文详细介绍了Linux设备驱动中的字符设备驱动模型,包括操作文件的步骤、字符设备驱动的编写、驱动分类,如字符设备、块设备和网络设备。重点讨论了字符设备的结构体赋值、文件操作核心结构、驱动应用程序的编写以及用户空间与内核空间的数据交换。还提到了物理地址到虚拟地址的转换以及Makefile在编译驱动程序中的应用。
摘要由CSDN通过智能技术生成
版本 颁布日期 修订章节
0.1 2015.08.13 撰写草稿
0.2 2015.12.07 整合字符型设备驱动
0.3 2015.12.07 整理文档,尚未验证驱动源码
0.4 2016.02.28 补充信息,整理结构关系
0.5 2016.03.13 验证驱动程序,正式发布

Linux设备驱动一些概念

Linux一切皆是文件,串口、鼠标、键盘等,在内核中都体现为一个文件。如果要操作一个硬件,就通过操作其对应的文件。

操作一个文件需要的步骤:(大象放冰箱)

1、	打开文件:不同类型文件,打开方法不一样。
2、	操作文件:不同文件读写方法不同。操作方法:读、写、定位。
3、	关闭文件。

编写一个特定设备的驱动程序

1、 主要实现这个设备的操作方法;-------驱动编程的主要工作;

2、 把实现的文件操作方法向系统注册;------字符设备模型;

3、 给用户空间提供访问的接口 ----有dev下的设备文件;
Linux下是分层的,分为内核空间和用户空间
默认情况下:
内核空间和用户空间的比例是3:1,在Linux源码配置中可以修改
目的:保证系统安全,不允许应用程序直接访问硬件。
例:任何一个软件,具有直接控制网卡功能,只要把网卡参数设置错误,则整个系统都不能用网卡。
分层操作,如果应用软件出问题,不会影响系统
内核空间:3~4G,运行驱动程序
用户空间:0~3G,运行应用程序-----main这类程序

4、 驱动程序运行在内核空间,应用程序运行在应用空间,不能直接交流,需要驱动程序给应用程序提供访问接口;

5、 每一类设备驱动都有特定的编程框架(模型),学习驱动编写,重点是学习每一类设备的编程框架。每一种文集操作方法也是特定的编程框架;

6、 设备号。每一个设备都会有一个正整数表示的设备号。
设备号由主设备号和次设备号组成
主设备号:表示一种设备
次设备号:表示一种设备中的具体哪一个

例:4个串口驱动都是相同的,(寄存器空间不同,但操作方法、逻辑相同)
就是主设备号相同,次设备号不同

[root@ZX20150811 /dev]# ls -l | grep ttySAC
crw-rw----    1 root     root      204,  64 Aug 12  2015 ttySAC0
crw-rw----    1 root     root      204,  65 Aug 12  2015 ttySAC1
crw-rw----    1 root     root      204,  66 Aug 12  2015 ttySAC2
crw-rw----    1 root     root      204,  67 Aug 12  2015 ttySAC3

串口:ttySAC,有4个串口,主设备号为204
现在要使用串口0
打开/dev/ttySAC0
配置波特率、数据位、停止位、校验位,就可以对串口读写操作.
关闭串口

驱动分类

字符设备

以字节为单位,进行顺序访问的设备。
例:串口、鼠标、键盘、按键、触摸屏、LED……
有个例外:LCD,可以随机访问,因为他是一块内存来实现显示。

实际工作中最常见的也是使用最多的,这类设备一般会在dev目录下有一个对应的设备文件。

块设备

以块为单位进行访问,(可以随机访问)的设备。
块:512字节
一次可以读写一块或多块。
例子:SD卡、U盘、硬盘、eMMC、Flash等存储类设备。

网络设备

网络通信设备
例:网卡、WiFi(无线网卡)

这类设备不同于字符设备和块设备,在dev目录下没有对应的设备文件,操作方法也不一样。

Linux字符设备

结构体赋值C99新标准

标准C99结构体赋值方法

struct miscdevice  
{
	.min
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值