张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,??戳此立抢??

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

收藏 人收藏
分享:

评论

相关推荐

Linux驱动学习笔记之触摸屏驱动

触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 当用触摸笔按下时,产生中断。 在中断处理函数处理函数中启动...
发表于 07-12 16:13 ? 531次 阅读
Linux驱动学习笔记之触摸屏驱动

Linux技术学习要点,您掌握了吗---初学者必看

1、如何做好嵌入式Linux学习前的准备?   要成为一名合格的嵌入式Linux工程师,就需要系统的学习软、硬件相关领域内的知识,...
发表于 07-10 16:39 ? 257次 阅读
Linux技术学习要点,您掌握了吗---初学者必看

【DIY】制作5V车灯控制器

DIY&分享—GravityShare 有看过之前的视频应该有了解到曾DIY改造过一款USB接口作为电源输入的电动车灯,车灯...
发表于 07-01 19:23 ? 348次 阅读
【DIY】制作5V车灯控制器

智能手机拆解及核心硬件分析

发表于 06-28 17:25 ? 254次 阅读
智能手机拆解及核心硬件分析

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

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

四轴飞行器炼成记——我的自制小四轴之路

四轴飞行器,又称四旋翼飞行器,简称四轴、四旋翼。四轴飞行器的四个螺旋桨与电机直接相连,通过改变电机转速获得旋转机身的力,...
发表于 06-11 14:21 ? 818次 阅读
四轴飞行器炼成记——我的自制小四轴之路

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

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

【DIY】改造电动车灯由5V移动电源供电

? DIY&分享—GravityShare 上期拆解的一款电动车灯,打算改装成USB母座接口作为电源控制线的输入端,方便后期安...
发表于 06-08 16:01 ? 247次 阅读
【DIY】改造电动车灯由5V移动电源供电

用树莓派制作掌上游戏机的方法

树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个....
的头像 电子DIY视频 发表于 05-30 06:19 ? 443次 观看
用树莓派制作掌上游戏机的方法

用树莓派做个自动调酒机

树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个....
的头像 电子DIY视频 发表于 05-30 06:18 ? 238次 观看
用树莓派做个自动调酒机

用Arduino自制通过语音控制的智能小车

Arduino本质上是一种电子工具,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器....
的头像 电子DIY视频 发表于 05-30 06:17 ? 399次 观看
用Arduino自制通过语音控制的智能小车

自制Arduino指纹锁的方法与过程介绍

Arduino本质上是一种电子工具,它可以被用来制作许多有趣的创意电子制作,比如电子时钟、四轴飞行器....
的头像 电子DIY视频 发表于 05-30 06:12 ? 698次 观看
自制Arduino指纹锁的方法与过程介绍

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

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

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

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

实现在纸板上玩赛车游戏

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

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

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

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

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

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

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

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

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

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

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

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

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

如何制作一架RC飞机

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

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

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

自制心形蓝牙音箱的方法

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

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

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

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

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

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

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

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

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

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

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

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

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

用纸板自制捕鼠器的步骤

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

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

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

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

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

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

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

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

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

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

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

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

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

智能语音系统的快速入门

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

自制一个现实版的游戏机

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

简易可乐机的制作及步骤

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

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

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

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

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

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

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

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

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

如何用废纸板制作踩滑板

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

【DIY】电磁炉改装感应加热设备

最近在废品店淘到一个己拆了一半的电磁炉机芯,由于没有它外面的接口板,所以决定改装一下。在某宝购买了豪宇机电生产的1103主...
发表于 05-20 17:03 ? 782次 阅读
【DIY】电磁炉改装感应加热设备

DIY项目分享:用STM32单片机搞定四旋翼无人机飞控

尝试制作这个四旋翼飞控的过程,感触颇多,整理了思绪之后,把重要的点一一记下来; 这个飞控是基于Stm32,整合了MPU6050...
发表于 05-18 08:00 ? 1437次 阅读
DIY项目分享:用STM32单片机搞定四旋翼无人机飞控

儿时的梦想---DIY全分立FM收音机

昨天,学校里几个玩得要好的朋友又聚在了一起,聊起了这些年来各自经历,总觉得我们应该可以聚一起做些什么的,功放、电源、传...
发表于 05-16 21:13 ? 3856次 阅读
儿时的梦想---DIY全分立FM收音机

100多例DIY电路图经典制作资料(国外版本)

发表于 04-19 14:13 ? 770次 阅读
100多例DIY电路图经典制作资料(国外版本)