学习
实践
活动
专区
工具
TVP
写文章

linux 设备

linux 设备 ---- 参考地址 http://blog.csdn.net/green1900/article/details/45646095 http://www.cnblogs.com 需要注意的是,设备对于可热插拔的热备不进行具体描述,它只描述用于控制该热插拔设备的控制器 2.1设备的组成 设备包含了DTC(device tree compiler) , DTS(device 设备用树状结构描述设备信息,它有以下几种特性 1. unit_address一般是设备地址,用来唯一标识一个节点 Linux中的设备还包括几个特殊的节点,比如chosen,chosen节点不描述一个真实设备,而是用于firmware传递一些数据给OS 这样就可以实现类似函数调用的效果 3.KEY 在设备中,键值对是描述属性的方式,比如,Linux驱动中可以通过设备节点中的”compatible”这个属性查找设备节点 inux设备语法中定义了一些具有规范意义的属性

70620

Linux设备语法详解

概念 Linux内核从3.x开始引入设备的概念,用于实现驱动代码与设备信息相分离。在设备出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。 我这里用`Linux4.8.5源码自带的dm9000网卡为例来分析设备的使用和移植。 下面的例子中就是直接引用了dtsi中的一个节点,并向其中添加/修改新的属性信息 KEY 在设备中,键值对是描述属性的方式,比如,Linux驱动中可以通过设备节点中的"compatible"这个属性查找设备节点 Linux设备语法中定义了一些具有规范意义的属性,包括:compatible, address, interrupt等,这些信息能够在内核初始化找到节点的时候,自动解析生成相应的设备信息。 ARM设备专题 设备(上) Linux ARM设备专题 设备(下)

2K60
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux设备是什么?

    众所周知操作系统一直在不断的更新和发展,而在Linux驱动的架构上面也是不断的进步和完善。在早期的Linux内核和ARM架构中并没有采用设备。 在图片中,的主干就是系统总线,IIC控制器、SPI控制器等都是接到系统主线的分支上的。通过DTS这个文件描述设备信息是有相关的语法规则的,并且在Linux内核中只有3.x版本以后的才支持设备。 未使用设备设备匹配方法 在没有使用设备之前,uboot会向Linux内核传递一个叫machine id的值,machine id也就是设备ID,告诉Linux内核自己是一个什么设备 使用设备设备匹配方法 当Linux内核引入设备以后就不在使用MACHINE_START了,而是换为了DT_MACHINE_START。 说明引入了设备以后就不会根据machine id来检查Linux 内核是否支持这个设备

    24020

    Linux设备(Device Tree)机制

    设备(Device Tree)基本概念及作用 2. 设备的组成和使用 2.1. DTS和DTSI 2.2. DTC 2.3. DTB 2.4. Bootloader 3. 另外,设备对于可热插拔的热备不进行具体描述,它只描述用于控制该热插拔设备的控制器。 设备的主要优势:对于同一SOC的不同主板,只需更换设备文件.dtb即可实现不同主板的无差异支持,而无需更换内核文件。 注:要使得3.x之后的内核支持使用设备,除了内核编译时需要打开相对应的选项外,bootloader也需要支持将设备的数据结构传给内核。 2. Header 在\kernel\include\linux\of_fdt.h文件中有相关定义 4.2.device-tree structure 设备树结构块是一个线性化的结构体,是设备的主体,以节点的形式保存了主板上的设备信息

    36030

    Linux笔记(22)| 设备初探

    今天跟大家分享的是设备设备Linux3.x以后的版本才引入的,设备用于描述一个硬件平台的板级细节。 如果硬件资源发生了改变,我们只需要修改设备文件就行了,但是这样还不够好,如果有非常多的设备,就要写非常多的设备文件,这些文件非常庞大,导致Linux内核非常臃肿。 在Linux内核里有设备文件,路径是 源码目录/arch/arm/boot/dts/imx6ull-seeed-npi.dts 来看一下设备文件的格式: Devicetree node格式: [ 第二步,编译设备 编译内核时会自动编译设备,但是编译内核很耗时,所以我们推荐使用如下命令只编译设备。 以上就是我们今天设备的所有内容。总结一下,主要是讲了为什么要有设备设备文件的结构是怎样的,如何从设备文件中获取节点信息,包括查找节点,获取节点属性,以及内存映射等,最后讲了编译设备

    39210

    Linux设备学习篇(1)

    Linux设备学习篇(1) 1. 什么是设备 2. 为什么要使用设备来替代传统的总线设备驱动模型 3. DTS、DTB 和 DTC 4. DTS 语法 4.1 .dtsi 头文件 4.2 设备节点 4.3 标准属性 5. DTS 编译 5.1 内核编译设备 5.2 dtc 工具编译设备 1. chosen 属性 chosen并不是一个真实的设备,chosen 节点主要是为了 uboot 向 Linux 内核传递数据,比如启动参数bootargs,不代表实际的设备。其父节点必须是根节点。 绑定信息文档 设备是用来描述板子上的设备信息的,不同的设备其信息不同,反映到设备中就是属性不同。那么我们在设备中添加一个硬件对应的节点的时候从哪里查阅相关的说明呢? Linux 内核给我们提供了一系列的函数来获取设备中的节点或者属性信息,这一系列的函数都有一个统一的前缀“of_”,所以在很多资料里面也被叫做 OF 函数。

    18910

    Linux笔记(23)| “插件”设备

    今天和大家分享的依然是设备,上一节里主要是介绍了设备文件的基本格式、语法规则等,今天介绍一下如何使用设备,以及如何动态加载设备设备里记录的是“资源”,比如我们要点亮led,就可以增加一个led的节点,把led相关的寄存器放在这个节点里。 这样我们的设备文件就写好了,参照上一节的做法,我们修改完设备文件,然后进行编译,将生成的dtb文件替换开发板原来的dtb文件,然后重启开发板即可。 设备文件写好了,接下来就是写驱动文件了。 其实驱动文件和我们之前在Linux笔记(21)| platform总线驱动分析介绍的基本是一样的,唯一的不同就是资源获取方式不一样,之前是在设备文件中获取,现在是在设备文件上获取。

    42810

    一文搞定 Linux 设备

    Linux 2.6中, ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx中,采用设备后,许多硬件的细节可以直接通过它传递给Linux,而不再需要在内核中进行大量的冗余编码 1. linux设备中DTS、 DTC和DTB的关系 (1) DTS:.dts文件是设备的源文件。 (3) DTB:.dtb文件是 .dts 被 DTC 编译后的二进制格式的设备文件,它可以被linux内核解析。 2. DTS语法 2.1 .dtsi 头文件 和 C 语言一样,设备也支持头文件,设备的头文件扩展名为 .dtsi;同时也可以像C 语言一样包含 .h头文件;例如:(代码来源 linux-4.15/arch 设备语法规范 (2) 设备节点的结构图如下: 作者:疯狂写Bug 侵权删 【转自 一口linux】 5T技术资源大放送!

    2.2K30

    我眼中的Linux设备(四 中断)

    一般情况中断产生设备数量要多于中断控制器,多个中断产生设备的中断都由一个中断控制器处理,这种多对一的关系也很像一个树形结构,所以在设备中,中断也被描述成,叫中断。 以下表述的时候为了明确是在说中断,在父节点和子节点前边我们都加上“中断”二字,是为了防止和设备的父节点、子节点混淆(虽然大部分情况设备的父子关系就是中断的父子关系,但是因为存在特例,所以我们还是强调是中断父子关系 如果设备的父节点就是中断父节点,那么可以不用设置interrupt-parent属性。 因为他的中断父设备可能和设备的父设备不同,那么用interrupt-parent属性指向他的中断父设备。 根据中断的特性,一个设备中是有可能有多个中断的。 以上是中断在设备中如何描述的规则,听起来是挺复杂的,但只要理解了就很简单,为了帮助理解我们举一个实际的例子。

    1.2K70

    Linux设备详解(一) 基础知识

    ,Bootloader会将这棵传递给内核,然后内核来识别这棵,并根据它展开Linux内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、 IRQ等资源,也被传递给内核,内核会将这些资源绑定给展开的相应设备 2. 所以Bootloader需要支持设备才行;Kernel也需要加入设备的支持; 3. ,使用status可以去禁止设备或者启用设备,看下设备规范中的status可选值 value Description “okay” 表示设备正在运行 “disabled” 表示该设备目前尚未运行,但将来可能会运行 另外地址的编址也不同于中断信号,前者是设备的自然表示,而后者者表现为独立于设备树结构的节点之间的链接。 下图显示了设备的自然结构以及每个节点在逻辑中断中的位置。

    39230

    Linux 设备(DTS)的深入理解

    关于设备的出现其实在 2005 年时候就已经在 PowerPC Linux 里出现了,由于 DTS 的方便性,慢慢地被广泛应用到 ARM、MIPS、X86 等架构上。 为了理解设备的出现的好处,先来看下在使用设备之前是采用什么方式的。 设备的文件结构和剖析 设备设备之间到底是什么关系,有着哪些依赖和联系,先看下设备之间的关系图: ? 设备文件的格式是 dts,包含的头文件格式是 dtsi,dts 文件是一种程序员可以看懂的格式,但是 Uboot 和 Linux 只能识别二进制文件,不能直接识别。 设备的应用 有了理论,在具体的工程里如何做设备呢?这里介绍三大法宝:文档、脚本、代码。

    18.7K53

    linux 设备详解-基本概念《Rice linux 学习开发》

    《基本概念》 我们将以一个简单机开始,然后通过一步步的建立一个描述这个简单机的设备,来了解如何使用设备设备 系统中每个设备都表示为一个设备树节点。所以接下来就应该为这个设备填充设备节点。现在,知道我们讨论如何进行寻址和中断请求如何处理之前这些新节点将一直为空。 现在这棵还是无效的,因为它缺少关于设备之间互联的信息。稍后将添加这些信息。 在这颗中,应该注意这些事情: 1.每个设备节点都拥有一个 compatible 属性。 为了得到一个内存映射地址,设备必须指定从一个域到另一个域地址转换方法,而 ranges 属性就为此而生。 下面就是一个添加了 ranges 属性的示例设备。 另外地址的编址也不同于中断信号,前者是设备的自然表示,而后者者表现为独立于设备树结构的节点之间的链接。

    23820

    认识设备(二)——设备文件的格式

    1 DTS文件的格式 1.1 DTS文件的总体布局 设备源文件通常以dts为后缀,其总体布局如下: /* 设备文件支持c语言的注释符 */ // 下面是设备的总体布局 /dts-v1/; [memory 在linux初始化时,会优先找支持"samsung,smdk2416"的machine_desc用以初始化硬件,找不到时才退而求其次——"samsung,s3c2416"。 有些节点有着必要的属性,换句话说,在设备文件中写了这些节点,那么就必须写上相应的必要的属性。而这些有着必要属性的节点则不一定是设备文件的必要节点。 1.9.2 如何在设备文件中描述设备 设备写出来是给驱动程序看的,也就是说驱动程序怎么写的,相应的设备就该怎么写;或者反过来,先约定好设备怎么写,在相应的设计驱动。 对于下游产品厂商,当使用芯片厂商的芯片做产品时,芯片厂商通常会提供驱动程序和设备文件编写的参考文档,这些文档位于linux内核源码的Documentation/devicetree/bindings

    46210

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 物联网开发平台

      物联网开发平台

      腾讯云物联网开发平台(IoT Explorer)为客户提供便捷的物联网开发工具与服务,助力客户更高效的完成设备接入,并为客户提供物联网应用开发及场景服务能力,帮助客户高效、低成本构建物联网应用……

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券