嵌入式Linux的技术分析
PC硬件使用的增加是近年来高端嵌入式系统的一个最重要的发展。由于这个趋势,嵌入式系统的硬件成本大大地下降了,然而应用于嵌入式PC平台的软件系统却没有太多的选择。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
目前嵌入式操作系统主要有Palm OS,WindowsCE,EPOC,LinuxCE,QNX.ECOS,LYNX等,但这些系统一般都价格昂贵、不具有良好的可移植性。由于linux具有适应于多种CPU和多种硬件平台、性能稳定、裁剪性能好,开发和使用都很容易等特点,越来越多的人倾向于将Linux嵌入到移动计算平台、信息家电、媒体手机及其它产品中去。这同时也对Linux的实时性提出了更高的要求。
我们参加开发的上海数字技术中心的电子警察系统就是这样一个基于PC平台的嵌入式系统。它的主要功能是安装在十字路口上监视闯红灯的汽车,录制这些镜头,并适时通过网络传回总监控中心。该系统原来采用Vxworks作为运作平台,然而由于Vxworks的昂贵,且只能安装一台机器,因此将Linux改制成嵌入式的、具有一定实时性的系统平台。
1 硬件需求
考虑到实际的系统功能和系统开发的难度,我们决定选择X86体系作为平台,底板采PCM-5864/L板,CPU选择Intel的P55C系列,同时它也支持PC104接口。I/O方面,PCM-5864/L支持EIDE、FDD、Keyboard、Mouse、RS-232、USB等接口,同时也集成了10Mbps/l00Mbps网卡。另外PCM-5864/L还集成了显卡,并提供36位TTL的LCD接口、LVDS接口和Video-in/TV-out接口。由于电子磁盘体积小、抗震性能也较好的特点,我们选用M-Systems公司的DiskOnChip2000作为存储设备,这样比较适合该系统户外作业的特性。Doc2000还提供了安装的工具包、Linux下的驱动程序和对不同版本Linux内核的Patch。安装时只需对Linux内核和Lilo进行相应修改即可。这样的硬件选择使系统开发的难度大大降低了。
2 嵌入Linux主要解决的几个问题
由于采用X86体系作为平台,大大降低了嵌入化Linux的难度,主要要考虑的问题可分为以下几个方面:
2.1 非虚拟内存
Linux采用虚拟内存技术,当数据溢出内存时,可以将其交换到磁盘交换空间巾去,这对程序员来说是不可见的。然而,普通的嵌入式系统不需要这种强大的功能。实际上,可能不希望它在实时的关键系统里,因为它会带来无法控制的时问因素。因此,考虑将虚拟内存的功能去掉。然而,清除Linux的虚拟内存代码非常费事,我们采用一种迂回的方法,即将交换空间的大小设置为零。这样,如果你写的程序比实际的内存大,系统就会当作你的运行用尽了交换空间来处理;这个程序将不会运行,或者malloc将会失灵。这只是一种临时的解决方案,系统中存在许多冗余未清除的代码,如果进一步改进可以缩小系统体积。
2.2 处理文件系统
许多嵌入式系统没有磁盘或者文件系统,Linux不需要它们也能运行,这样可以在系统启动时就将操作系统和预先编好的应用程序全都加载到内存中去。然而.考虑到以后的扩展,我们分析了Linux当前的文件系统,将与系统和程序运行相关的文件析取出来,移植到Doc上面.这样就能为应用程序的开发人员提供更方便的接口。
2.3 设置启动(Lilo和BIOS)
当PC系统启动时,由BIOS执行了一些低水平的CPU初始化和其它硬件的配置,然后辨认哪个磁盘里有操作系统,把操作系统复制到RAM并且转向它。在PC上运行的Linux依靠PC的BIOS来提供这些配置和OS加戟功能。由于选择了X86系列作为平台,同样可以通过设置BIOS来设定由Doc启动。我们将内核安装在Doc上。同时修改目录/etc下的lilo.config文件,使Lilo记录内核代码在存储设备上的位置,然后将Lilo安装在Doc上。这样当系统启动时.BIOS指定Doc为启动设备,这时Lilo被执行。它指出Linux内核的位置,加载内核。
2.4 设备驱动程序的编写
由于采用通用PC平台,有许多驱动程序都不需要自己再编写了。系统中,唯一需要编写驱动程序的设备是上海数字中心的数据采集卡.该卡采用的是Bt848芯片。Bt848是一块很常用的芯片.许多驱动程序都非常相近,因此编写它的驱动程序有很好的例子可以参考,相应的,编写应用程序只需调用驱动程序提供的接口即可,如同操作文件一样。
3 Linux的实时性分析
以上简要介绍了实现Linux的嵌入化过程,在嵌入化Linux的同时,还考虑提高它的实时性。于是着手分析Linux的实时性能和存在的不足。
概括来讲,影响操作系统实时性能的主要有3个方面:
(1)外部中断管理
我们知道,外部中断发生时,操作系统调用中断处理程序.进入核心态。为了保证系统执行的正确性,要求内核状态不重入,也即保证这部分关键代码执行结束
- 蓝牙无线耳机设计及VxWorks移植方法(07-21)
- 军事指挥系统中VxWorks下汉字显示技术(07-16)
- 基于VxWorks的文件系统的研究与实现(09-18)
- 嵌入式语音通信系统中VxWorks BSP的设计实现(09-18)
- 嵌入式系统的VxWorks安全性问题研究(11-06)
- VxWorks下的多重定时器设计(02-16)