我帮你查找了两个资料,你看看对你是否可以有点帮助;
嵌入式Linux系统的设计与应用
摘要:随着嵌入式Linux系统的迅速发展,嵌入式Linux已发展成为嵌入式 *** 作系统的一个重要分支。本文介绍了嵌入式Linux的设计和几种流行的嵌入式Linux系统。
关键词:嵌入式Linux
一、引言
嵌入式系统(Embedded Systems)是根据应用的要求,将 *** 作系统和功能软件集成于计算机硬件系统之中,从而实现软件与硬件一体化的计算机系统。嵌入式系统出现于60年代晚期,它最初被用于控制机电电话交换机,如今已被广泛的应用于工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等众多领域。嵌入式系统在数量上远远超过了各种通用计算机系统:计算机系统核心CPU,每年在全球范围内的产量大概在二十亿颗左右,其中超过80%应用于各类专用性很强的嵌入式系统。
一般的说,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。和通用的计算平台相比,嵌入式系统往往具有功能单一、体积小、功耗低、可靠性高、剪裁性好、软硬件集成度高、计算能力相对较低等特点。多年来,嵌入式设备中没有 *** 作系统,其主要原因有二:首先,诸如洗衣机、微波炉、电冰箱这样的设备仅仅需要一道简单的控制程序,以管理数量有限的按钮和指示灯,没有使用 *** 作系统的必要;其次,它往往只具有有限的硬件资源,不足以支持一个 *** 作系统。
然而,随着硬件的发展,嵌入式系统变得越来越复杂,最初的控制程序中逐步的加入了许多功能,而这些功能中有很多可以由 *** 作系统提供。于是,在70年代末期出现了嵌入式 *** 作系统(Embedded Operating Systems),它的出现大大简化了应用程序设计,并可以有效的保障软件质量和缩短开发周期。简单的ES一般并不使用 *** 作系统,只包含一些控制流程,但是随着嵌入式 *** 作系统在复杂性上的增长,简单的流程控制就不能满足系统的要求,这是就必须考虑使用 *** 作系统做系统软件。因此,嵌入式 *** 作系统就应运而生。
随着EOS的广泛应用,业界已推出一些应用比较成功的EOS产品。归纳起来EOS应该具有以下几个特点:小巧、实时性、可装卸、固化代码、弱交互性、强稳定性和统一的接口。目前使用最多的EOS产品包括有:Vxwork、QNX、PalmOS、WindowsCE、pSOS、Hopen OS(国内凯思集团公司自主研制开发)等。其中,Vxwork使用最为广泛、市场占有率最高,其突出特点是实时性强(采用优先级抢占和轮转调度等机制),除此之外,其可靠性和可剪裁性也相当不错。QNX是一种伸缩性极佳的系统,其核心加上实时POSIX环境和一个完整的窗口系统还不到一兆。相比之下,Microsoft WinCE的核心体积庞大,实时性能也差强人意,但由于Windows系列友好的用户界面和为程序员所熟悉的API,并捆绑IE、Office等应用程序,正逐渐获得更大的市场份额。而与这些商业化的 *** 作系统相比,Linux已经越来越受到人们的注意。
二、嵌入式Linux概述
Linux是一个成熟而稳定的网络 *** 作系统。将Linux植入嵌入式设备具有众多的优点。首先,Linux的源代码是开放的,任何人都可以获取并修改,用之开发自己的产品。其次,Lirmx是可以定制的,其系统内核最小只有约134kB。一个带有中文系统和图形用户界面的核心程序也可以做到不足1MB,并且同样稳定。另外,它和多数Unix系统兼容,应用程序的开发和移植相当容易。同时,由于具有良好的可移植性,人们已成功使Linux运行于数百种硬件平台之上。
然而,Linux并非专门为实时性应用而设计,因此如果想在对实时性要求较高的嵌入式系统中运行Linux,就必须为之添加实时软件模块。这些模块运行的内核空间正是 *** 作系统实现进程调度、中断处理和程序执行的部分,因此错误的代码可能会破坏 *** 作系统,进而影响整个系统的可靠性和稳定性。Linux的众多优点还是使它在嵌入式领域获得了广泛的应用,并出现了数量可观的嵌入式Linux系统。其中有代表性的包括:uClinux、ETLinux、ThinLinux、LOAF等。ETLinux通常用于在小型工业计算机,尤其是PC/104模块。ThinLinux面向专用的照相机服务器、X-10控制器、MP3播放器和其它类似的嵌入式应用。LOAF是Linux On A Floppy的缩略语,它运行在386平台上。
三、Linux作为嵌入式 *** 作系统的优势
Linux作为嵌入式 *** 作系统的优势主要有以下几点:
1、 可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对于经费,时间受限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发后移植到具体的硬件上,加快了软件与硬件的开发过程。Linux采用一个统一的框架对硬件进行管理,从一个硬件平台到另一个硬件平台的改动与上层应用无关。Linux可以随意地配置,不需要任何的许可证或商家的合作关系,源代码可以免费得到。这使得采用Linux作为 *** 作系统不会遇到任何关于版权的纠纷。毫无疑问,这会节省大量的开发费用。本身内置网络支持,而目前嵌入式系统对网络支持要求越来越高。Linux的高度模块化使添加部件非常容易。
2、 Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等现有的大部分芯片)等特性的一种通用 *** 作系统。其程序源码全部公开,任何人可以修改并在GUN通用公共许可证(GNU General Public License)下发行。这样,开发人员可以对 *** 作系统进行定制,适应其特殊需要。
3、 Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X Windows)。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。
四、嵌入式Linux的建立
完整的嵌入式Linux解决方案应包括嵌入式Linux *** 作系统内核、运行环境、图形化界面和应用软件等。由于嵌入式设备的特殊要求,嵌入式Linux解决方案中的内核、环境、GUI等都与标准Linux有很大不同,其主要挑战是如何在狭小的FLASH、ROM和内存中实现高质量的任务实时调度、图形化显示、网络通信等功能。
1、 精简内核
Linux内核有自己的结构体系,其中进程管理、内存管理和文件系统是其最基本的3个子系统。图1简单表示了它的框架。用户进程可直接通过系统调用或者函数库来访问内核资源。正因为Linux内核具有这样的结构,因此修改内核时必须注意各个子系统之间的协调。
嵌入式Linux内核一般由标准Linux内核裁剪而来。用户可根据需求配置系统,剔除不需的服务功能、文件系统和设备驱动。经过裁剪、压缩后的系统内核一般只有300k左右,十分适合嵌入式设备。同标准Linux不同的是嵌入式Linux必须要实现从FLASH或ROM的启动。标准Linux启动代码实现了系统初始化和从软盘、硬盘O盘区引导内核。嵌入式Linux一般保存在FLASH或ROM中,标准LILO无法引导。在支持直接从FLASH设备引导的系统中,如华恒公司的uClinux,引导程序主要完成对硬件系统的初始化工作和 *** 作系统的解压、移位工作。在不支持直接从FLASH引导的系统中,FLASH设备只能作为非引导磁盘使用。此时,可采用先从硬盘或软盘加载一个小 *** 作系统,如嵌入式DOS,然后再执行"Loadlin"加载程序从FLASH引导嵌入式Linux。
对标准Linux的修改主要是虚拟内存和调度程序部分的改动。因为标准Linux系统使用虚拟内存管理的目的是为了能同时运行多个进程,但是这样每个待运行的进程所能分配的CPU时间片就受限制,资源的使用效率就低。这样对于实时性要求较高的嵌入式系统来说,实时任务往往要求CPU具有很高的突发处理能力,即在有些时候需要极高的处理效率,因此需要屏蔽内核的虚拟内存管理机制。对于无硬盘设备的嵌入式系统,不必采用虚存管理。强实时需求的嵌入式应用可以通过修改任务调度模块实现,主要是在内核和设备驱动程序中加入了许多切换点。在该点处,系统检测是否存在未处理的紧急中断,有则剥夺内核的运行,及时处理中断。实现实时性服务的一个较好的方法是在标准的Linux内核上增加一个实时内核,标准Linux内核作为一个任务运行于实时内核上,强实时性任务也直接运行在实时内核上,如RT-Linux等。
文件系统是嵌入式Linux *** 作系统必不可少的。但标准Linux支持大量的文件系统,因此除了满足系统的正常运行需要而保留一种外,其它的全部可以删除,利用原有的设置选项可以移除。一般嵌入式设备文件系统主要使用RamDisk技术和网络文件系统技术。RamDisk可驻留于Flash,运行时加载到内存中。
2、 精简运行环境
Linux通常的运行环境指用户运行任何应用的基础设施,主要包括函数库和基本命令集等。标准Linux系统同时向用户提供了静态和动态函数库。静态函数库在生成应用时直接链接到用户应用中。动态库在应用运行时才链接。由于嵌入式系统应用一般都是在开发平台上预先生成的,因此嵌入式系统只需向应用提供动态函数库。Linux应用运行所需的函数库主要有C库、数学库、线程库、加密库、网络通信库等。其中最基本的是C语言的运行库glib。这个库主要完成基本的输入输出,内存访问,文件处理。一个标准的glib库大约要1200kB存储空间,考虑到嵌入式Linux内核往往很小,这种运行库实在太大,我们做了一些精简的工作,方法有两种:(1)、使用静态连接的方法,完全不使用运行库动态连接;(2)、对这个库的函数进行精简。
在一个桌面系统上,使用动态连接可以带来许多好处。使用动态连接库,可以让应用程序跟函数库的更新、升级分离,便于维护,可以让同时运行的多个程序共享一段代码。但是,在嵌入式系统中,很少有多个程序并行的可能,程序的维护,尤其是库函数的维护更新是不常见的。这时,使用静态连接的优势就极为明显。因为静态连接可以只将库中用到的部分连接进程序。在应用程序较少(小于5)的情况下,静态连接可以达到较好的结果。为了便于将来扩充的需要,我们也采用第二种方法,针对我们的需要,对库函数的内容进行精简,只保留一些基本功能,还有一种方法是采用其它的C语言运行库。但是这些库对兼容性影响很大。
基本命令集同样是运行用户应用的基础,主要包括初始化进程init,终端获取getty、Shell和基本命令等。嵌入式系统的启动过程可能与标准Linux不同,例如跳过登录过程直接启动GUI等。这就要求修改init,getty等。标准Linux命令集同样由于体积问题无法直接应用于嵌入式环境。目前,小命令集的解决方法主要有集成方法和汇编方法两种。集成方法采用集成公共部分减少命令集整体体积,用C实现,有较好的平台移植性;汇编方法则采用汇编编程减少每个命令的体积.这样可使体积很小但其平台移植性较差。
3、 嵌入式Linux下的GUI
GUI在嵌入式系统或者实时系统中的地位越来越重要,比如PDA、DVD播放机、WAP手机等,都需要一个完整.漂亮的图形用户界面。这些系统对GUI的基本要求包括:(1)、轻型、占用资源少;(2)、高性能;(3)、高可靠性;(4)、可配置。这些也成为评价嵌入式系统的重要指标。目前,嵌入式Linux上的GUI主要有winCE、Micro Window、紧缩的X Window、MiniGUI(国内做得较好的自由软件之一)。标准Linux的Xfree86由于体积庞大,运行环境要求高,无法运行于嵌入式环境。嵌入式GUI主要通过削减功能,降低性能来实现体积小和占用资源少。目前嵌入式Linux上的GUI环境主要有两类:X类和win32类。X类GUI分为服务方和客户方两方。服务器方提供鼠标、键盘处理和显示功能,客户方是用户应用,服务方和客户方通过socket接口和X协议通信。采用该方式十分有利于远程网络图形化服务,客户方和服务方可通过网络实现X协议和图形显示。典型的X类GUI有Micro Window、紧缩的X Window等。win32类的GUI不存在客户方和服务方,每个任务都自成一体,任何任务间的切换、事件分发由专门的管理任务负责。如wiCE、MiniGUI就是类似于win32类的GUI。
五、当前流行的几种嵌入式Linux系统
除了智能数字终端领域以外,Linux在移动计算平台、智能工业控制、金融业终端系统,甚至军事领域都有着广泛的应用前景。这些Linux被统称为"嵌入式Linux"。
1、RT-Linux
这是由美国墨西哥理工学院开发的嵌入式Linux *** 作系统。到目前为止,RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和特技图像处理等广泛领域。RT-Linux开发者并没有针对实时 *** 作系统的特性而重写Linux的内核,因为这样做的工作量非常大,而且要保证兼容性也非常困难。为此,RT-Linux提出了精巧的内核,并把标准的Linux核心作为实时核心的一个进程,同用户的实时进程一起调度。这样对Linux内核的改动非常小,并且充分利用了Linux下现有的丰富的软件资源。
2、uClinux
uCLinux是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit) 的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧。uCLinux是一种优秀的嵌入式Linux版本,是micro-Conrol-Linux的缩写。它秉承了标准Linux的优良特性,经过各方面的小型化改造,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,却仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。它专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。
3、Embedix
Embedix是由嵌入式Linux行业主要厂商之一Luneo推出的,是根据嵌入式应用系统的特点重新设计的Linux发行版本。Embedix提供了超过25种的Linux系统服务,包括Web服务器等。系统需要最小8MB内存,3MB ROM或快速闪存。Embedix基于Linux 22内核,并已经成功地移植到了Intel x86和PowerPC处理器系列上。像其它的Linux版本一样,Embedix可以免费获得。Luneo还发布了另一个重要的软件产品,它可以让在Windows CE上运行的程序能够在Embedix上运行。Luneo还将计划推出Embedix的开发调试工具包、基于图形界面的浏览器等。可以说,Embedix是一种完整的嵌入式Linux解决方案。
4、Xlinux
XLinux是由美国网虎公司推出,主要开发者是陈盈豪。他在加盟网虎几个月后便开发出了基于XLinux的、号称是世界上最小的嵌入式Linux系统,内核只有143KB,而且还在不断减小。XLinux核心采用了"超字元集"专利技术,让Linux核心不仅可能与标准字符集相容,还含盖了1 2个国家和地区的字符集。因此,XLinux在推广Linux的国际应用方面有独特的优势。
5、PoketLinux
由Agenda公司采用、作为其新产品"VR3PDA"的嵌入式Linux *** 作系统。它可以提供跨 *** 作系统构造统一的、标准化的和开放的信息通信基础结构,在此结构上实现端到端方案的完整平台。PoketLinux资源框架开放,使普通的软件结构可以为所有用户提供一致的服务。PoketLinux平台使用户的视线从设备、平台和网络上移开,由此引发了信息技术新时代的产生。在PoketLinux中,称之为用户化信息交换(CIE),也就是提供和访问为每个用户需求而定制的"主题"信息的能力,而不管正在使用的设备是什么。
6、MidoriLinux
由Transmeta公司推出的MidoriLinux *** 作系统代码开放,在GUN普通公共许可(GPL)下发布,可以在>
1.嵌入式Linux
嵌入式Linux(EmbeddedLinux)是标准Linux经过小型化裁剪处理之后的专用Linux *** 作系统,能够固化于容量只有几KB或者几MB的存储器芯片或者单片机中,适合于特定嵌入式应用场合。目前已经开发成功的嵌入式系统中,大约一半的系统使用嵌入式Linux。
这与它的父辈—Linux自身的优良特性是分不开的。
首先,Linux系统具有鲜明的层次结构且内核完全开放。Linux由很多体积小且性能高的微内核和系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要很容易地对内核进行裁剪,在低成本的前提下,设计和开发出真正满足自己需要的嵌入式系统。
其次,Linux具有强大的网络支持功能。Linux诞生于因特网并具有UNIX的特性,这就保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈开发出嵌入式TCP/IP网络协议栈。
再次,Linux具备一套完整的工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一般,嵌入式 *** 作系统的程序调试和跟踪都是使用仿真器来实现的,而使用Linux系统做原型的时候就可以绕过这个障碍,直接使用内核调试器来进行 *** 作系统的内核调试。
最后,Linux具有广泛的硬件支持特性。无论是RISC还是CISC,无论是32位还是64位处理器,Linux都能在其上运行。Linux最通常使用的微处理器是IntelX86芯片家族,但它也能运行于嵌入式处理器上,这意味着嵌入式Linux将具有更广泛的应用前景。
嵌入式Linux同Linux一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适合嵌入式领域的开发,嵌入式Linux还在Linux基础上做了部分改进,如将其内核结构由整体式结构改为微内核结构,并且还提高了系统的实时性。
嵌入式Linux同Linux一样,也有众多的版本,不同的版本针对不同的需要在内核等方面加入了特定的机制。
目前,朱有鹏老师提供了有关Linux最全面深入系统性的教学课程,可以搜索朱有鹏物联网大讲堂,官网观看免费视频。
2.VxWorks
VxWorks *** 作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时 *** 作系统(RTOS),VxWorks具有以下优点。
·实时性好。其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,使得它们产生的延迟很短。另外VxWorks提供的多任务机制中对任务的控制采用优先级抢占和轮转调度机制,充分保证了可靠的实时性。
·可靠性高,从而保证了用户工作环境的稳定。
·集成开发环境完备、强大,方便了用户的使用。
但是,由于VxWorks源码不公开,它部分功能的更新(如网络功能模块)滞后。VxWorks的开发和使用都需要交高额的专利费,这就大大增加了用户开发的成本。
3.QNX
QNX由加拿大QNX软件系统有限公司开发,广泛应用于自动化、控制、机器人科学、电信、数据通信、航空航天、计算机网络系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务关键型应用领域。
QNX独特的微内核和消息传递结构使其运行和开发时非常方便。QNX具有非常好的伸缩性,用户可以把应用程序代码和QNX内核直接编译在一起,使之为简单的嵌入式应用生成单一的映像。
4.WindowsCE(推荐课程:WindowsCE系统定制与驱动开发培训班)
WindowsCE是微软公司开发的一个开放的、可升级的32位嵌入式 *** 作系统,是基于掌上型电脑类的电子设备 *** 作系统。WindowsCE的图形用户界面相当出色,WindowsCE具有模块化、结构化、基于Win32应用程序接口以及与处理器无关等特点。
WindowsCE继承了传统的Windows图形界面,用户在WindowsCE平台上可以使用Windows95/98上的编程工具(如VisualBasic、VisualC等),使用同样的函数,使用同样的界面风格,Windows上的绝大多数应用软件只需简单修改和移植就可以在WindowsCE平台上继续使用。但是WindowsCE开发平台较为昂贵,在一定程度上限制了其发展。
5.PalmOS
PalmOS在PDA领域有着很大的用户群,一度占领PDA *** 作系统90%以上市场份额。PlamOS最明显的特点是精简,它的内核只有几千个字节,同时用户也可以方便地开发、定制,具有较强的可 *** 作性。
6.C/OS
源代码公开,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,系统短小精悍,是研究和学习实时 *** 作系统的首选,但在工程应用领域使用较少。
首先介绍嵌入式Internet技术的发展和广阔的应用前景以及嵌入式Internet技术的基本概念和原理,然后重点阐述了嵌入式系统接入Internet的几种方式,包括各种接入方式的工作原理,对TCP/IP的处理方法及所需的其他协议、软硬件等,并对它们各自的优缺点进行了比较,指出了新的发展方向。
关键词:嵌入式系统;嵌入式Internet;TCP/IP协议
0 引 言
嵌入式Internet技术是一种将嵌入式设备接入Internet的技术,利用该技术可将Internet从PC机延伸到8位、16位、32位单片机,并实现基于Inter-net的远程数据采集、远程控制、自动报警、上传/下载数据文件、自动发送E-mail等功能,大大扩展In-ternet的应用范围。
嵌入式Internet技术的出现时间并不很长,但是发展速度却非常之快,新思想不断涌现,新概念连续推出,新技术层出不穷,新产品不断产生,从底层硬件技术所提供的解决方案到顶层软件所开拓的想像空间,都在不断地推陈出新。随着PC机时代的到来,21世纪将是嵌入式Internet的时代。美国贝尔实验室总裁Arun Netravali的一批科学家对此做出了预测:嵌入式Internet“将会产生比PC机时代多成百上千倍的瘦服务器和超级嵌入式瘦服务器。这些瘦服务器将与我们所能想到的各种物理信息、生物信息相联接,通过Internet网自动地、实时地、方便地、简单地提供给需要这些信息的对象”更多内容可以在闯客技术论坛查看。
网络专家预测,将来在Internet上传输的信息中,将有70%的信息来自小型嵌入式系统[2]。嵌入式Internet将有很好的发展前景和广阔的市场,未来的Internet技术将是嵌入式Internet占主导地位,因此嵌入式系统与Internet的接入方式已成为人们研究的热点。
1 嵌入式Internet的基础
嵌入式Internet是嵌入式系统与Internet的结合。嵌入式系统中包含嵌入式处理机、嵌入式 *** 作系统和应用电路部分,与Internet的接入则必须有对应的接入协议,如通用的TCP/IP协议。因此,实现嵌入式Internet的基础是嵌入式处理机、嵌入式 *** 作系统和接入Internet的通信协议。
(1)嵌入式处理机
单片机就是典型的嵌入式处理机,如常见的In-tel的8051系列、Atmel的AVR、MicroChip的PIC、Motorola的Dragonball、Cygnal的C8051F等,以及一些高端的单片机如ARM、SH3、MIPS等,嵌入式处理机的种类有几百种。处理机是嵌入式系统的核心,其性能直接影响整个系统的性能高低,影响接入Internet的方式和成本。
(2)嵌入式 *** 作系统
嵌入式系统要完成复杂的功能,已经不可能像普通单片机一样,直接从底层开始编写所有程序,必须采用底层的 *** 作系统,在此基础上来完成复杂的应用软件设计。但由于嵌入式系统自身资源的限制,嵌入式 *** 作不可能像PC机的 *** 作系统一样庞大,Windows98/2000有几百兆字节,而嵌入 *** 作系统一般只有100-200半字节。同时嵌入 *** 作系统还必须是实时多任务 *** 作系统,而Windows98/2000不是实时 *** 作系统。另一方面,嵌入式处理机的种类繁多,嵌入 *** 作系统还必须支持多种不同处理器体系结构的众多处理机。
目前国际上嵌入式系统的主流是实时多任务 *** 作系统(RTOS:Real-Time Operating System)。RTOS是嵌入式应用软件的基础和开发平台,是一段嵌入在目标代码中的软件,用户的其它应用程序都建立在RTOS之上。不但如此,RTOS还是一个标准的内核,将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的API,并根据各个任务的优先级,合理地在不同任务之间分配CPU时开发基础。这样一来,基于RTOS上的C语言程序具有极大的可移植性。同时,在RTOS基础上可以编写出各种硬件驱动程序、专家库函数、行业库函数、产品库函数和通用性的应用程序一起,可以作为产品销售,促进行业内的知识产权交流。
虽然商品化的嵌入式 *** 作系统在20世纪70年代后期才出现,但到20世纪末,成熟的商品化 *** 作系统已经十分丰富了,如Palm OS,VxWorks,pSOS,Nuclear,VelOSity,QNX,VRTX,WindowsCE(现改名为Windows Powered)以及目前炒得很热的嵌入式Linux等。
(3)接入Internet的通信协议
嵌入式系统接入Internet同PC机接入Internet一样,必须通过相应的通信协议。目前的Internet采用TCP/IP协议,因此嵌入式系统接入Internet最终必须通过TCP/IP接入,嵌入式系统对信息进行TCP/IP协议处理,使其变成可以在Internet上传输的IP数据包。若采用网关方式,在网关前端可以采用适合嵌入处理机和起控制作用的新协议,通过网关转换后变成标准IP包接入Internet。
由于嵌入式系统自身资源的限制,处理能力不如台式机强,以及从PC机上来的TCP/IP的复杂性,使得处理通信协议成为嵌入式系统接入Internet的关键,也是嵌入式系统接入Internet的难点之一。因此下面着重分析当前的几种接入方式以及对协议的不同处理方法。
2 嵌入Internet的几种接入方式
2.1 处理机加TCP/IP协议方式
采用处理机加TCP/IP协议方式,MCU处理机像PC机一样直接处理TCP/IP协议,一般需要高档的处理机,如32位的ARM,SH3,MIPS等MCU和一些单周期指令速度较高的8位MCU,如AVR、SX等,其结构见图1。
对TCP/IP协议的具体处理又有2种方法。一种方法是采用实时 *** 作系统RTOS,用软件方式直接处理TCP/IP协议。实时 *** 作系统的功能越来越强大,许多都具有对图像界面和TCP/IP的支持能力。采用这种方式最灵活,能按用户需求实现很多复杂的功能,当然灵活的同时带来的是开发复杂度的增加,对开发人员的要求高,对 *** 作系统和TCP/IP协议都要有一定的熟悉程度,因此开发周期也较长,高档MCU和RTOS的价格也很高。
另一种是采用固化了TCP/IP协议的硬件芯片,如Seiko Instruments公司的S7600A等,它支持>
这两种方式类似于在MCU上实现PC机加网卡的功能,MCU直接处理TCP/IP协议,复杂度较高,且每个MCU也需要一个IP地址,而IP地址需要付费使用。它需要高档的MCU处理机和较高的开发成本,因此一般只会在一些高档产品(如汽车)中使用。它有一个好处是不需要PC机做网关。
2.2 Webit方式
Webit是沈阳东大新业信息技术股份有限公司研制开发的嵌入式系统接入Internet的一个实用产品,它将MCU和以太网控制器集成到一块小板卡上,将它装入到嵌入系统中就可以完成嵌入系统与Internet网的联接。Webit有自己的IP地址,与前面提到的第一种方式相似,但它有更高的集成度,将协议处理部分独立出来,开发人员省去了网络部分的设计,可将主要精力放在应用系统本身。
Webit总体上是一个基于AVR单片机的系统,在单片机内有用来存储系统服务程序的8千字节的FLASH空间、512字节的RAM空间以及用来存放
系统参数(IP地址、MAC地址、串口波特率等)的EEPROM。在单片机的外围,有用来存放Web页面的EEPROM。系统中包含一个10 M以太网控制器,用来提供网络的联接。系统提供的应用系统接口为TTL电平的UART口及14位I/O口,通过它与应用系统相连,其应用方式见图2。
Webit方式实际上与第一种方式类似,只是将协议处理部分分离出来由Webit单独完成,开发人员可以不必考虑网络协议和相关接口,但也需要独立的IP地址。该方式也不需要网关,无需PC机,软、硬件结构可以独立设计,其开发成本相对较低。
2.3 采用专用嵌入式网络协议
利用emWare公司开发的嵌入式微Internet网络技术(EMIT:Embedded Micro InternetworkingTechnology)。EMIT由emNet和emGateway两部分组成,emNet协议运行在MCU内部,是为嵌入式系统和其他网络(如RS485、IR、RF和电力线等)进行联接的网络协议。同时,emNet使得集成emMicro的嵌入式系统能够和嵌入式微控制器网关emGate-way进行有效的通信。嵌入式微控制器网关(即em-Gateway)运行在计算机、TV机顶盒或专用的家用电器服务器中,它是设备网络和Internet之间联接的桥梁。应用系统运行MCU内的emNet,通过em-Gateway与Internet联接,见图3。
具体来讲,EMIT采用桌面计算机或高性能嵌入式处理器作为网关emGateway,支持TCP/IP协议并运行Internet服务程序,形成一个用户可通过网络浏览器进行远程访问的服务器,emGateway通过RS232、RS485、CAN、红外、射频等总线将多个嵌入式设备联系起来,每个嵌入式设备的应用程序中包含一个独立的通信任务,称为emMicro,监测嵌入式设备中预先定义的各个变量,并将结果反馈到emGateway中;同时emMicro还可以解释emGate-way的命令,修改设备中的变量,或进行某种控制。
这种方式要求设计工程师必须熟悉emNet协议和相关的接口,并且软硬件设计的工作量仍然较大。应用系统的MCU处理emNet协议要占用一定的系统资源,对MCU的要求也较高,同时需要微机做网关。优点是网关中的一个IP地址可以联接多个嵌入式应用系统。
2.4 使用专用芯片Webchip
Webchip是武汉力源公司于2000年4月开发出使嵌入式电子设备和家用电器与网络方便联接的实用解决方案。Webchip是独立于各种微控制器的专用网络接口芯片,它通过标准的输入、输出口与各种MCU相连。MCU通过Webchip与网关联接即可接收并执行经由Internet远程传来的命令或将数据交给Webchip发送出去。MCU应用系统通过Webchip网络芯片与Gateway联接,再进入Internet网,如图4所示。
Webchip内部固化了MCUNet协议,它与em-Gateway和OSGi协议兼容,是MCU电子设备与计算机平台上的Gateway建立联系的一种软件协议,可以处理MCU与Gateway之间的通信。MCUNet协议结构简单,但功能很强。Webchip作用就是解释通信协议,控制数据传输,使MCU应用系统不用去管理协议的具体内容,只需要解释和执行Webchip送来的命令(Webchip与MCU之间共有17条命令)。Webchip将来自MCU的数据编译成符合协议规定的格式,然后传给Gateway,而由Gateway下传的命令和数据由Webchip负责解释,然后通过命令方式送给MCU。图4中的网关服务器用于协议的解释、转换、执行等,通常由一台普通PC机来实现。
Webchip的简要工作过程是:Webchip通过SPI三线串行接口与MCU应用系统联接。它与MCU应用系统交换信息是由17条简单的指令进行控制。Webchip的另一端以RS-232、RS-485或Modem等接口电路与基于PC机平台的网关接口。Webchip在MCU应用系统接入Internet的过程中实际上是起
了底层协议的编译、解释和转换作用,将MCU应用系统与网关再与Internet联接起来。这是由于PC机网关能提供>
这种方案相对更简单,对MCU要求较低,无论是运行速度、硬件配置和存储器容量等方面均无特殊要求;软件设计也只需在原应用系统的基础上增加一小段接口程序,其它无需作大的改动。对设计工程师,不需要熟悉复杂的网络协议和相关接口,完全不必考虑任何网络协议,只需要解释并执行We-bchip传送过来的指令和数据就可以实现与Internet网络联接。其开发周期更短,也较灵活。同采用专用嵌入式网络协议方案一样,需要微机做网关,网关中的一个IP地址可以联接多个嵌入式应用系统。
目前还买不到PS2000的芯片,只是最近在力源网站上有了PS2000的详细芯片资料。其开发套件也较便宜,包含带有通信接口的PSM2000模块板和PSE2000 EVKIT演示套件等。
3 结束语
随着芯片技术的发展,嵌入Internet还会有更多更新的接入方式出现。针对目前的情况,最主要的问题是需要解决成本问题,以上几种接入方式虽然有成本较低的方案,但与众多嵌入系统中便宜的MCU系统相比,其接入成本在整个系统中还是占有相当大的比重。只有接入成本进一步降低才能使嵌入式Internet真正进入寻常百姓家庭,真正在嵌入系统和智能家庭的大市场中发挥重要作用,因此还需要进一步开发单芯片的最低成本的解决方案,以适应市场的需要。
学嵌入式linux吧嵌入式Linux *** 作系统学习规划
ARM+LINUX路线,主攻嵌入式Linux *** 作系统及其上应用软件开发目标:
(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2) 必须掌握一个嵌入式 *** 作系统 (初步定为uclinux或linux,版本待定)
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是 *** 作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个 *** 作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是 *** 作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、 *** 作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是011版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式 *** 作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德 *** 的《嵌入式系统》及其他arm9手册与arm汇编指令等。
4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、80211,Bluetooth,GPRS、GSM、CDMA等。
2010-8-21 16:46 回复
12290173 2楼
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻**。还有一些不愿意做但必须要做的!
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
嵌入式书籍推荐
Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》美Stephen Prata着
2、《The C Programming Language, 2nd Edition》美Brian W Kernighan David M Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德 *** 胡希明著
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》 杨宗德著
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德 *** 胡希明着
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系统原理与实例开发》 杨宗德著
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构性能分析》
4、《深入理解计算机系统》美Randal E Bryant David O''Hallaron着
5、《 *** 作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
C语言书籍推荐
1 The C programming language 《C程序设计语言》
2 Pointers on C 《C和指针》
3 C traps and pitfalls 《C陷阱与缺陷》
4 Expert C Lanuage 《专家C编程》
5 Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6 Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7《C语言嵌入式系统编程修炼》
8《高质量C++/C编程指南》林锐
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。
这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)