嵌入式linux简介
LINUX是一个类似UNIX的作业系统,其程式码是完全开放的,核心功能强大,实现简洁.它提供了类似UNIX的编写程式介面和系统应用,可以方便的将UNIX系统上的应用程式,移植到Linux上运作.Linux核心支援多种体系结构的处理器,包括目前流行的Intel x86,Motorola/IBM PowerPC,ARM,Compaq Alpha,Sun SRARC等处理器体系结构.
要把Linux用於嵌入式环境,就必须修改Linux满足嵌入式系统的要求.主要集中在两个方面:一是体积,二是即时性.与目前上的众多商业的RTOS(即时操作系统)相比,嵌入式Linux拥有以下的特点:
完全开放来源程式码
嵌入式Linux开放来源程式码,这使得学习,修改,剪裁Linux成为可能,嵌入式系统的设计者可以对嵌入式Linux进行二次开发,去掉作业系统的附加功能,只保留必须的作业系统功能,并且可以根据实际应用的需要优化作业系统的来源程式码,从而降低整个作业系统开销与消耗.
成本低
GPL协定保证了源自Linux的嵌入式Linux也是开放来源程式码的自由软体,也就是说,只要遵守GPL协议,嵌入式Linux作业系统的来源程式码可以自由获得.另外,大多数嵌入式Linux使用的开发工具也是遵守GPL协议的,同样可以免费获得.
丰富的实用软体支援
Linux作业系统是一个完整的,功能强大的作业系统,提供了大量的实用程式和各种各样的应用软体.这些软体的正确性和有效性都经过了实际应用检验,可以根据需要,利用Linux提供的丰富的软体支援,迅速构建嵌入式应用的软体环境.这样可以极大地减小嵌入式系统软体发展的时间和费用,提高系统的可靠性.
嵌入式LINUX的可携性
将LINUX移植到新的微处理器体系非常快捷,一般是将其移植到一种新型的目标板,其中包含有独特的外部设计.大部分的核心程式码都是相同的,因为它们与微处理器无关,所以移植的工作多集中在一些记忆体管理及中断处理程式上.一旦完成,它们将非常稳定.
嵌入式LINUX的应用
嵌入式系统的涵盖面是非常广泛的,其中,家电市场包括机顶盒,数位电视,视讯电话,家庭网路等资讯家电;工业市场包括工业控制设备,仪器;商用市场包括掌上电脑,受客户机,POS终端等;通讯市场包括WAP手机,无线PDA等.目前被广泛看好的是资讯家电市场,国内有很多开发厂商正加大投入,开发和研制新的产品,嵌入式LINUX将是他们首选的作业系统
Linux的基本示意图
Boot Loader
负责Linux核心的启动,它用於初始化系统资源,包括SDRAM.这部分程式码用於建立Linux核心运作环境和从Flash中装载初始化ramdisk
核心初始化
Linux核心的进入点是start_kernel()函数.它初始化核心的其他部分,包括捕获,IRQ通道,调度,设备驱动,标定延迟回圈,最重要的是能够fork "init"处理程序,以启动整个多工环境.系统应用函数/捕获函数:在执行完"init"程式后,核心对程式不再有直接的控制权,此后,它的作用仅仅是处理非同步事件(例如硬体中断)和为系统应用提供处理程序.
设备驱动
设备驱动占据了Linux核心很大部分.同其他作业系统一样,设备驱动为它们所控制的硬体设备和作业系统提供介面.
档案系统
Linux最重要的特性之一就是对多种档案系统的支援.这种特性使得Linux很容易地同其他作业系统共存.档案系统的概念使得用户能够查看储存设备上的档案和路径而无须考虑实际物理设备的档案系统类型.Linux透明的支援许多不同的档案系统,将各种安装的档和档案系统以一个完整的虚拟档案系统的形式呈现给用户.
嵌入式档案系统简介
嵌入式档案系统的结构与LINUX类似,目前常用的有EXT2,CRAMFS,JFFS2,YAFFS2和RAM磁片档案系统等.为了更好的嵌入式系统选择档案系统,一般会考察档案系统的如下几个特性:
可写入 档案系统是否可以被写入?
可更新 系统重新启动后,档案系统是否能保持重新启动前的更改?
断电可靠性 档案系统在发生断电的时候是否可以恢复原资料?
可压缩 档案系统内容是否可被压缩?
RAM启动 在挂载档案系统前,其内容是否首先从记忆体中提取到RAM中?
ROMfs档案系统:
ROMfs是使用最多的档案系统,它是一种简单,紧凑和唯读的档案系统.ROMfs顺序储存档资料,并可以在uClinux支援的储存设备上直接运作档案系统,这样可以在系统运作时节省许多RAM空间
Cramfs 档案系统:
Cramfs是针对Linux核心2.4之后的版本所设计的一种新型档案系统,也是压缩和唯读格式的.它主要的优点是将档案资料以压缩形式储存,在需要运作的时候进行解压缩.由於它储存的档形式是压缩的格式,所以档案系统不能直接在Flash上运作.虽然这样可以节约很多Flash储存空间,但是档案系统运作需要将大量的资料复制进RAM中,消耗了RAM空间.
下一页