树莓派驱动从认识框架到写驱动

本文详细介绍了驱动开发的基础概念,包括驱动的重要性,设备号的作用以及基于内核驱动框架的编写流程,涵盖了从修改内核代码到模块编译和实际应用的完整步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​​​​​​参考文章:详细到吐血 —— 树莓派驱动开发入门:从读懂框架到自己写驱动_树莓派 编译驱动-优快云博客

目录

一、对驱动的认识

为什么要学习驱动?    

设备号的作用

二、基于内核驱动框架编写驱动代码流程

1、根据上层需求,修改内核驱动代码

2、手动生成设备

3、内核模块编译

(1)、修改Makefile

(2)、进行模块编译

(3)、驱动测试步骤


一、对驱动的认识

首先百度百科给的这个定义比较专业化,并不容易理解,还是不明白驱动到底是个啥玩意。
    百度百科:驱动,计算机软件术语,是指驱动计算机里软件的程序。驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,其中包
含有关硬件设备的信息。此信息能够使计算机与相应的设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动
程序,计算机中的硬件就无法工作
 

为什么要学习驱动?    

从我的学习过程来说,比如学习51单片机时,我们要学习许多外设开发,这时我们就要写相关驱动代码,让外设能正常跑起来,如点亮LED灯等等,完成相应功能。在树莓派开发简单是因为有厂家提供的wiringPi库,实现超声波,实现继电器操作,做灯的点亮…都非常简单。但要自己写对应的驱动代码难度非常大,用树莓派学习的目的不仅是为是体验其强大便捷的wiringPi库,更要通过树莓派学会linux内核开发,驱动编写等,做一个属于自己的库。

设备号的作用

1.区分硬件设备

linux一切皆为文件,其设备管理同样是和文件系统紧密结合。在目录/dev下都能看到鼠标,键盘,屏幕,串口等设备文件,硬件要有相对应的驱动,那么open怎样区分这些硬件呢?

依靠文件名与设备号。在/devls -l可以看到

 

前面的10 、5、29那一列是主设备号,后一列是次设备号。

设备号又分为:主设备号用于区别不同种类的设备;次设备号区别同种类型的多个设备。 

索引驱动在驱动链表中的位置

内核中存在一个驱动链表,管理所有设备的驱动。 驱动开发无非以下两件事:

  • 编写完驱动程序,加载到内核
  • 用户空间open后,调用驱动程序

驱动插入到链表的位置(顺序)由设备号检索。

二、基于内核驱动框架编写驱动代码流程

1、根据上层需求,修改内核驱动代码

所谓框架,就是定死的东西,基本的语句必须要有,少一个都不行。

虽然有这么多的代码,但核心运行的就两

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值