发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》

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

电子发烧友网 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,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

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

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

DIY必备技能:玩好蓝牙技术很关键+18个详细案例

经过几年的发展,蓝牙的应用已经很普遍,电脑、手机、汽车等等都有用到,蓝牙使短距离的通信变得简单,能实现的功能也渐渐变得复...
发表于 09-12 17:08 2026次 阅读
DIY必备技能:玩好蓝牙技术很关键+18个详细案例

时间温度控制系统DIY制作分享!

主要功能:         万年历、 闹铃 、密码锁、篮球器、计算器、温度计、 温度控制、 键盘锁 、系...
发表于 09-10 10:56 228次 阅读
时间温度控制系统DIY制作分享!

吸音板的制作教程

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

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

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

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

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

硬件新手的入门手册——68例DIY硬件设计电路图详解(彩图+文字解析)

《电子懒人的基础硬件电路图讲解》68例,包含了简单基础的单元电路图。积累这些基础的电路图,对分析一个复杂的电路很有帮助。因...
发表于 08-26 15:51 1187次 阅读
硬件新手的入门手册——68例DIY硬件设计电路图详解(彩图+文字解析)

关于汇纳玩具挖机的遥控定时改装

遥控玩具挖机,在商业游乐园投放,改装成记时遥控,微信扫码支付限时玩,这个一般都要改装或者增加什么电子件、结构件。 ...
发表于 08-23 16:44 438次 阅读
关于汇纳玩具挖机的遥控定时改装

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

对于时下的DIY装机市场来说,i5-9400F应该算是家用娱乐和一般游戏主机里面比较热门的一款CPU....
的头像 工控帮 发表于 08-23 11:13 679次 阅读
i5-9400F接口齐全、还便宜,谁说B360M只有迫击炮?

【内容推荐第2期】参与社区精选内容讨论,积分奖品双重奖励~

电子发烧友不仅为大家提供海量的资料,更希望每位用户能一起交流技术~ 现每天特选社区精华内容,有精选话题、电路问答和优质资料...
发表于 08-21 17:24 364次 阅读
【内容推荐第2期】参与社区精选内容讨论,积分奖品双重奖励~

DIY达人必备的作品集——5000个电子制作、54个传感器电子DIY、25个创意DIY

54个传感器电子DIY介绍: 《传感器电子制作DIY》(54例)将介绍运用各种传感器感知和测量光、声、热、气等物理量以及振动...
发表于 08-21 15:51 1136次 阅读
DIY达人必备的作品集——5000个电子制作、54个传感器电子DIY、25个创意DIY

LCD1602 24c02红外解码DIY分享!

上次自己学习模仿的。 (35.92 KB )
发表于 08-20 23:05 156次 阅读
LCD1602 24c02红外解码DIY分享!

DIY一个基于stm32的智能小车,看看有哪些主要设计方式?

教你DIY一个基于stm32的两轮平衡小车, 主要有几个步骤:需求分析——元件选型——原理图设计——PCB设计——焊接调试。 有...
发表于 08-19 09:54 790次 阅读
DIY一个基于stm32的智能小车,看看有哪些主要设计方式?

一位德州仪器工程师的坚持与梦想

出生在斐济群岛的Lalindra “Lali” Jayatilleke目前是德州仪器(TI)的一名应用工程师。由于年少时在缺乏现代化便利设施的...
发表于 07-31 04:45 346次 阅读
一位德州仪器工程师的坚持与梦想

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

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

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

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

利用Arduino平台制作一个电子宠物

Arduino本质上是一种电子工具,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器....
的头像 电子DIY视频 发表于 05-30 06:09 478次 观看
利用Arduino平台制作一个电子宠物

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

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

实现在纸板上玩赛车游戏

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

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

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

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

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

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

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

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

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

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

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

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

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

如何制作一架RC飞机

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

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

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

自制心形蓝牙音箱的方法

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

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

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

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

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

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

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

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

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

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

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

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

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

用纸板自制捕鼠器的步骤

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

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

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

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

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

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

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

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

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

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

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

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

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

智能语音系统的快速入门

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

自制一个现实版的游戏机

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

简易可乐机的制作及步骤

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

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

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

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

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

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

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

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

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

如何用废纸板制作踩滑板

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