本篇文章给大家谈谈接口管理工具 嵌入式,以及嵌入系统接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享接口管理工具 嵌入式的知识,其中也会对嵌入系统接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
虚拟化、SOA、嵌入式软件有什么特点?
呵呵,我们公司是做桌面虚拟化的
服务器虚拟化主要的有三种
Citrix XenServer
微软 Windows Server 2008 Hyper-V
VMware ESX Server 这是最常用的
总特点:
将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,或者让几台服务器变成一台服务器来用,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力
VMware ESX ServerESX Server
运行在服务器裸机上,是基于硬件之上的架构。属于企业级应用。用同一台服务器底层硬件,划分出若干虚机,集中管理,很方便的做集群,负载均衡,热迁移等功能。
XenCenter是Citrix的虚拟化图形接口管理工具,可在同一界面,管理多台的XenServer服务器。管理上,通常会先在XenCenter建立一个服务器群组(Pool),然后将位于同一机房内的XenServer服务器加入。
和大多数服务器半虚拟化产品相同的是,当数台XenServer服务器连接到同一台共享磁盘驱动器,且将虚拟档案放置于此的前提下,可以通过Xen-Motion这项功能,将虚拟机以手动方式在线转移到其它的XenServer服务器,从事主机的维护,或者降低硬件资源的消耗。
微软Hyper-V虚拟化平台,是以Xen的虚拟化技术为基础开发而成的,而这个虚拟化平台目前已整合在64位的Windows Server 2008操作系统,
六大接口管理平台,总有一款适合你的!
先聊一聊前端和后端分离的优点。前后端分离优点如下:
其中不可避免的就是定制好接口文档
接口管理工具 嵌入式,后端工程师要写好单元测试,推荐使用 chrome 的插件 postman 或 soapui或 jmeter,service 层的测试用例拿 junit 写。
但是这种情况对于接口文档管理很不方便,所以下面就罗列一些互联网公司常用的接口文档管理平台。
Swagger是一个大型的API开发者的工具框架,该框架提出
接口管理工具 嵌入式了一个编写OpenAPI的规范(命名为OAS),并且Swagger可以跨整个API生命周期进行开发,从设计和文档到测试和部署。
Swagger框架三核心:
YApi部署流程介绍
YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。它可以帮助开发者轻松创建、发布、以及维护API。除此之外,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。特性:
难点:如果需要要执行自动化测试,需要编写脚本。
Eolinker是国内企业级IT研发管理解决方案服务品牌,在线API接口管理服务供应商,致力于满足各行业客户在不同应用环境中对研发管理全生命周期的个性化需求,提供API开发管理(AMS)、开发团队协作、自动化测试、网关(AGW)以及监控(AMT)等服务。
特性:
ShowDoc一个非常适合IT团队的在线API文档、技术文档工具。
随着移动互联网的发展,BaaS(后端即服务)越来越流行。服务端提供API,APP端或者网页前端便可方便调用数据。用ShowDoc可以非常方便快速地编写出美观的API文档。
项目地址: https://www.showdoc.cc
DOClever是一个可视化接口管理工具 ,可以分析接口结构,校验接口正确性, 围绕接口定义文档,通过一系列自动化工具提升
接口管理工具 嵌入式我们的协作效率。
特性:
DOClever官网: http://www.doclever.cn/controller/index/index.html
DOClever GitHub: https://github.com/sx1989827/DOClever
阿里妈妈前端团队出品的开源接口管理工具RAP第二代,RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而
接口管理工具 嵌入式我们可以避免更多重复劳动。基于RAML的接口定义、文档生成、Mock Server完成了定义和使用的分离,通过一套规范完成的接口定义,可以用不同的工具得到适应不同API管理系统的输出,有更多的可能性,同时保持了核心定义不变。RAP较之于RAML,前者更加集中,所有的定义、文档、mock都在同一个服务中完成,并且实时生效,方便快捷,如果只考虑方便易用,RAP是更好的选择,而RAML显得更加繁琐,更适合于公开的接口定义,方便在各个系统之间流转。
github源码地址: https://github.com/thx/rap2-delos
什么是嵌入式?搞嵌入式是不是等于写代码?
随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点,通信、计算机、消费电子技术(3C)合一的趋势正在逐步形成,无所不在的网络和无所不在的计算(everything connecting, everywhere computing)正在将人类带入一个崭新的信息社会。一、嵌入式系统 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件是可裁剪的,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。嵌入式系统最典型的特点是与人们的日常生活紧密相关,任何一个普通人都可能拥有各类形形色色运用了嵌入式技术的电子产品,小到MP3、PDA等微型数字化设备,大到信息家电、智能电器、车载GIS,各种新型嵌入式设备在数量上已经远远超过了通用计算机。这也难怪美国著名未来学家尼葛洛庞帝在1999年1月访华时就预言,4~5年后嵌入式智能工具将成为继PC机和Internet之后计算机工业最伟大的发明。 1.1 历史与现状 虽然嵌入式系统是近几年才开始真正风靡起来的,但事实上嵌入式这个概念却很早就已经存在了,从上个世纪70年代单片机的出现到今天各种嵌入式微处理器、微控制器的广泛应用,嵌入式系统少说也有了近30年的历史。纵观嵌入式系统的发展历程,大致经历了以下四个阶段: 无操作系统阶段 嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上"系统"的概念。 这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。 简单操作系统阶段 20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的"操作系统"开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。 这一阶段嵌入式系统的主要特点是:出现了大量高可靠、低功耗的嵌入式CPU(如Power PC等),各种简单的嵌入式操作系统开始出现并得到迅速发展。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。 实时操作系统阶段 20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。 这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。 面向Internet阶段 21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。 信息时代和数字时代的到来,为嵌入式系统的发展带来了巨大的机遇,同时也对嵌入式系统厂商提出了新的挑战。目前,嵌入式技术与Internet技术的结合正在推动着嵌入式技术的飞速发展,嵌入式系统的研究和应用产生了如下新的显著变化: 新的微处理器层出不穷,嵌入式操作系统自身结构的设计更加便于移植,能够在短时间内支持更多的微处理器。 嵌入式系统的开发成了一项系统工程,开发厂商不仅要提供嵌入式软硬件系统本身,同时还要提供强大的硬件开发工具和软件支持包。 通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时CORBA等,嵌入式软件平台得到进一步完善。 各类嵌入式Linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要,目前已经形成了能与Windows CE、Palm OS等嵌入式操作系统进行有力竞争的局面。 网络化、信息化的要求随着Internet技术的成熟和带宽的提高而日益突出,以往功能单一的设备如电话、手机、冰箱、微波炉等功能不再单一,结构变得更加复杂,网络互联成为必然趋势。 精简系统内核,优化关键算法,降低功耗和软硬件成本。 提供更加友好的多媒体人机交互界面。 1.2 体系结构 根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是"控制、监视或者辅助设备、机器和车间运行的装置"(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。一般而言,整个嵌入式系统的体系结构可以分成四个部分:嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,如图1所示。 图1 嵌入式系统的组成 嵌入式处理器 嵌入式系统的核心是各种类型的嵌入式处理器,嵌入式处理器与通用处理器最大的不同点在于,嵌入式CPU大多工作在为特定用户群所专门设计的系统中,它将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。 嵌入式处理器的体系结构经历了从CISC(复杂指令集)至RISC(精简指令集)和Compact RISC的转变,位数则由4位、8位、16位、32位逐步发展到64位。目前常用的嵌入式处理器可分为低端的嵌入式微控制器(Micro Controller Unit,MCU)、中高端的嵌入式微处理器(Embedded Micro Processor Unit,EMPU)、用于计算机通信领域的嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)和高度集成的嵌入式片上系统(System On Chip,SOC)。 目前几乎每个半导体制造商都生产嵌入式处理器,并且越来越多的公司开始拥有自主的处理器设计部门,据不完全统计,全世界嵌入式处理器已经超过1000多种,流行的体系结构有30多个系列,其中以ARM、PowerPC、MC 68000、MIPS等使用得最为广泛。 嵌入式外围设备 在嵌入系统硬件系统中,除了中心控制部件(MCU、DSP、EMPU、SOC)以外,用于完成存储、通信、调试、显示等辅助功能的其他部件,事实上都可以算作嵌入式外围设备。目前常用的嵌入式外围设备按功能可以分为存储设备、通信设备和显示设备三类。 存储设备主要用于各类数据的存储,常用的有静态易失型存储器(RAM、SRAM)、动态存储器(DRAM)和非易失型存储器(ROM、EPROM、EEPROM、FLASH)三种,其中FLASH凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。 目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用,包括RS-232接口(串行通信接口)、SPI(串行外围设备接口)、IrDA(红外线接口)、I2C(现场总线)、USB(通用串行总线接口)、Ethernet(以太网接口)等。 由于嵌入式应用场合的特殊性,通常使用的是阴极射线管(CRT)、液晶显示器(LCD)和触摸板(Touch Panel)等外围显示设备。 嵌入式操作系统 为了使嵌入式系统的开发更加方便和快捷,需要有专门负责管理存储器分配、中断处理、任务调度等功能的软件模块,这就是嵌入式操作系统。嵌入式操作系统是用来支持嵌入式应用的系统软件,是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动程序、系统内核、设备驱动接口、通信协议、图形用户界面(GUI)等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理复杂的系统资源,能够对硬件进行抽象,能够提供库函数、驱动程序、开发工具集等。但与通用操作系统相比较,嵌入式操作系统在系统实时性、硬件依赖性、软件固化性以及应用专用性等方面,具有更加鲜明的特点。 嵌入式操作系统根据应用场合可以分为两大类:一类是面向消费电子产品的非实时系统,这类设备包括个人数字助理(PDA)、移动电话、机顶盒(STB)等;另一类则是面向控制、通信、医疗等领域的实时操作系统,如WindRiver公司的VxWorks、QNX系统软件公司的QNX等。实时系统(Real Time System)是一种能够在指定或者确定时间内完成系统功能,并且对外部和内部事件在同步或者异步时间内能做出及时响应的系统。在实时系统中,操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关,也就是说,实时系统对逻辑和时序的要求非常严格,如果逻辑和时序控制出现偏差将会产生严重后果。 实时系统主要通过三个性能指标来衡量系统的实时性,即响应时间(Response Time)、生存时间(Survival Time)和吞吐量(Throughput): 响应时间 是实时系统从识别出一个外部事件到做出响应的时间; 生存时间 是数据的有效等待时间,数据只有在这段时间内才是有效的; 吞吐量 是在给定的时间内系统能够处理的事件总数,吞吐量通常比平均响应时间的倒数要小一点。 实时系统根据响应时间可以分为弱实时系统、一般实时系统和强实时系统三种。弱实时系统在设计时的宗旨是使各个任务运行得越快越好,但没有严格限定某一任务必须在多长时间内完成,弱实时系统更多关注的是程序运行结果的正确与否,以及系统安全性能等其他方面,对任务执行时间的要求相对来讲较为宽松,一般响应时间可以是数十秒或者更长。一般实时系统是弱实时系统和强实时系统的一种折衷,它的响应时间可以在秒的数量级上,广泛应用于消费电子设备中。强实时系统则要求各个任务不仅要保证执行过程和结果的正确性,同时还要保证在限定的时间内完成任务,响应时间通常要求在毫秒甚至微秒的数量级上,这对涉及到医疗、安全、军事的软硬件系统来说是至关重要的。 时限(deadline)是实时系统中的一个重要概念,指的是对任务截止时间的要求,根据时限对系统性能的影响程度,实时系统又可以分为软实时系统(soft real-time-system)和硬实时系统(hard real-time-system)。软实时指的是虽然对系统响应时间有所限定,但如果系统响应时间不能满足要求,并不会导致系统产生致命的错误或者崩溃;硬实时则指的是对系统响应时间有严格的限定,如果系统响应时间不能满足要求,就会引起系统产生致命的错误或者崩溃。如果一个任务在时限到达之时尚未完成,对软实时系统来说还是可以容忍的,最多只会降低系统性能,但对硬实时系统来说则是无法接受的,因为这样带来的后果根本无法预测,甚至可能是灾难性的。在目前实际运用的实时系统中,通常允许软硬两种实时性同时存在,其中一些事件没有时限要求,另外一些事件的时限要求是软实时的,而对系统产生关键影响的那些事件的时限要求则是硬实时的。 嵌入式应用软件 嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件,由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。 1.3 关键问题 嵌入式系统是将先进的计算机技术、半导体技术以及电子技术与特定行业的具体应用相结合的产物,因此必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,嵌入式系统的开发充满了竞争、机遇与创新,需要解决好如下一些关键问题: 内核精巧 嵌入式系统的应用领域一般都是小型电子装置,系统资源相对有限,因此对内核的要求相当高,较之传统的操作系统来讲要小得多,例如ENEA公司推出的OSE分布式嵌入式系统,整个内核只有5KB。 面向应用 嵌入式系统通常是面向用户、面向产品、面向特定应用的。嵌入式系统中的CPU大多工作在为特定用户群定制的环境中,具有低耗、体积小、集成度高等特点,在进行软硬件设计时必须突出效率、去除冗余,针对用户的具体需求对系统进行合理的配置,方能达到理想的性能。 系统精简 嵌入式系统中的系统软件和应用软件通常没有明显的区别,不要求其功能及实现上过于复杂,这样一方面有利于控制系统成本,另一方面也有利于保证系统安全。 性能优化 嵌入式系统通常都要求有一定的实时性保障,为了提高执行速度和系统性能,嵌入式系统中的软件一般都固化在存储芯片或者处理器的内部存储器件当中,而不是存贮在磁盘等外部载体中。由于嵌入式系统的运算速度和存储容量存在一定程度上的限制,而且大部分系统都必须有较高的实时性保证,因此对软件质量(特别是可靠性方面)有着较高的要求。 专业开发 嵌入式系统本身并不具备自主开发能力,用户不能直接在其上进行二次开发。当系统完成之后,用户如果需要修改其中某个程序的功能,必须借助一套完整的开发工具和环境。嵌入式系统中专用的开发工具和环境通常是基于通用计算机上的软硬件设备,以及各种逻辑分析仪、混合信号示波器等。 回页首 二、嵌入式Linux Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中,适合于特定嵌入式应用场合的专用Linux操作系统。 2.1 优势 嵌入式Linux的开发和研究是操作系统领域中的一个热点,目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。Linux之所以能在嵌入式系统市场上取得如此辉煌的成果,与其自身的优良特性是分不开的。 广泛的硬件支持 Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC等多种体系结构,目前已经成功移植到数十种硬件平台,几乎能够运行在所有流行的CPU上。Linux有着异常丰富的驱动程序资源,支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。 内核高效稳定 Linux内核的高效和稳定已经在各个领域内得到了大量事实的验证,Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分,其独特的模块机制可以根据用户的需要,实时地将某些模块插入到内核或从内核中移走。这些特性使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。 开放源码,软件丰富 Linux是开放源代码的自由操作系统,它为用户提供了最大限度的自由度,由于嵌入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就变得至关重要了。Linux的软件资源十分丰富,每一种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。在Linux上开发嵌入式应用软件一般不用从头做起,而是可以选择一个类似的自由软件做为原型,在其上进行二次开发。 优秀的开发工具 开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In-Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能够非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常昂贵,而且只适合做非常底层的调试,如果使用的是嵌入式Linux,一旦软硬件能够支持正常的串口功能时,即使不用在线仿真器也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。 完善的网络通信和文件管理机制 Linux至诞生之日起就与Internet密不可分,支持所有标准的Internet网络协议,并且很容易移植到嵌入式系统当中。此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,这些都为开发嵌入式系统应用打下了很好的基础。 2.2 挑战 目前,嵌入式Linux系统的研发热潮正在蓬勃兴起,并且占据了很大的市场份额,除了一些传统的Linux公司(如RedHat、MontaVista等)正在从事嵌入式Linux的开发和应用之外,IBM、Intel、Motorola等著名企业也开始进行嵌入式Linux的研究。虽然前景一片灿烂,但就目前而言,嵌入式Linux的研究成果与市场的真正要求仍有一段差距,要开发出真正成熟的嵌入式Linux系统,还需要从以下几个方面做出努力。 提高系统实时性 Linux虽然已经被成功地应用到了PDA、移动电话、车载电视、机顶盒、网络微波炉等各种嵌入式设备上,但在医疗、航空、交通、工业控制等对实时性要求非常严格的场合中还无法直接应用,原因在于现有的Linux是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行和响应速度,并且符合POSIX 1003.1b标准,但从本质上来说并不是一个嵌入式实时操作系统。Linux的内核调度策略基本上是沿用UNIX系统的,将它直接应用于嵌入式实时环境会有许多缺陷,如在运行内核线程时中断被关闭,分时调度策略存在时间上的不确定性,以及缺乏高精度的计时器等等。正因如此,利用Linux作为底层操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,是现在日益流行的解决方案。 改善内核结构 Linux内核采用的是整体式结构(Monolithic),整个内核是一个单独的、非常大的程序,这样虽然能够使系统的各个部分直接沟通,有效地缩短任务之间的切换时间,提高系统响应速度,但与嵌入式系统存储容量小、资源有限的特点不相符合。嵌入式系统经常采用的是另一种称为微内核(Microkernel)的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际需要进行取舍。Microkernel的执行效率虽然比不上Monolithic,但却大大减小了内核的体积,便于维护和移植,更能满足嵌入式系统的要求。可以考虑将Linux内核部分改造成Microkernel,使Linux在具有很高性能的同时,又能满足嵌入式系统体积小的要求。 完善集成开发平台 引入嵌入式Linux系统集成开发平台,是嵌入式Linux进一步发展和应用的内在要求。传统上的嵌入式系统都是面向具体应用场合的,软件和硬件之间必须紧密配合,但随着嵌入式系统规模的不断扩大和应用领域的不断扩展,嵌入式操作系统的出现就成了一种必然,因为只有这样才能促成嵌入式系统朝层次化和模块化的方向发展。很显然,嵌入式集成开发平台也是符合上述发展趋势的,一个优秀的嵌入式集成开发环境能够提供比较完备的仿真功能,可以实现嵌入式应用软件和嵌入式硬件的同步开发,从而摆脱了"嵌入式应用软件的开发依赖于嵌入式硬件的开发,并且以嵌入式硬件的开发为前提"的不利局面。一个完整的嵌入式集成开发平台通常包括编译器、连接器、调试器、跟踪器、优化器和集成用户界面,目前Linux在基于图形界面的特定系统定制平台的研究上,与Windows CE等商业嵌入式操作系统相比还有很大差距,整体集成开发环境有待提高和完善。 回页首 三、关键技术 嵌入式系统是一种根据特定用途所专门开发的系统,它只完成预期要完成的功能,因此其开发过程和开发环境同传统的软件开发相比有着显著的不同。 3.1 开发流程 在嵌入式系统的应用开发中,整个系统的开发过程如图2所示: 图2 嵌入式系统的开发流程 嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的、固定的、成熟的,这就大大减少了由硬件系统引入错误的机会。此外,由于嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的API函数就可以完成大部分工作,因此大大简化了开发过程,提高了系统的稳定性。嵌入式系统的开发者现在已经从反复进行硬件平台设计的过程中解脱出来,从而可以将主要精力放在满足特定的需求上。 嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行。 需要交叉开发环境(Cross Development Environment)的支持是嵌入式应用软件开发时的一个显著特点,交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,如图3所示。 图3 交叉开发环境 宿主机(Host)是一台通用计算机(如PC机或者工作站),它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具(如WindRiver的Tornado、Microsoft的Embedded Visual C++等),能够大大提高嵌入式应用软件的开发速度和效率。 目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试,最后目标机在特定环境下脱离宿主机单独运行。 建立交叉开发环境是进行嵌入式软件开发的第一步,目前常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链、目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。 3.2 交叉编译和链接 在完成嵌入式软件的编码之后,需要进行编译和链接以生成可执行代码,由于开发过程大多是在使用Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。 交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器。例如在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和交叉链接器,比如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。 嵌入式系统在链接过程中通常都要求使用较小的函数库,以便最后产生的可执行代码能够尽可能地小,因此实际运用时一般使用经过特殊处理的函数库。对于嵌入式Linux系统来讲,功能越来越强、体积越来越大的C语言函数库glibc和数学函数库libm已经很难满足实际的需要,因此需要采用它们的精化版本uClibc、uClibm和newlib等。 目前嵌入式的集成开发环境都支持交叉编译和交叉链接,如WindRiver Tornado和GNU工具链等,编写好的嵌入式软件经过交叉编译和交叉链接后通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。 3.3 交叉调试 嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调
~
五大接口管理平台比较
本人程序猿一枚,多年来深陷接口管理的漩涡中,闲来无事的时候,把现有开放的接口管理平台仔细捋了一遍,整理出来分享给大家,各位看官各取所需,都别客气哈。
Eolinker
这是在所有接口管理平台中我觉得做的最好的一个了,首先功能齐全,基本上其他平台上有的,eolinker都具备了,从项目管理到接口管理,支持团队协作,接口测试,版本管理,在线分享,导入导出等等,十分强大,而且功能虽多,界面却很干净整洁,体验也很棒,强烈推荐!
接口详情页,信息完备,接口信息一览无余,还可以随时切换测试,mock,历史,修改,顺便说一句,这里的测试功能支持在线和本地测试(需要下插件),甚至可以构造表达式,想先怎么处理数据都行,超极好用!
除此之外,eolinker甚至还集成格式转换,编码转换,加密解密等等的小工具。如果担心接口数据安全,还可以直接从官网上下一个开源版本安装到本地,不过功能就没有线上的那么强大了,但是基本需求都能满足。讲道理,功能强大到这个地步我是服气的。
RAP
从接口管理的功能上来说,相对eolinker来说就有一些逊色了,文档信息不够详细,团队协作那块第一次用的时候我真的是完全懵逼了,而且界面真的是有些简陋(感觉像是后台开发人员写的界面),不过接口管理的基本功能都有,支持版本管理,mock测试,导入导出,而且是开源的,文档也比较详细,大家有时间的话可以以此为基础开发自己想要的功能咯。
easyAPI
在接口文档方面,虽然比起eolinker来说还是相对简单,不过对于那些喜欢简单接口文档的朋友来说,easyAPI也不失为一个不错的选择,不过在我试用的过程中,界面好像不是很稳定,有些按钮点击时没有反应,图标时可见时不可见。而且因为接口文档和接口测试不是在一个菜单之下的,两个功能之间的转换有些费力。
不过接口测试的功能还是挺不错的,左边填数据,右边显示结果,感觉还是挺直观的,如果能支持本地测试就更好啦。
EasyAPI在主菜单上还有一个接口监控的按钮,不过点击之后页面为空,似乎一个很牛逼的功能——可能是我打开的方式不对吧,另外还有一个网关的功能,据说可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的API,需要购买才能使用,大家如果感兴趣的话可以试试。
Apizza
用过DHC的朋友应该会觉得apizza的界面似曾相识,用户在编辑接口的同时也可以进行接口测试,很方便也很简单,如果只是想使用接口管理平台进行接口管理和接口测试的朋友,apizza不失为一个不错的选择,功能虽不强大,但十分轻巧简单。
showDoc
比起其它接口管理平台,showDoc更像一款支持在线分享的文档工具,直接给用户提供一个富文本编辑器,想要什么格式的自己编写,简单粗暴。这样的话虽然管理接口的时候相对麻烦,但是拓展性挺强,它给个平台,我们想分享什么都行,会议记录啊,项目信息啊,下班后哪吃饭啊...不过相对来说,测试功能就不怎么好用了,有得有失吧,看大家想用来做什么咯。
以上5款接口管理工具的简单介绍完啦,希望对大家有所帮助~
嵌入式需要用什么软件
一、嵌入式系统高级语言编程特点
随着嵌入式系统应用范围的不断扩大和嵌入式实时操作系统RTOS(Real Time Operating System)的广泛使用,高级语言编程已是嵌入式系统设计的必然趋势。因为汇编语言和具体的微处理器的硬件结构密切相关,移植性较差,既不宜在复杂系统中使用,又不便于实现软件重用;而高级语言具有良好的通用性和丰富的软件支持,便于推广,易于维护。因此高级语言编程具有许多优势。
(1) 通用性强。随着微处理器技术的不断发展,其功能越来越具体,种类越来越多,而不同种类的微处理器都有自己专用的汇编语言。这就为系统开发者设置了一个巨大的障碍,使得系统编程更加困难,软件重用无法实现;而高级语言一般和具体机器的硬件结构联系较少,比较流行的高级语言对多数微处理器都有良好的支持,通用性较好。
(2) 容易编程。随着嵌入式系统应用范围的不断扩大和应用层面的不断深入,系统规模越来越大,结构越来越复杂,设计变得越来越困难。一个系统内有多种微处理器已是常见的事情。这时,要用汇编语言编程不仅要求编程人员要对所有微处理器的汇编语言都了如指掌,而且随着任务复杂程度的不断提高,用汇编语言实现规模较大的任务难度极大;而高级语言的语意层次较高,且有丰富的程序库支持,因此,编写较复杂的程序相对简单。使用高级语言编程,不仅能够加快系统开发进程,节省大量时间,同时也有利于系统调试及维护工作。
(3) 容易阅读。由于汇编语言的语意层次较低,在阅读汇编语言程序时,往往要花费大量精力分析"细节"问题,如为什么把一个数据传送给一个寄存器,为什么把某个标志位清零等。当把注意力放在这些"细节"上的时候,往往又把程序的主线忘记了。因此,汇编语言程序不仅难写,而且难读。采用高级语言就可以很好地解决这些问题。因为高级语言的语意层次较高,表达方式更接近人们日常的思维方法,一些数学表达式可以直接用一条语句表达,程序的思路更加清晰、简捷。因此,程序也就容易阅读。
(4) 可移植性好。由于汇编语言和具体的微处理器密切相关,为某个微处理器设计的程序不能直接移植到另一个不同种类的微处理器上使用,因此,移植性差;而高级语言对所有微处理器都是通用的,因此,程序可以在不同的微处理器上运行,可移植性较好。这是实现软件重用的基础。
(5) 可维护性好。高级语言程序往往是模块化设计,各个模块之间的接口是固定的。因此,当系统出现问题时,可以很快地将问题定位到某个模块内,并尽快得到解决。另外,模块化设计也便于系统功能的扩充和升级。
(6) 直接支持中断管理。中断是嵌入式系统最重要也是最常用的信息交换方式,因此中断系统是否灵活,中断功能是否强大对系统的性能影响极大。在高级语言中,一般都有强大的中断管理机制,以便构建高效灵活的中断系统;而在汇编语言中,一般要由程序设计者自己编程来进行中断管理。这不仅增加了编程的难度,而且效果也不一定好。
(7) 支持软件重用。由于汇编语言的可移植性极差,使得其软件重用性严重受阻;而高级语言具有较好的通用性和可移植性,这就使得高级语言程序可以在不同时间、不同地点、不同系统、不同人员之间分享,实现软件重用。这不仅可以提高产品质量,缩短开发周期,降低产品成本,而且还可以使软件开发走上正规化、产业化的道路[1]。
二、嵌入式系统高级编程语言概述
在过去40多年,人们开发研制了几十种计算机语言,但是仅有少数几种得到了广泛应用。这就提示我们选择一个合适的语言系统并不容易。在小型嵌入式系统中,通常只有一个微处理器,并且其主要工作往往不是计算,而是控制,应选择控制能力较强的语言。在大型嵌入式系统中,往往会有多个微处理器或计算机并行工作,构成多机系统。它们中有些工作于真正的嵌入式模式,有的则为纯粹的信息处理。此时,对系统的编程就变得相当复杂,不同的任务可能会用不同的语言编程。因此,大型系统往往是一个多语言系统。对于这种"混合"系统的语言选择更应慎重考虑。
目前,在嵌入式系统开发过程中使用的语言种类很多,但仅有少数几种语言得到了比较广泛的应用。本文选择了Ada、C/C++、Modula-2作为讨论对象,并对Java作简要介绍。
Ada语言是20世纪70年代美国国防部开发并投入使用的功能强大的通用系统开发语言,最初为Ada83。它支持模块化、独立编译、协处理等功能。其可靠性、可维护性、可读性都是相当好的。后来,为了更好地支持OOP(Object-Oriented Programming),对其进行了改进,形成了目前广泛使用的Ada95。使用Ada语言可以大大改善系统的清晰性、可靠性、可维护性等性能指标[2,3]。它是美国国防部指定的唯一一种可用于军用系统开发的语言。
C语言是由Dennis Richie于1972年在ATBell实验室研究成功并投入使用的系统编程语言。其设计目标是使C既具有汇编语言的效率,又具有高级语言的易编程性。其最具代表性的应用是UNIX操作系统。从20世纪80年代中期C语言涉足实时系统后,受到了普遍欢迎。目前是使用最广泛的嵌入式系统编程语言。C++是由Bjarne Stroustrup 于1995年在Bell实验室研制成功并投入使用的。C++在支持现代软件工程、OOP、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、程序复杂程度等方面比C语言程序性能差一些[2,4,5]。
Modula-2是由Nicklans Wirth在70年代后期根据Pascal 和Modula开发的系统设计语言。其主要目标是在模块化、系统编程、协同处理等方面对Pascal 进行改进。Modula-2具有很强的类型检查能力和丰富的低级功能支持。因此,可用它设计一个完整的实时程序而不用汇编语言的支持。Modula-3是1988年由DEC(Digital Equipment Company)和ORC(Olivetti Research Center)根据Modula-2开发研制并投入使用的系统开发语言。目标是设计一个功能强大但结构简单的通用编程语言。它在协同处理、OOP、自动垃圾收集以及对C语言和UNIX的支持等方面对Modula-2进行了改进[6]。
考察一门语言是否适用,需要从多个方面进行考虑。不同语言,都有自己的特色。很难将其全面进行比较。另外,任何一门语言的运行特性都与运行环境密切相关,因此,选择语言时,应综合考虑。为叙述方便,我们把语言的性能划分为基本性能和运行性能两个方面进行分析。
(1) 基本性能
一门语言的基本性能主要是指语言本身的固有特性,或称静态特性,即构成语言的组成部分所具有的特性。它不仅决定着语言的可用性、适用性、可靠性等,而且对应用程序的开发产量、便携性、可维护性、安全性也有一定影响。它是一门语言的核心和基石。考查语言的基本性能主要从以下几个方面入手:与汇编语言/机器语言的接口,直接寻址,对硬件的控制,位操作,中断处理,指针操作,数据类型的支持及检测,控制结构的支持及检测,模块化支持,独立编译支持,任务结构支持,异常事件处理,数学模型支持,语法和整体结构,多任务支持,标准程序库,面向对象编程(OOP)结构等。
(2) 运行性能
语言的运行性能是指其应用软件在实际运行时所表现出来的行为特点,是一门语言的动态特性。它对语言的适用性、实用性及可用性影响极大。主要表现在任务期限设置、代码执行时间的简单评价,调度策略选择,时序分析支持等几个方面。由于语言的运行性能和运行环境密切相关,如CPU速度、内存大小、硬盘速度、操作系统、编译环境等。因此,评价语言的运行性能应和具体的应用环境联系起来,任何理论上的评价都没有多大的实际意义。故本文不再讨论这方面的内容。
三、常用嵌入式系统高级编程语言基本性能
一门语言的基本性能是组成这门语言的基本要素,是决定其性能好坏的关键因素。因此,认真研究语言的基本性能是非常必要的。下面对上述几种流行的嵌入式系统编程语言的基本性能进行简单的分析和比较[7]。
(1) 与汇编语言和机器代码的接口
在Ada语言中,可以通过子程序功能实现对汇编语言及机器代码的访问。标准程序包MACHINE-CODE支持这一功能。在C中,汇编语言可以定义为一个asm模块嵌入在C源代码中,也可以编写成一个独立的外部进程,用功能调用进行通讯。宏(Macros)也可以用来提供汇编语言操作。语言本身没有提供这方面的机制,由编译器提供支持。
(2) 直接寻址
Ada通过SYSTEM包中的Address类寻址绝对地址;C/C++ 通过指针完成绝对寻址,在C++中也可以通过Peek、Poke操作完成存储器寻址;Modula-2 通过SYSTEM模块支持绝对寻址。
(3) 对硬件的访问和控制
Ada通过表述从句把Ada代码映射到具体器件;C/C++通过指针完成对硬件的操作;在Modula-2中器件被标识为具有绝对地址的对象,通过赋值语句访问这些对象。
(4) 位操作
Ada 具体的位可以在表述从句中指明,多个独立位也可组成一个逻辑字,通过逻辑操作对它们进行加工处理。位操作是C的强项,逻辑操作、移位操作均可实现位操作;在C++中,还可以通过定义"bitfields"结构实现更多的位操作功能。Modula-2用"SET"结构处理位操作。在嵌入式应用中最有用的结构是"BITSET",通过它可以方便地实现各种位操作。
(5) 中断处理
Ada通过中断处理任务实现中断处理。一个中断任务和一个中断矢量密切相关,在中断矢量地址处存放中断任务入口地址。C/C++语言本身没有提供标准的中断处理机制,用户可以自行处理。Modula-2通过SYSTEM模块中的IOTRANSFER进程实现中断处理。用户也可以编写自己的中断处理程序。
(6) 指针
三种语言都提供了较强的指针操作。
(7) 数据类型检测
Ada 有严格的数据类型检测机制,混合类型是禁止的,数据类型的转换是允许的,但有严格的规范。C语言的数据类型检测功能较弱,在数据类型转换时可能会出现错误,C++有改进。Modula-2 对数据类型检测严格,不允许不明确的数据类型转换。
(8) 程序控制结构
Ada 提供了一整套严格的程序控制结构以支持分支、循环等功能,也支持无条件转移;C/C++提供了分支、循环等控制结构,方便灵活,但在使用时应注意避免不安全因素;Modula-2在分支、循环控制方面是很严格的,但在使用CASE-ELSE结构时应注意,在无条件转移时,用EXIT跳出循环,用RETURN结束进程,使用时应多加小心。
(9) 模块结构与独立编译
Ada程序的基本单元是subprogram、package、task和generic,而编译的基本单元是subprogram和package,所有程序单元都可以独立编译,类型检查严格,没有公用数据区。C程序的基本单元是function,外部变量是全局变量,内部变量是局部变量;C++程序是若干编译文件的集合,每个文件可以定义class、function全局变量等类型,每个文件可以独立编译。Modula-2 的主程序由若干程序模块和库模块组成,程序模块是程序单元的最高层,各模块可独立编译。
(10) 异常事件处理
Ada提供了一个综合错误处理机制,用于处理由于语言本身和用户自己引起的异常事件;C/C++语言没有提供直接的异常事件处理机制,需由用户自己处理,C++(V3.0)提供直接的异常事件处理功能;PIM Modula-2不提供异常事件处理功能,但也有一些其它编译系统提供运行错误检测和处理机制。
(11) 任务(task)结构支持
"task"是Ada程序标准的组成模块,是该语言重要的和不可分割的组成部分;C中没有独立的"task"结构,但可以通过"function"实现;在C++中可以通过"classes"实现;Modula-2中没有独立的"task"结构,可以用"PROC"结构实现。
(12) 数学模型支持
Ada提供了较好的数学模型支持,无论在何种微处理器上运行,其程序行为都会受到严格检查;C/C++支持定点、浮点运算。但数学模型并不完善,容易引起一些无定义的行为,如被0除或上下溢出等;PIM Modula-2的数学模型与运行环境有联系,新标准在改进。
(13) 语法与结构
Ada英语式结构及语法,程序易读易懂;C/C++是一种简洁(terse)语言,程序比较难读,C++更难读;Modula-2语言结构定义明确,程序容易阅读。
(14) 多任务支持
多任务支持是Ada语言的一大特点,是其不可分割的组成部分;C/C++不支持多任务;Modula-2通过"Coroutines"等机制支持多任务。
(15) 标准库
Ada有丰富的基本功能库;C/C++有非常丰富的库程序,但在应用中应当注意兼容性;Modula-2有比较丰富的库程序,但也应注意兼容性。
(16) OOP结构支持
Ada83就是一个OOP语言,Ada95又有增强;C不支持OOP,C++具有较强的OOP功能;Modula-2不支持OOP,Modula-3支持OOP。
四、 关于Java
Java语言是Sun Microsystems公司于1995年在Internet上发布的面向对象的程序设计语言。其主要研制人是Gosling。他的目标是设计一个能够运行于规模巨大、地域分布、体系异构的网络环境中的语言系统,完成多个电子设备之间的通讯与协同工作。Gosling在设计中采用了虚拟机器码(virtual machine code)方式,即Java语言编译后产生的是虚拟机,虚拟机运行在一个解释器上,解释器用来解释Java编译器编译后的程序。这使得Java成为一个与平台无关的计算机语言,即Java应用程序不用修改即可在不同的软硬件平台上运行。从而实现了"一次编程,到处可用"(Write once,Run anywhere),使得Java语言很快风靡全球,甚至有人说是一场革命[8]。
(1) Java的特点
Java语言是一种网络语言,但它又不仅仅局限于此。近两年Java语言发展迅速,在很多领域得到广泛使用。这说明Java确实具有鲜明的特色。
首先,Java是简单的。它删除了一些高级语言不是绝对必要的东西,如运算符重载、标题文件、指针运算、隐式类型转换、多重继承等,并通过自动垃圾收集功能大大简化了程序设计者的内存管理工作,使程序设计变得简单。
第二,Java是面向对象的。Java语言的设计集中于对象及其接口,它提供了简单的类机制及动态的接口模型。对象中封装了它的状态变量及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并通过继承机制使子类可以使用父类的方法,实现代码重用。
第三,Java的体系结构是中立的。一般来说,网络是由不同结构的机器构成,CPU和作业结构均有不同。让应用程序在不同结构的机器上运行是一件困难的事;但Java编译器能产生一种结构中立的目标文件格式,使编译码可以在不同的处理器上运行。
第四,Java是健全的。Java在编译和运行程序时都要对可能出现的问题进行检查,以防止错误的产生。当程序出现例外时,Java会把它抛弃,以保证计算机系统不会崩溃。
第五,Java是安全的。Java不支持指针操作,避免了指针操作带来的种种弊端。Java拥有多个阶层的互锁(interlocking)保护措施,能有效防止病毒的侵入和破坏行为的发生。字节码验证被Web浏览器用来确保小程序不含病毒。
第六,Java是多线程的。Java可以同时执行多个线程,如它可以在进行计算的同时与用户交互对话。通常,编写多线程程序是困难的;但Java提供了容易使用的同步机制,使程序设计方便容易。
第七,Java是可扩展的。Java的设计使它能够适应不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不影响用户程序的执行,同时,Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和更大的扩展性。
(2) Java与嵌入式系统
Java是网络语言,而嵌入式系统则在功能、价格、体积、功耗、上市时间等方面有特殊要求。因此Java语言受速度和代码容量的限制,本身并不适合于嵌入式系统的应用。但Sun公司并不愿意放弃这个发展潜力巨大的应用市场,对Java进行改进后发表了J2ME(Java2 Micro Edition)。它是Java API的一个子集,只包含了Java的关键特性,是专门针对对内存具有苛刻要求的嵌入式系统而设计的。J2ME粗略地将应用对象划分为两大类:内存在128KB~512KB之间的设备和内存大于512KB的设备,根据不同的类别提供不同的用户接口和软件包。
但是由于嵌入式系统的特殊性,一些在Java语言中被认为是特性优异的东西却在嵌入式系统中成了十分棘手的问题。如缺乏指针寻址和运行于Java虚拟机模式中的安全特性都使Java很难对硬件进行直接控制;自动垃圾收集功能使应用失去了实时决策能力,即它不能以可预知、可重复的时间长度来处理一个具体的代码部分。实际上Java在进行垃圾收集时暂停了整个应用程序的执行,因此,开发人员几乎不能控制垃圾收集的时间。令人鼓舞的是这些问题已经或正在被解决。即时编译(just-in-time-compiler)程序和预先编译(ahead-of-time-compiler)程序都可以提高Java代码的执行速度。如New Monic公司的Real Time Executive和WindRiver公司的Fast J都可以在一定程度上保证绝对时间决策应用的开发。
另一方面,为能够从硬件上更好地支持Java,很多厂家都致力于Java芯片的开发研制,以充分发挥嵌入式Java小巧灵活的特点来开拓嵌入式市场。如HP公司正在开发、完善自己的编译工具和Java虚拟机。其目的是要Java嵌入到如打印机、医学监视器、自动取款机等设备中,使设备具有一定的智能,增加设备的可管理性和可用性,大大提高设备的工作效率。Sun公司宣称将在J2ME中以Profile的形式为每个领域规定API组件。Java TV就是其中面向双向数码电视的API组件。Sun表示,Java TV技术将提供双向电视所需的基本环境、安全性、扩展性及可携带性。通过Java TV技术,开发人员可以开发出更加富有吸引力的信息内容和服务。Sun还宣布,将和通用汽车公司达成合作伙伴关系,共同致力于汽车工业Java标准的确立。一旦Java成为汽车工业的电脑标准语言,Java将增加数百万用户。在过去的一年里,J2ME在无线通讯领域得到了充分的重视和广泛的应用。因为J2ME中包含了能够在大多数消费者的设备中运行的Java虚拟机、专用的API函数库和用于开发和设置的工具。因此,手机生产商纷纷推出能够上网的手机供用户选用。
在控制系统中,Java可以使所有操作在由标准Web浏览器提供的面板上完成。这些控制面板就是Java Applet。Web浏览器可以用来监视或设置系统。这些监视和设置操作均可以通过网络远程进行,这使得系统更加容易管理,特别是那些设置在危险的、遥远的或不易接近地区的设备尤其需要Java的介入。
Java不仅是一门语言,更是一种思想。它将使软件开发在设计风格、设计方法、设计目标、设计过程等方面发生根本性变化。它将成为软件再实现的基础,未来OS的核心,各种应用软件的开发平台和实现环境。但Java并不是万能的,它有自己的应用范围,在网络管理、网络应用、面向对象的应用、可视化操作、交互式应用领域Java是优秀的;但在实时控制领域,如火箭控制、传感器控制、宇宙飞行器的方位控制等方面C或汇编语言依然是最佳选择。
四、总结
近年来计算机语言发展很快。新的语言不断产生;流行语言不断改进,逐步完善;不适用的语言逐步被淘汰。计算机语言的发展呈现出生机勃勃的景象。随着嵌入式技术的发展,嵌入式系统高级编程语言倍受重视,逐步形成了百花齐放,百家争鸣的局面。未来的嵌入式系统编程语言谁主潮流,现在还很难预测。Ada语言定义严格,易读易懂,有较丰富的库程序支持,目前在国防、航空、航天等相关领域应用比较广泛,未来仍将在这些领域占有重要地位。C语言具有广泛的库程序支持,目前在嵌入式系统中是应用最广泛的编程语言,未来仍将在嵌入式系统应用领域占重要地位。C++在PC机系统和工作站系统中都是重要的编程语言。Visual C++将在图形用户接口--GUI方面有较大作用。但C++的目标代码往往比较庞大和复杂,在嵌入式系统应用中应充分考虑这一因素。Modula-2定义清晰,支持丰富,具有较好的模块化结构,在教学科研方面有较广泛的应用。虽然该语言的开发应用一直比较平缓,但近两年在欧洲有所复苏。Java语言相对年轻,但发展势头强劲。它的"一次编程,到处可用"的特性使得它在很多领域倍受欢迎。随着网络技术和嵌入式技术的不断发展,Java及嵌入式Java的应用也将越来越广泛。
从运行特性来说,Ada语言具有较好的运行行为。因为它和运行环境联系较少,语言本身定义严格,因此其运行行为是比较出色的。C/C++语言程序的运行行为和硬件环境及编译系统有较大联系,因此,可能会产生较多意想不到的问题。在某个环境下运行的程序换个机器或换个编译系统就可能会产生错误。因此,无论是C还是C++都有几页无定义行为的说明。 Modula-2也有比较好的运行行为,且仍在改进。Java语言采用虚拟机技术,使得其应用程序的运行与具体的应用平台无关,因此,具有良好的运行特性。
虽然我们仅仅讨论了Ada、C/C++、Modula-2三种语言的基本特性,对Java语言做了简要介绍。但这足以提示我们在嵌入式系统开发应用中,应高度重视高级语言在嵌入式系统编程中的优势所在,并应合理地选择、研究、开发、应用适合自己的嵌入式系统高级编程语言。这不仅是未来嵌入式系统开发应用的发展方向,而且对我国的嵌入式技术发展意义重大。
嵌入式硬件定义,它和嵌入式软件的区别?
一、主体不同
1、嵌入式硬件:用于控制、监视或者辅助操作机器和设备的装置。
2、嵌入式软件:就是嵌入在硬件中的操作系统和开发工具软件。
二、内容不同
1、嵌入式硬件:作为装置或设备的一部分,它是一个控制程序存储在ROM中的嵌入式处理器控制板。
2、嵌入式软件:支撑软件是用于帮助和支持软件开发的软件,通常包括数据库和开发工具,其中以数据库最为重要。
三、特点不同
1、嵌入式硬件:都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
2、嵌入式软件:由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。
参考资料来源:百度百科-嵌入式软件
参考资料来源:百度百科-嵌入式硬件
关于接口管理工具 嵌入式和嵌入系统接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
接口管理工具 嵌入式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于嵌入系统接口、接口管理工具 嵌入式的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~