嵌入式Linux中文站

Linux MTD系统剖析

阅读(140)

MTD,Memory Technology Device即内存技术设备 ,在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。 如上图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。 Flash硬件驱动层 :Flash硬件驱动层负责对Flash硬件的读、写和擦除操作。MTD设备的Nand Flash芯片的驱动则drivers/mtd/nand/子目录下,Nor F

Linux系统ELF程序的执行过程

阅读(93)

【摘要】 本文将介绍linux程序的执行过程,并以实际问题为切入点简单介绍下ELF程序的加载过程。 【正文】用后态执行 我们知道在linux系统中可以通过诸如./debug方式执行一个程序,那么这个程序的执行过程中linux系统都做了什么? 本文以debug程序为例,介绍linux内核是如何一步步将debug进程执行起来的. 1 执行过程: 以system()实现为例,它是一种典型的可执行程序运行过程: [cpp] view plain copy #includesys/types.h #includes

深入理解SELinux

阅读(147)

1. 简介 SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。 Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它通过LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Securit

我眼中的Linux设备树(一 概述)

阅读(227)

设备树(Device tree)是一套用来描述硬件属相的规则。ARM Linux采用设备树机制源于2011年3月份Linux创始人Linus Torvalds发的一封邮件,在这封邮件中他提倡ARM平台应该参考其他平台如PowerPC的设备树机制描述硬件。因为在此之前,ARM平台还是采用旧的机制,在kernel/arch/arm/plat-xxx目录和kernel/arch/arm/mach-xxx目录下用代码描述硬件,如注册platform设备,声明设备的resource等。因为这些代码都是用来描述芯片平

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

阅读(168)

首先说节点的表示方法,除了根节点只用一个斜杠/表示外,其他节点的表示形式如node-name@unit-address。@前边是节点名字,后边是节点地址。 节点名字的长度范围是1到31,可以使用的字符在ePAPR规范中有说明,包括: 0-9 数字 a-z 小写字母 A-Z 大写字母 , 逗号 . 句点(英) _ 下划线 + 加号 - 破折号(英) 规范要求节点名字应该以字母开头,虽然允许后边的位置使用非字母的字符,但实际情况我们实在没必要使用其他字符,一般情况全部用字母表示就够了。特别是规范建议在起名字时

我眼中的Linux设备树(三 属性)

阅读(171)

device_type = memory就是一个属性,等号前边是属性,后边是值。节点是一个逻辑上相对独立的实体,属性是用来描述节点特性的,根据需要一个节点由0个,1个或多个属性表示节点的特性。一个属性由名字和值两部分组成。 和节点的名字类似,规范要求属性名字由1到31个字符组成。和节点名字字符的种类有些区别,不允许有大写字母,增加了问号和井号两个字符。不清楚为什么没有和节点名字完全保持一致,井号对于初学者容易误解,以为是注释。 0-9 数字 a-z 小写字母 , 逗号 . 句点(英) _ 下划线 + 加号

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

阅读(151)

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

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

阅读(152)

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