嵌入式Linux中文站

linux内存操作--ioremap和mmap

阅读(71)

对于一个系统来讲,会有很多的外设,那么这些外设的管理都是通过CPU完成。那么CPU在这个过程中是如何找到外设的呢? 尽管在一个系统中会有诸多的外设,在每个外设的接口电路中会有多个端口。但是如果系统能够每个端口都被赋予一个具体的地址值,那么在系统中就能轻易的找到任何一个外设。系统在管理的时候,不管是内存还是外设都需要分配一个内存地址。对于一个32bit的系统来讲,可寻址的范围为2^32=4G的地址空间。 既然说到地址空间,就要明确地址空间的种类:物理地址、总线地址、虚拟地址。 (1)物理地址 CPU地址总线

基于Linux与Busybox的Reboot命令流程分析

阅读(245)

一:Busyobx层的分析 这段时间,在忙到一个项目时,需要在busybox中用到reboot命令,开始在busybox中的shell中输入reboot命令,始终如下的信息,然后就停止在那里了,无法重启...为了彻底的弄明白这个问题,我在网络上找了很久,终于有个人写的一个reboot流程分析,我就借花献佛.在这里重新分析下busybox是如何运行这个命令,同时又是如何调用到Linux内核中的mach_reset中的arch_reset,当针对不同的ARM芯片时,作为Linux内核开发和驱动开发的朋友,对于

Linux中iptables的原理

阅读(195)

iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为如果数据包头符合这样的条件,就这样处理这个数据包。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、I

Linux MTD系统剖析

阅读(145)

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程序的执行过程

阅读(101)

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

深入理解SELinux

阅读(150)

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设备树(一 概述)

阅读(231)

设备树(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设备树(二 节点)

阅读(172)

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