2829|4

6562

帖子

9

TA的资源

版主

楼主
 

《原子Linux驱动开发》基础阅读1:了解字符设备驱动开发 [复制链接]

        字符设备驱动开发是linux驱动开发中最基础的部分,重点学习字符设备驱动开发框架。
字符设备驱动是linux驱动中最基础的一类设备,驱动字符设备就是一个一个字节,按照字节流进行读写操作的设备,比如常见的IO操作,按键,SPI等,都是字符设备。这些设备的驱动就叫做字符设备驱动。
        那么,在应用程序中是如何调用驱动程序的呢?应用程序通过API函数调用相应的库,然后进入内核,在驱动程序中的相应的函数再进行具体的硬件设备动作:
        应用程序运行在用户空间,而驱动属于内核的一部分,因此驱动的运行内存实际上是应用对内核的操作,但是用户空间是不能直接对内核进行操作的,这个时候就通过系统调用的方法实现用户对内核空间的操作,应用程序通过c库中的具体函数,再通过系统调用对内核进行操作,实现具体的驱动的操作,所以说驱动的开发实际上是一个底层的开发。
Linux内核驱动开发,具体的就是实现驱动中最常见的read,write,open,close等等函数的实现,这些函数在Linux中有具体的函数结构体,要符合具体架构。
那么,字符设备驱动开发要遵循怎么样的一个步骤呢?我们在进行裸机开发的时候都要进行外设的初始化,linux驱动开发也不例外,而且需要按照其规定的框架进行编写。在linux驱动开发中,重点就是对其驱动框架的学习。
        Linux驱动有两种运行模式,一种是将驱动编译进Linux内核,一种是将驱动编译成模块,通过使用命令加载驱动模块。相对来说,使用编译成模块的方式有诸多优点,例如我们在调试的时候,只需要编译驱动代码即可,不用全部编译,整体的全部编译还是很费时间的,并且下载也很慢。调试阶段,建议将其编译成模块进行调试,在进行测试无误后可以写入到内核中。模块的操作就有加载和卸载两种操作方式,对于字符设备驱动而言,加载成功后需要注册字符设备,同时卸载成功后也要注销相应的字符设备。
        这个时候就要区分各个设备了,Linux每个设备都有一个设备号,设备号有主设备号和次设备号两部分组成,主设备号表示某一具体的驱动,次设备号表示使用这个驱动的各个设备。linux提供了一个名为dev_t的数据类型表示设备号,dev_t类型是一个无符号32位数据类型,也就是说其设备号的范围是0到4095,在进行设置时也不要超过这个范围。分配方式有静态分配和动态分配两种,一个是直接给他一个固定的号,另外一个是根据检索系统中使用的设备号,挑选一个没有使用的进行分配使用,动态分配法,可以避免冲突的发生。

最新回复

标记一下,后面用到了好学习学习,非常感谢分享,好人一生平安!   详情 回复 发表于 2024-6-6 17:58
点赞 关注
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引


回复
举报

7063

帖子

11

TA的资源

版主

沙发
 
版主这读得可真认,我读了一天,休息了一个星期了。

点评

纯纸版的书籍就是最好的催眠药,正好也是好好读一读为后面linux学习做储备  详情 回复 发表于 2024-3-10 20:35
 
 

回复

6562

帖子

9

TA的资源

版主

板凳
 
lugl4313820 发表于 2024-3-10 11:42 版主这读得可真认,我读了一天,休息了一个星期了。

纯纸版的书籍就是最好的催眠药,正好也是好好读一读为后面linux学习做储备

 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

1286

帖子

4

TA的资源

版主

4
 

控制器如果在linux系统上运行runtime,控制器的GPIO就需要用到字符设备驱动,非常关键

 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(中级)

5
 

标记一下,后面用到了好学习学习,非常感谢分享,好人一生平安!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表