95zz44

电子发烧友网 2019-07-11 10:43 次阅读

一开接触设备树,我就不知道设备树与驱动的关系,设备树是在内核3.0以后才有的。不过3.0以前的和3.0以后的驱动其实变化不大。

驱动的开发方法可以分为三种:传统方法,总线方法,设备树方法。这篇文章围绕点亮一颗LED来说明这三种方法。

驱动流程分为5个部分:

        

1、分配  

               

2、设置  

               

3、注册file_operation 

               

4、入口  

               

5、出口

一、传统方法

传统方法就是简单粗暴方法,就是将IO设置,驱动放在同一个文件(drv.c)。

drv.c:定义引脚信息

drv.c:驱动中的open函数

drv.c:驱动中的close函数

drv.c:file_operations结构体

为上层应用提供open(),write(),read(),close()。

drv.c:入口函数-申请设备号,创建设备节点

其中register_chrdev():申请设备号。

class_create():创建一个设备类。

device_create():创建一个设备节点,路径:/dev/led

drv.c:出口函数-注销设备,注销设备节点

其中unregister_chrdev():通过主设备号,注销设备号

      

device_destroy():注销设备节点

       

class_destroy():注销设备类

传统方法:

优点:操作简单

缺点:不易扩展,每次修改需要重新编译驱动

二、总线方法

在kernel 3.0之前都是采用总线的方法实现驱动与设备之间的联系。把驱动跟设备分开。

其主要理解几个结构体:

①跟设备有关的结构体:structplatform_device{};

②跟驱动有关的结构体:structplatform_driver{};

    

还要理解其中包含的两个结构体:

-> struct device_driver{};  

    

-> structplatform_device_id{};

要记住一句话:在match的时候:优先匹配id_table的name,不匹配。再匹配driver的name

其中

dev.c:进行设备的引脚定义,定义resouce结构体,供驱动获取资源。

dev.c:注册platform_device结构体

dev.c:入口函数-注册设备

其中platform_device_register():在总线上注册一个设备。

dev.c:出口函数-注销设备

其中platform_device_unregister():在总线上注销一个设备。

对于驱动来说,需要稍微修改一下:

drv.c:增加probe函数和remove函数,其中:

probe()函数:充当传统方法的init函数

remove()函数:充当传统方法的exit函数

platform_get_resource():获取设备中资源,比如引脚定义。

drv.c :入口函数和出口函数修改

将传统方法的file_operations{};结构体改为platform_driver{};结构体

其中platform_driver_register():向总线注册一个设备。

platform_driver_unregister():向总线注销一个设备。

platform总线中的match()函数是设备与驱动匹配的函数,我们看看这个函数的实现,就是匹配设备与驱动的名字一不一致。函数如下:

总线方法:

优点:易扩展

缺点:代码冗余多,需要重新编译设

三、设备树方法

       

在kernel 3.0以及之后的版本,都是采用设备树的方法实现驱动与设备之间的联系。将总线方法的设备改为设备树实现,解决了总线方法中代码冗余多的问题。

设备树方法只需要在总线方法的基础上稍微修改一下。

dts:添加设备节点:

drv: probe修改,其中通过函数of_property_read_s32()获取设备树的资源。

设备树:

优点:易扩展,不需要重新编译(替换设备树),无冗余代码

缺点:稍微复

最多技术干货内容请稳步到“电子发烧友网”公众号,回复资料即可免费获取一份技术资料,在这里每天可以获取最专业、最前沿的电子技术。

原文标题:【分享】DIY爱好者倒腾LED时,总结了几点Linux驱动开发方法

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

【DIY赏析】恒流恒压可调电源

原材料:19V4.7A剪线电源一个,3r33横流恒压DC-DC板子一个,10k多圈电位器两个(每个3块钱,实测电阻在0.6欧--9.7欧可调)...
发表于 09-29 10:50 788次 阅读
【DIY赏析】恒流恒压可调电源

【项目分享】教你用Arduino、Micro SD制作一个简单的音乐播放器

在本项目中,我们来看一下如何用Arduino,Micro SD卡读卡器来制作一个简单的音乐播放器。完成后,你可以用它来播放储存在SD...
发表于 09-27 17:20 1191次 阅读
【项目分享】教你用Arduino、Micro SD制作一个简单的音乐播放器

【DIY赏析】0-35V 0-5A 可调稳压恒流电源

这是一款很经典的电源可调稳压恒流0-35V 0-5A,本次做的是双面板子 翻箱倒柜,再加拆机和购买,好不容易才把元件凑齐:&nb...
发表于 09-27 11:42 741次 阅读
【DIY赏析】0-35V 0-5A 可调稳压恒流电源

小身材大智慧,树莓派作品集锦,总有一款适合你

树莓派自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功...
发表于 09-26 15:58 1057次 阅读
小身材大智慧,树莓派作品集锦,总有一款适合你

【项目分享】教你如何基于Arduino UNO设计声控智能家居系统

智能家居的话题仍在不断炒热,它能帮助人们减少人力需求与错误,同时还能提升效率。在家庭自动化系统的帮助下,我们可以控制不同...
发表于 09-25 18:12 756次 阅读
【项目分享】教你如何基于Arduino UNO设计声控智能家居系统

高颜值的LED设计作品资料,教你设计一场专属自己的灯光展!

从心形灯到光立方,从光立方到广州塔,小小LED却能变身成为惊艳的灯光作品,有颜值更有研值,看似简单的LED却散发出惊人的...
发表于 09-25 15:27 1387次 阅读
高颜值的LED设计作品资料,教你设计一场专属自己的灯光展!

【DIY赏析】自制多路直流电源(附原理图)

DIY一个多路直流稳压电源原理图如下:其中有78xx,79xx,LM317,LM337等系列,都是很常用的电源电压。DIY这样的一个电源方...
发表于 09-25 13:51 575次 阅读
【DIY赏析】自制多路直流电源(附原理图)

这款语音套件与micro bit结合起来,看一下小车效果

采用亚博智能的Micro bit智能小车套件为载体,搭载了庆科MXPVT-VBS7100语音套件,接入了阿里云平台,用户可以通过语音指...
发表于 09-24 20:31 1284次 阅读
这款语音套件与micro bit结合起来,看一下小车效果

【开发板】树莓派配件大全,树莓派必要配件清单!【 嵌入式开发工程师、创客必备】

最新款的树莓派4已经发布,为方便嵌入式&单片机开发工程师、创客、教育用户更方便了解和使用树莓派4及DIY周边的一些材料、配件...
发表于 09-24 16:46 345次 阅读
【开发板】树莓派配件大全,树莓派必要配件清单!【  嵌入式开发工程师、创客必备】

TPYBoard接收金属接近开关的输出信号来DIY金属检测仪

上面我们将接近开关线接好后,TPYboard开发板即可通过Y1针脚收集金属开关传递过来的数字信号,我....
的头像 丫丫119 发表于 09-24 07:09 941次 阅读
TPYBoard接收金属接近开关的输出信号来DIY金属检测仪

精选7册电子制作指南,近千种电子电路,让你停不下来

本系列指南语言深入浅出、通俗易懂,采用实物照片、插画和文字相结合的方式,把制作项目需要准备的材料、制作过程、如何使用等介...
发表于 09-16 15:04 1520次 阅读
精选7册电子制作指南,近千种电子电路,让你停不下来

吸音板的制作教程

 我只是在面板上使用了一块半绝缘材料,如果您决定使用不同的尺寸,可以使用更少或更多。
的头像 39度创意研究所 发表于 09-03 14:37 484次 阅读
吸音板的制作教程

可编程无人机的无限种炫酷玩法,让你脑洞大开!

随着我们生活水平的提升,对孩子教育问题的重视和投入也越来越不计成本,但也越来越多的孩子玩一个玩具的持久性时间也
的头像 创客火无人机 发表于 08-30 15:58 945次 阅读
可编程无人机的无限种炫酷玩法,让你脑洞大开!

魅族LIVE被官方宣称是“监听类”的调音,果然所言非虚

有时候想买一条满意的耳机,确实是每一个成熟的发烧友梦寐以求的需求点,但是随着音频行业的不断的发展,产....
的头像 工控帮 发表于 08-29 17:05 815次 阅读
魅族LIVE被官方宣称是“监听类”的调音,果然所言非虚

i5-9400F接口齐全、还便宜,谁说B360M只有迫击炮?

对于时下的DIY装机市场来说,i5-9400F应该算是家用娱乐和一般游戏主机里面比较热门的一款CPU....
的头像 工控帮 发表于 08-23 11:13 1400次 阅读

回顾DIY硬件超频的历史 为什么现在变得越来越小众了

超频,从DIY诞生那一刻起就一直伴随着它,民间超频一开始的初衷是找到产品漏洞突破厂家的限制,花更少钱....
的头像 39度创意研究所 发表于 06-17 09:19 901次 阅读
回顾DIY硬件超频的历史 为什么现在变得越来越小众了

Maker Media关门,Maker Faire未来将何去何从?

6月8日,《MAKE》杂志和Maker Faire创客嘉年华的主办方Maker Media裁掉了所有....
的头像 荷叶塘 发表于 06-11 09:07 2728次 阅读
Maker Media关门,Maker Faire未来将何去何从?

用Arduino实现智能垃圾桶的制作

Arduino本质上是一种电子工具,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器....
的头像 电子DIY视频 发表于 05-30 06:07 1442次 观看
用Arduino实现智能垃圾桶的制作

实现在纸板上玩赛车游戏

纸板上也能玩出精彩的赛车游戏?这波操作666!
的头像 电子DIY视频 发表于 05-30 06:06 507次 观看
实现在纸板上玩赛车游戏

汽车电子的静电浪涌防护解决方案

浪涌也叫突波,顾名思义就是超出正常工作电压的瞬间过电压。本质上讲,浪涌是发生在仅仅几百万分之一秒时间....
的头像 电子DIY视频 发表于 05-30 06:04 521次 观看
汽车电子的静电浪涌防护解决方案

天猫精灵智能音箱的拆解过程

智能音箱,是一个音箱升级的产物,是家庭消费者用语音进行上网的一个工具,比如点播歌曲、上网购物,或是了....
的头像 电子DIY视频 发表于 05-30 06:00 1515次 观看
天猫精灵智能音箱的拆解过程

使用Arduino让玻璃酒杯发出声音

Arduino本质上是一种电子工具,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器....
的头像 电子DIY视频 发表于 05-27 06:57 431次 观看
使用Arduino让玻璃酒杯发出声音

用Arduino制作自动售货机的方法

自动售货机(Vending Machine,VEM)是能根据投入的钱币自动付货的机器。自动售货机是商....
的头像 电子DIY视频 发表于 05-27 06:53 843次 观看
用Arduino制作自动售货机的方法

使用冷却器与其他器件自制迷你小冰箱

使用冷却器和一堆常用的硬件,就能在家做一个迷你小冰箱,超简单!
的头像 电子DIY视频 发表于 05-27 06:36 493次 观看
使用冷却器与其他器件自制迷你小冰箱

用Arduino制作逗猫神器的方法及过程介绍

Arduino本质上是一种电子工具,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器....
的头像 电子DIY视频 发表于 05-27 06:33 695次 观看
用Arduino制作逗猫神器的方法及过程介绍

如何制作一架RC飞机

如何制作一个RC飞机?
的头像 电子DIY视频 发表于 05-27 06:30 696次 观看
如何制作一架RC飞机

专为Firefly 8s量身定制的三轴云台

三轴增稳云台是一种为实现目标物体姿态稳定控制的装置,换言之,就是使物体可以在运动中保持其姿态的静止。
的头像 电子DIY视频 发表于 05-27 06:24 519次 观看
专为Firefly 8s量身定制的三轴云台

自制心形蓝牙音箱的方法

DIY高逼格心形蓝牙音箱,理工男玩起浪漫才是真无敌~
的头像 电子DIY视频 发表于 05-27 06:19 524次 观看
自制心形蓝牙音箱的方法

自动喂猫器的制作方法介绍

仅花不到15美元,就可以自制一个自动喂猫器了!当猫咪按下按钮,就可以愉快的开吃了
的头像 电子DIY视频 发表于 05-27 06:17 560次 观看
自动喂猫器的制作方法介绍

用PVC管自制无叶风扇的方法

无叶风扇也叫空气增倍机,它能产生自然持续的凉风,因无叶片,不会覆盖尘土或伤到儿童插进的手指。更奇妙的....
的头像 电子DIY视频 发表于 05-27 06:16 1231次 观看
用PVC管自制无叶风扇的方法

自制LED炫酷镜子的过程介绍

LED关闭的时候,就是一块普通的镜子。打开LED后,出现炫酷的效果,让镜中人如处太虚幻境!
的头像 电子DIY视频 发表于 05-27 06:10 729次 观看
自制LED炫酷镜子的过程介绍

采用LED灯和废旧喇叭自制玻璃杯蓝牙扬声器

用LED灯、废旧喇叭自制玻璃杯蓝牙扬声器!
的头像 电子DIY视频 发表于 05-27 06:09 632次 观看
采用LED灯和废旧喇叭自制玻璃杯蓝牙扬声器

利用Arduino和可乐罐自制迷你架子鼓

感谢基于Arduino的魔法键盘,让迷你架子鼓有真实的乐器声音效果,
的头像 电子DIY视频 发表于 05-27 06:08 822次 观看
利用Arduino和可乐罐自制迷你架子鼓

采用旧鼠标和瓦楞纸制作PS4炫酷方向盘

虽然结构简单,但是却可以在游戏中发挥同其他游戏方向盘一样的威力~
的头像 电子DIY视频 发表于 05-27 06:07 430次 观看
采用旧鼠标和瓦楞纸制作PS4炫酷方向盘

用纸板自制捕鼠器的步骤

用纸板做了吃豆人版捕鼠神器,妈妈再也不用担心我抓不到老鼠了!
的头像 电子DIY视频 发表于 05-27 06:05 657次 观看
用纸板自制捕鼠器的步骤

用纸板制作三色冰淇淋机的过程介绍

硬纸板做出冰淇淋机,简直太创意!
的头像 电子DIY视频 发表于 05-27 06:05 467次 观看
用纸板制作三色冰淇淋机的过程介绍

利用降压电路进行制作摩托车手机充电器

一般我们的摩托车或汽车电池是12伏,但充电我们的手机我们只需要5伏,所以我们将作出一个简单的电路,给....
的头像 电子DIY视频 发表于 05-27 06:03 874次 观看
利用降压电路进行制作摩托车手机充电器

如何自制超声波智能导盲杖

这款看似简单的手杖,通过发射超声波来扫描周围环境,通过超声波的反射来检测障碍物,以确保视力障碍人士的....
的头像 电子DIY视频 发表于 05-27 06:01 563次 观看
如何自制超声波智能导盲杖

使用一次性餐盘和四个马达制作无人机

超棒的玩具,它使用4个无芯马达,而使用视频中使用的所有部件,也可以制造无人机。
的头像 电子DIY视频 发表于 05-24 06:37 677次 观看
使用一次性餐盘和四个马达制作无人机

采用Arduino和木板自制指纹保险箱

用木板制作带指纹的智能保险箱,只有正确的指纹才打得开哦!
的头像 电子DIY视频 发表于 05-24 06:34 624次 观看
采用Arduino和木板自制指纹保险箱

用Arduino和纸板箱自制打地鼠游戏机

在家里用Arduino、纸板箱和一些街机按钮,制作一款非常棒打地鼠的游戏~
的头像 电子DIY视频 发表于 05-24 06:30 962次 观看
用Arduino和纸板箱自制打地鼠游戏机

智能语音系统的快速入门

智能语音,即智能语音技术,是实现人机语言的通信,包括语音识别技术(ASR)和语音合成技术(TTS)。
的头像 电子DIY视频 发表于 05-24 06:29 661次 观看
智能语音系统的快速入门

自制一个现实版的游戏机

游戏过程非常简单,操控一只鸟穿越过一片水管,途中不能碰到水管,也不能掉下去。来,动手DIY起来吧!
的头像 电子DIY视频 发表于 05-24 06:24 1393次 观看
自制一个现实版的游戏机

利用Arduino和废纸板制作键盘吉他

在这个视频中,我们将制作一个KiTar,用一个纸板和Arduino,很简单。只要按照步骤,就能轻松完....
的头像 电子DIY视频 发表于 05-24 06:22 597次 观看
利用Arduino和废纸板制作键盘吉他

在Arduino开放平台上用随机数字生成器控制眼睛动作

随机数字生成器计算每只眼睛的新位置,给人一种自然又可怕的眼睛动作~
的头像 电子DIY视频 发表于 05-24 06:20 490次 观看
在Arduino开放平台上用随机数字生成器控制眼睛动作

在Arduino开发平台上自制色彩变幻的骷髅镜

作为万圣节的礼物,也是相当棒的~
的头像 电子DIY视频 发表于 05-24 06:16 648次 观看
在Arduino开发平台上自制色彩变幻的骷髅镜

在FPV无人机上加装无线摄像回传设备

FPV是无人机的一种操作方式,在无人机上加装无线摄像回传设备,操作人员可以在地面通过头盔看到无人机飞....
的头像 电子DIY视频 发表于 05-24 06:13 597次 观看
在FPV无人机上加装无线摄像回传设备

通过采用ESP826开发套件制作唤醒灯

ESP8266制作唤醒灯:模拟日出光线,花式叫你起床!
的头像 电子DIY视频 发表于 05-24 06:09 489次 观看
通过采用ESP826开发套件制作唤醒灯

利用塑料瓶盖自制头戴式立体声耳机的步骤

塑料瓶盖改造的头戴式耳机,实用又简单!
的头像 电子DIY视频 发表于 05-24 06:04 679次 观看
利用塑料瓶盖自制头戴式立体声耳机的步骤

可航拍的mini四轴飞行器的制作方法与步骤介绍

四轴飞行器(Quadrotor)是一种多旋翼飞行器。四轴飞行器的四个螺旋桨都是电机直连的简单机构,十....
的头像 电子DIY视频 发表于 05-23 06:34 998次 观看
可航拍的mini四轴飞行器的制作方法与步骤介绍

利用ESP8266 WiFi模块打造科进行遥控的圣诞之星

用ESP8266 WiFi模块、WS2812、LED(“NeoPixel”)、木材和铝制造了几颗LE....
的头像 电子DIY视频 发表于 05-23 06:31 685次 观看
利用ESP8266 WiFi模块打造科进行遥控的圣诞之星

用Arduino自制防猫神器的方法及步骤

引擎盖上总是被猫挠出很多细小的划痕?Arduino、传感器、喇叭……简单几个装置,驱猫神器就完成啦!
的头像 电子DIY视频 发表于 05-23 06:30 1013次 观看
用Arduino自制防猫神器的方法及步骤

鸡蛋孵化器的自制过程介绍

孵化器是原指人工孵化禽蛋的设备,后引入经济领域,成为一种新型的社会经济组织。
的头像 电子DIY视频 发表于 05-23 06:28 2615次 观看
鸡蛋孵化器的自制过程介绍

通过采用废可乐瓶和泡沫板制作水上飞机

水上飞机:是指能在水面上起飞、降落和停泊的飞机,简称水机。主要用于海上巡逻、反潜、救援和体育运动、旅....
的头像 电子DIY视频 发表于 05-23 06:27 738次 观看
通过采用废可乐瓶和泡沫板制作水上飞机

简易可乐机的制作及步骤

木板(可以用瓦楞纸代替)、气泵小马达、微动开关,电线外加塑料管,准备好这些材料,我们一起做个简易可乐....
的头像 电子DIY视频 发表于 05-23 06:21 1354次 观看
简易可乐机的制作及步骤

用硬纸板搭建模拟驾驶座舱的方法与制作过程

用硬纸板搭建一个模拟驾驶座舱,让你在家就能体验赛车游戏的刺激感!
的头像 电子DIY视频 发表于 05-23 06:19 772次 观看
用硬纸板搭建模拟驾驶座舱的方法与制作过程

通废旧硬纸板和塑料瓶盖搭建mini坦克的制作过程

男孩纸都想拥有的童年玩具,武力值超强的mini坦克,用废旧硬纸板和塑料瓶盖就可以搭建一个哦!
的头像 电子DIY视频 发表于 05-23 06:17 1281次 观看
通废旧硬纸板和塑料瓶盖搭建mini坦克的制作过程

如何让BB8可进行说话与活动

不论你是星球大战迷,还是乐高迷,这个让BB8能说活动的教程你都值得拥有!
的头像 电子DIY视频 发表于 05-23 06:14 749次 观看
如何让BB8可进行说话与活动

基于Arduino的钟琴机器人的制作方法

这个基于Arduino的钟琴机器人,通过控制琴棒程序化地敲击钟琴的钢片,以此产生触动人心的旋律!
的头像 电子DIY视频 发表于 05-23 06:07 848次 观看
基于Arduino的钟琴机器人的制作方法

如何用废纸板制作踩滑板

纸板做的滑板玩具看似普通,却非常有趣和创意!
的头像 电子DIY视频 发表于 05-23 06:05 947次 观看
如何用废纸板制作踩滑板

九五至尊娱乐官网