导航:首页 > 操作系统 > linux设备驱动设备树

linux设备驱动设备树

发布时间:2022-08-19 11:26:36

linux设备树到底是什么该如何彻底理解

Linux这几年发展迅猛,势如破竹。 虽然内核 3.0版本,并没有什么重大的修改,不过,这已经预示着Linux将迎来一个新的时代。 《linux设备驱动程序》是基于2.6.10来写的。《深入理解linux内核》是基于2.6.11来写的。虽然2.6.x的内核,在主要内容上变化不大,不过已经有些显得跟不上内核更迭的速度了。 目前内核方面写的不错的书籍中,最新的算是《深入Linux内核架构》了,一个德国人写的。这本书是基于2.6.24写的。这本书在国外是作为教材用的,个人觉得,从自学的角度上讲,要比ULK更好,而且里面与最新的内核更贴近,看起来更舒服一些。 《linux device drivers》英文第三版序言里有这样一段话:“I'm excited by what I witness in the embedded arena, and I hope this text helps by doing more; but ideas are moving fast these days, and it's already time to plan for the fouth edition, and look for a fourth author to help.” 不难看懂,我就不翻译了。从这里可以看出,作者们已经做好找第四位合作者写第四版的准备了:) 万事都是需要与时俱进的。所以,这两本书都是会不断更新的。否则,就只能说明一点,出版商发现有更好的书籍替代他们了:) 不管怎么样,希望这些大部头的下一版的作者中,能看到中国开发者的名字~~

② linux的设备驱动一般分为几类各有什么特点

大致分为三类,字符驱动,块设备驱动,网络设备驱动。
字符设备可以看成是用字节流存取的文件

块设备则可以看成是可以任意存取字节数的字符设备,在应用上只是内核管理数据方式不同

网络设备可以是一个硬件设备,或者是软件设备,他没有相应的read write,它是面向流的一种特殊设备。

③ linux中内核使用设备树时,驱动加载的时候,device的数据怎么传给驱动

linux设备树驱动exynos4412怎么写
系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能:
1、对设备初始化和释放。
2、把数据从内核传送到硬件和从硬件读取数据。
3、读取应用程序传送给设备文件的数据和回送应用程序请求的数据。
4、检测和处理设备出现的错误。
在Linux操作系统下有三类主要的设备文件类型,一是字符设备,二是块设备,三是网络设备。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。
已经提到,用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都都有其文件属性(c/b),表示是字符设备还是块设备?另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分他们。设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序。
最后必须提到的是,在用户进程调用驱动程序时,系统进入核心态,这时不再是抢先式调度。也就是说,系统必须在你的驱动程序的子函数返回后才能进行其他的工作。如果你的驱动程序陷入死循环,不幸的是你只有重新启动机器了,然后就是漫长的fsck。
读/写时,它首先察看缓冲区的内容,如果缓冲区的数据未被处理,则先处理其中的内容。

④ Linux的模型

Linux设备模型一、sysfs文件系统:sysfs文件系统是Linux2.6内核引入的,它被看成是与proc、devfs和devpty等同类别的文件系统,sysfs文件系统也是一个虚拟文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似;sysfs文件系统把链接在系统上的所有设备和总线组织成一个分级的文件系统,它们可以由用户空间存取,并向用户空间导出内核数据结构以及它们的属性等信息.sysfs的一个目的就是展示设备驱动模型中各个组件的层次关系,其顶级目录包括:1、block:包含系统中所有的块设备;2、devices:包含系统中所有的设备,并根据设备挂载的总线类型组织成层次关系结构;3、bus:包含系统中所有的总线类型;4、drivers:包含系统内核中所有已经注册的设备驱动程序;5、class:包含系统中所有的设备类型;如,网卡设备、声卡设备、输入设备、输出设备,等等;二、设备模型:从整体上描述,大概模型就如下图所示:从图中可以看出,Linux设备模型就是"总线、设备、驱动、类"这四个概念之前的相互关系;这也是Linux2.6内核抽象出来的用于管理系统中所有设备的模型图;简单地描述设备模型的层次关系如下:1、驱动核心中可以注册多种类型的总线(bus_type);2、每一种类型的总线下面可以挂载许多设备(kset,device);3、每一种类型的总线可以使用很多设备驱动(kset,device_driver);4、每一个驱动程序可以管理一组设备;这种基本关系的建立源于实际系统中各种总线、设备、驱动、类结构的抽象;Linux设备模型中的总线、设备、驱动和类之间环环相扣的复杂关系可以满足内核日益发展的的需要;对智能电源管理、热插拔以及即插即用的支持要求也越来越高;

⑤ Linux网络设备驱动的结构

Linux网络设备驱动程序的体系结构从上到下可以划分为4层,依次为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层以及网络设备与媒介层,这4层的作用如下所示。
1)网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议是ARP,还是IP,都通过dev_queue_xmit() 函数发送数据,并通过netif rx ()函数接收数据。这一层的存在使得上层协议独立于具体的设备。
2)网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。
3)设备驱动功能层的各函数是网络设备接口层net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,它通过hard_start_ xmit ()函数启动发送操作,并通过网络设备上的中断触发接收操作。
4)网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络适配器和具体的传输媒介,网络适配器被设备驱动功能层中的函数在物理上驱动。对于Linux系统而言,网络设备和媒介都可以是虚拟的。

⑥ linux gpio设备驱动在哪

设备树有设备信息,gpio驱动可以根据设备树的信息自己写的

⑦ Linux网络设备驱动的具体结构

Linux网络设备驱动程序的体系结构从上到下可以划分为4层,依次为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层以及网络设备与媒介层,这4层的作用如下所示:
1)网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议是ARP,还是IP,都通过dev_queue_xmit() 函数发送数据,并通过netif rx ()函数接收数据。这一层的存在使得上层协议独立于具体的设备。
2)网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net device,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。
3)设备驱动功能层的各函数是网络设备接口层net_device数据结构的具体成员,是驱使网络设备硬件完成相应动作的程序,它通过hard_start_ xmit ()函数启动发送操作,并通过网络设备上的中断触发接收操作。
4)网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络适配器和具体的传输媒介,网络适配器被设备驱动功能层中的函数在物理上驱动。对于Linux系统而言,网络设备和媒介都可以是虚拟的。

⑧ linux驱动里面怎么读取device-tree信息

如何编写Linux设备驱动程序 回想学习Linux操作系统已经有近一年的时间了,前前后后,零零碎碎的一路学习过来,也该试着写的东西了。也算是给自己能留下一点记忆和回忆吧!由于完全是自学的,以下内容若有不当之处,还请大家多指教。

⑨ linux 什么时候加入设备树

Linux and the Device Tree

Linux内核设备树数据使用模型。

Open Firmware Device Tree (DT) 是一个数据结构,也是一种描述硬件的语言。准确地说,它是一种能被操作系统解析的描述硬件的语言,这样操作系统就不需要把硬件平台的细节在代码中写死。

从结构上来说,DT是一个树形结构,或者有名结点组成的非循环图,结点可能包含任意数量的有名属性,有名属性又可以包含任意数量的数据。同样存在一种机制,可以创建从一个结点到正常树形结构之外的链接。

从概念上讲,一套通用的使用方法,即bindings。Bindings定义了数据如何呈现在设备树中,怎样描述典型的硬件特性,包括数据总线,中断线,GPIO连接以及外设等。

尽可能多的硬件被描述从而使得已经存在的bindings最大化地使用源代码,但是由于属性名和结点名是简单字符串, 可以通过定义新结点和属性的方式很方便地扩展已经存在的bindings或者创建一个新的binding。在没有认真了解过已经存在的bindings的情况下,创建一个新的binding要慎之又慎。对于I2C总线,通常有两种不同的,互不相容的bindings出现,就是因为新的binding创建时没有研究I2C设备是如何在当前系统中被枚举的。

1. 历史

2. 数据模型
请参考Device Tree Usage章节
2.1 High Level View
必须要认识到的是,DT是一个描述硬件的数据结构。它并没有什么神奇的地方,也不能把所有硬件配置的问题都解决掉。它只是提供了一种语言,将硬件配置从Linux Kernel支持的board and device driver中提取出来。DT使得board和device变成数据驱动的,它们必须基于传递给内核的数据进行初始化,而不是像以前一样采用hard coded的方式。

观念上说,数据驱动平台初始化可以带来较少的代码重复率,使得单个内核映像能够支持很多硬件平台。

Linux使用DT的三个主要原因:
1) 平台识别 (Platform Identification)
2) 实时配置 (Runtime Configuration)
3) 设备植入 (Device Population)

2.2 平台识别
第一且最重要的是,内核使用DT中的数据去识别特定机器。最完美的情况是,内核应该与特定硬件平台无关,因为所有硬件平台的细节都由设备树来描述。然而,硬件平台并不是完美的,所以内核必须在早期初始化阶段识别机器,这样内核才有机会运行特定机器相关的初始化序列。

大多数情况下,机器识别是与设备树无关的,内核通过机器的核心CPU或者SOC来选择初始化代码。以ARM平台为例,setup_arch()会调用setup_machine_fdt(),后者遍历machine_desc链表,选择最匹配设备树数据的machine_desc结构体。它是通过查找设备树根结点的compatible属性并与machine_desc->dt_compat进行比较来决定哪一个machine_desc结构体是最适合的。

Compatible属性包含一个有序的字符串行表,它以确切的机器名开始,紧跟着一个可选的board列表,从最匹配到其他匹配类型。以TI BeagleBoard的compatible属性为例,BeagleBoard xM Board可能描述如下:
compatible = "ti,omap3-beagleboard", "ti,omap3450", "ti,omap3";
compatible = "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3";
在这里,”ti, omap3-beagleboard-xm”是最匹配的模型,"ti,omap3450"次之,"ti,omap3"再次之。

机敏的读者可能指出,Beagle xM也可以声明匹配"ti,omap3-beagleboard",但是要注意的是,板级层次上,两个机器之间的变化比较大,很难确定是否兼容。从顶层上来看,宁可小心也不要去声明一个board兼容另外一个。值得注意的情况是,当一个board承载另外一个,例如一个CPU附加在一个board上。(两种CPU支持同一个board的情况)

⑩ linux 设备树 从哪个版本开始

1、kernel最早加入设备树的历史得追溯到v2.6.23,从这个版本开始,在driver目录下多了一个of目录。当然,此时只是引入一些新想法而已。这距离linus大怒说出(2011年3月17日):this whole ARM thing is a f*cking pain in the ass,还早着。
2、于是从2011年3月开始,内核在PowerPC、ARM等体系里正式打算使用设备树。以ARM体系为例,加入设备树的版本就是v3.1,可以在arch/arm/boot/目录下看到dts目录的出现。

阅读全文

与linux设备驱动设备树相关的资料

热点内容
男作家的妻子出轨孙志 浏览:911
男主是鸭子女主是大老板 浏览:562
日批的小说 浏览:578
周香允参与过所有的电影 浏览:926
红羊出品有哪些 浏览:398
14路末班车电影陈明辉结局 浏览:977
金庸小说全集下载 浏览:792
美国电影主角和老师偷情 浏览:132
成人两性微电影 浏览:408
台湾三级的绝版老电影 浏览:161
电影双男主肉 浏览:986
重生之北美建国 浏览:129
每天工作4小时的程序员 浏览:462
香港学生犯罪电影 浏览:869
0855aa 浏览:506
哪里买小电影软件 浏览:857
无法连接服务器上不了怎么处理 浏览:251
android怎样读 浏览:617
螺纹底经算法 浏览:783
西门子plc编程官网 浏览:612