嵌入式Linux中文站

开发专区

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

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

阅读(210)

中断一般包括中断产生设备和中断处理设备。中断控制器负责处理中断,每一个中断都有对应的中断号及触发条件。中断产生设备可能有多个中断源,有时多个中断源对应中断控制器中的一个中断,这种情况中断产生设备的中断源称之为中断控制器中对应中断的子中断。一般情况中断产生设备数量要多于中断控制器,多个中断产生设备的中断都由一个中断控制器处理,这种多对一的关系也很像一个树形结构,所以在设备树中,中断也被描述成树,叫中断树。以下表述的时候为了明确是在说中断树,在父节点和子节点前边我们都加上中断二字,是为了防止和设备...

我眼中的Linux设备树(五 根节点)

我眼中的Linux设备树(五 根节点)

阅读(191)

一个最简单的设备树必须包含根节点,cpus节点,memory节点。根节点的名字及全路径都是/,至少需要包含model和compatible两个属性。model属性我们在属性那节已经说过是用来描述产品型号的,类型为字符串,推荐的格式为manufacturer,model-number(非强制的)。根节点的model属性描述的是板子的型号或者芯片平台的型号,如: model = Atmel AT91SAM9G20 family SoC model = Samsung SMDK5420 board based ...

我眼中的Linux设备树(六 memory&chosen节点)

我眼中的Linux设备树(六 memory&chosen节点)

阅读(269)

根节点那一节我们说过,最简单的设备树也必须包含cpus节点和memory节点。memory节点用来描述硬件内存布局的。如果有多块内存,既可以通过多个memory节点表示,也可以通过一个memory节点的reg属性的多个元素支持。举一个例子,假如某个64位的系统有两块内存,分别是 RAM: 起始地址 0x0, 长度 0x80000000 (2GB) RAM: 起始地址 0x100000000, 长度 0x100000000 (4GB) 对于64位的系统,根节点的#address-cells属性和#size-...

linux内核中的device mapper详解

linux内核中的device mapper详解

阅读(411)

关于device mapper在内核中的架构信息在参考文档1,2中有很好的解释,在这里就不过多介绍,以下将详细的根据device mapper的代码解释device mapper机制。 一、 LVM简介 LVM2是Linux 下的逻辑卷管理器,它可以对磁盘进行分区等。但是我们这里用LVM主要是利用用户空间的device mapper 库以及它提供的 dmsetup 工具。 LVM的下载地址为:http://git.fedorahosted.org/git/lvm2.git。下载后在tools文件夹下会看到...

Linux 内核中的 Device Mapper 机制

Linux 内核中的 Device Mapper 机制

阅读(107)

本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍。Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper...

Linux设备树的用法

Linux设备树的用法

阅读(249)

本文通过为一个新machine写一个设备树来介绍设备树相关的概念,以及如何来描述一个machine。 关于设备树的技术细节描述,需要参考ePAPR文档,ePAPR文档中包含了大量的基础语法之外的细节,如果你需要了解更多本文之外的设备树细节,请参考ePAPR文档。 基本数据格式 设备树是一个由节点及属性组成的简单树结构。属性是基于key-value对的,节点则可以包含子节点以及属性。 如,下面这个树就是一个典型结构: / { node1 { a-string-property = A string; a-s...

Linux下USB驱动详解(HOST)

Linux下USB驱动详解(HOST)

阅读(331)

USB驱动分为两块,一块是USB的bus驱动,这个东西,Linux内核已经做好了,我们可以不管,我们只需要了解它的功能。形象的说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB通道到达该到的地方,这部分工作由usb_core(drivers/usb/usb.c)来完成。当USB设备接到USB控制器接口时,usb_core就检测该设备的一些信息,如生产厂商的ID(VID)和产品的ID(PID),或者是设备所属的class、subclass跟protocol,以便确定应该调用哪一个驱动...

linux内核驱动模块开发makefile实例解析

linux内核驱动模块开发makefile实例解析

阅读(347)

以下是摘自网络上的一个经典的linux设备驱动的Makefile文件,以及详细的内容解释。此文件可以完成对大部分驱动的编译,使用时只需要稍加修改就可以了。 $( warning KERNELRELEASE = $( KERNELRELEASE ))ifeq ( $( KERNELRELEASE ),) KERNELDIR ?= /lib/modules /$(shell uname -r)/build PWD : = $( shell pwd) MYMOD : = hello modules: $( MA...