java为什么可以实现跨平台?C++嵌入式是什么意思?的移植性差是什么原因?其他语言有虚拟机吗?

(官方发音 [kju:t],音同 cute)是一个跨平台的 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User

Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,对于不了解 C++ 的读者,我建议先阅读《》,再阅读《》。C++ 是在C语言的基础上发展起来的,学完C语言就学了 C++ 的一半了。

Qt 还存在 、Ruby、Perl 等脚本语言的绑定, 也就是说可以使用脚本语言开发基于 Qt 的程序。开源社区就是这样,好东西就会被派生扩展,到处使用, 越来越壮大。

Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

Qt 是应用程序开发的一站式解决方案,有了 Qt,你就可以高枕无忧了!Qt 本身包含的模块也日益丰富, 一直有新模块和第三方模块加入进来。 

大部分应用程序都可以使用 Qt 实现,除了与计算机底层结合特别紧密的,例如驱动开发,它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库。

Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。

Qt 虽然也支持手机操作系统,但是由于 Android 本身已经有 和 Kotlin,iOS 本身已经有 Objective-C 和 Swift,所以 Qt 在移动端的市场份额几乎可以忽略。

总起来说,Qt 主要用于桌面程序开发和嵌入式开发。

Qt 目前支持主流的 Android、iOS、WinPhone 等智能机操作系统。MeeGo 是基于 Qt 开发的操作系统,由于被诺基亚抛弃了, 只剩一代绝版诺基亚 N9 手机。

诺基亚手机部门出售给微软之后,大部分诺基亚手机系统开发人员都被遣散了。

  • 原来诺基亚的一部分人成立新的 Jolla(卓蓝)公司,发布了 MeeGo 的衍生版智能手机系统 Sailfish(旗鱼),相应的手机和平板也发布开卖了。
  • 另一拨人投靠了 Tizen(泰泽),Tizen 是英特尔和三星力推的智能手机系统,该系统整合了 Limo 和 MeeGo,因为 MeeGo 系统被诺基亚抛弃,英特尔其实是被出卖了,所以只能联合三星重造智能手机系统 Tizen。

目前基于 Tizen 的首款手机三星 Z1 在印度上市了。在 Tizen 阵营,国内有中兴、百度涉及了。Qt 开源项目里也有 Qt for Tizen 版本,有兴趣的可以去搜搜。

Qt 公司有专门针对移动开发的商业版本,20 欧元或 25 美元一个月。不做商业可以无视这个,用开源版本也是可以开发如 Android、iOS、WinPhone 应用的。

本教程关注的是传统桌面操作系统开发的,移动开发可以参考 Qt 官方的文档。

说到 Qt 的发展史,那真是一波三折,几经卖身。

在 2008 年,诺基亚公司收购了奇趣科技公司,并增加了 LGPL(GNU Lesser General Public License)的授权模式。诺基亚联合英特尔利用 Qt 开发了全新的智能手机系统 MeeGo,可惜遭遇了微软木马屠城,诺基亚被迫放弃了 MeeGo, 而 Qt 商业授权业务也于 2011 年 3 月出售给了芬兰 IT 服务公司 Digia。

当然好消息是 Digia 于 2014 年 9 月宣布成立 Qt Company 全资子公司,独立运营 Qt 商业授权业务。目前 Qt 公司大力推广移动平台开发和商业应用, 总的来说 Qt 历经曲折,现在算是步入正轨了。

经过 20 多年的发展,Qt 已经成为最优秀的跨平台开发框架之一,在各行各业的项目开发中得到广泛应用。许多大型软件都是用 Qt 开发的,如 Autodesk Maya、Google Earth、Skype、WPS Office等。

永远不要忽视微软帝国的威胁,作为软件业的一代霸主,任何人都不要天真地试图和它做朋友,因为霸主不可能有朋友。微软的木马屠城是所有诺基亚人和芬兰人的痛,希望读者们都记牢这条。

之前提到 Qt 原本是商业授权软件,是怎么开源的呢?这就涉及 Qt 和 KDE 的纠葛了。

KDE 是 Linux 操作系统的桌面环境,与 GNOME 桌面是类似的,作为开源桌面它们竞争的情况更为多见,有兴趣的读者请猛击《》了解更多。

KDE 是采用 GPL 许可证发布的开源软件,而最初 Qt 是商业授权的,存在商业侵权风险,GNOME 则是基于开源 GTK 库的,没有什么商业风险,这一度是 GNOME 优越于 KDE 的特性。

由于 Qt 的商业授权,KDE 社区一度混乱纠结,与此同时 GNOME 则如火如荼发展起来了。 KDE 毕竟算是亲儿子,被另一波人欺负,奇趣科技公司当然看不下去了,最后是奇趣科技公司为了赢得开发者的支持,为 Qt 增加了 GPL 的开源授权, 对于开源社区而言,遵循 GPL 使用 Qt 就不需要付费,这为 KDE 解决了燃眉之急。

之后 KDE 桌面和 GNOME 都发展壮大起来,都做得越来越好了。

除了商业授权,目前 Qt 的开源授权有两种,一种是 GPL 授权,另一种是 LGPL 授权(诺基亚收购后新增)。

对这两种开源授权,简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。

GPL 是什么都要开源,这对商业软件应用是不利的,所以诺基亚增加了 LGPL 授权 (第一个 L 可以叫 Lesser 宽松版或 Library 开发库版)。使用 LGPL 授权就可以利用 Qt 官方动态链接库,而不必开放商业代码。只要不修改和定制 Qt 库,仅使用 Qt 官方发布的动态链接库就可以不开源,这是商业友好的授权模式。

其实只要不是做商业,就不太需要关注用什么授权,以 GPL 授权发布程序代码就可以了。

世界上的开源协议有很多,有兴趣的读者请猛击《》了解更多内容。 

最后请认准 Qt 官方网站(有时候访问速度很慢甚至不能访问,读者请自备梯子),可以查阅文档或者浏览资讯:

}

嵌入式操作系统是一种用途广泛的系统软件,过去它主要应用与工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。温总 理用经典的四个字“感知中国”全面描述和定义了物联网产业的内涵。从字面上来理解,“感”既是信息采集(传感器);“知”信息处理(运算、处理、控制、通信并通过互联网进行信息传递和控制)。这些都是嵌入式系统的特征表现。如果归纳一句话来理解总理“感知中国”的含义,既是通过嵌入式系统智能终端产品网络化的过程可以实现感和知的目的。下面贤集网来为大家介绍一下嵌入式操作系统的核心特点、嵌入式操作系统的种类、嵌入式操作系统和通用计算机系统的主要区别。一起来看看吧!


嵌入式操作系统的核心特点
1、可裁剪性。支持开放性和可伸缩性的体系结构。
2、强实时性。EOS实时性一般较强,可用于各种设备控制中。
3、统一的接口。提供设备统一的驱动接口。
4、操作方便、简单、提供友好的图形GUI和图形界面,追求易学易用。
5、提供强大的网络功能,支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。

6、强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预、这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。
7、固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统。
8、更好的硬件适应性,也就是良好的移植性。

。他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com的Palm,以及Symbian和Google的Android等。
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks实时操作系统由400多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范的内存管理,以及多处理器控制程序;并且具有简明易懂的用户接口,在核心方面甚至可以微缩到8

CE推广的一大优势。其中WinCE3、0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌入操作系统。对建立针对掌上设备、无线设备的动态应用程序服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KB的ROM。由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。

这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近年来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。Linux是开放源代码,不存在黑箱技术,遍布全球的众多Linux爱好者优势Linux开发者的强大技术支持;并且Linux的内核小、效率高,内核的更新速度很快,Linux是可以定制的,其系统内核最小只有约134KB。Linux还是免费的OS,在价格上极具竞争力。因为它的开放性对于技术方面的要求不高只要懂Unix/Linux和C语言即可。随着Linux在国内的普及,这类人才越来越多。所以软件的开发和维护成本很低,优秀的网络工能,这在Internet时代尤其重要,稳定是Linux本身具备的一个很大的优点,内核精悍,运行所需资源少,十分适合嵌入式应用。支持的硬件数量庞大,嵌入式Linux和普通的Linux没有本质区别,PC上用到的硬件嵌入式Linux几乎都支持,而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来了很大方便。

μC/OS一Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单片机或数字信号处理器(DSP)。它是在原版本μC /OS的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。它的主要特点如下:
(1)公开源代码,容易就能把操作系统移植到各个不同的硬件平台上;
(2)可移植性,绝大部分源代码是用C语言写的,便于移植到其他微处理器上;
(3)可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间;
(4)占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务;
(5)多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;
(6)可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少;
(7)实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据;
由于μC/OS一Ⅱ仅是一个实时内核,这就意味着它不像其他实时存在系统那样提供给用户的只是一些API函数接口,还有很多工作需要用户自己去完成。

(1)QNX是一种商用的类Unix实时操作系统,遵从POSIX规范,目标市场主要是嵌入式系统。QNX的应用范围极广,包含了控制保时捷跑车的音乐和媒体功能,核电站和美国陆军无人驾驶Crusher坦克的控制系统,还有RIM公司的BlackBelly PlayBook平板电脑。QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSⅨ、1 (程序接口)和POSⅨ、2 (Shell和工具)、部分遵循POSⅨ、1b(实时扩展)。
(2)QNX操作系统核心仅包含了CPU任务排程、进程间通讯、中断重导向以及定时器等部份,而除此之外包含驱动程序、档案系统堆叠协议以及使用者应用程序的所有程序都是属于在使用者阶段执行。QNX操作系统有个相当特殊的Proc阶段,专门负责程序process的建立,以及存储器管理等交集在系统微核心中的组件。基本上,QNX所有的组件都能透过消息传递这个函式来进行沟通,而具有良好定义的通讯机制,也能保障所有的组件都有完全独立且被保护的储存及执行空间。因此有问题的应用程序不会影响到其它组件的稳定性,发生问题的程序将会被自动终止并重新启动。
(3)与传统的操作系统架构相较起来,微核心架构可以让嵌入式系统获得更为快速的平均回覆时间(MTTR),当硬件驱动程序失效,QNX可以在数毫秒之内,就对该驱动程序进行终止、回收资源并重新启动的步骤,让嵌入式设备可接近无停摆时间表现。
(4)不过微核心RTOS的架构除了优点以外,由于其process间的讯息传递功能将会占用存储器频宽,影响到校能表现,因此在实际应用上,就必须采用特殊的最佳化手段,以避免掉讯息传递功能所带来的性能耗损。

(1)这款嵌入式操作系统主要特征就是轻薄短小,其架构上的延展性,可以让Nucleus RTOS所占的储存空间压缩到仅有13K左右,而且Nucleus Plus是一款不需授权费的操作系统,并且提供了原始码。
(2)Nucleus Plus本身只是Acclerated Technology公司完整解决方案里面的其中一环,这个RTOS本身架构属于先占式多工设计,有超过95%的原始码是用标准的ANSI C语言所编写,因此可以非常有效率的移植到各种不同的平台。Nucleus Plus在CISC架构处理器中,核心部份大约占去20KB左右的储存空间,而在RISC处理器上则是40KB左右,核心资料结构仅占约1、5KB,由于其即时回应、先占式多工、以及多process并行,并且开放原始码等特性,在国防、工控、航天工业、铁路、网络、POS、自动化控制以及信息家电等领域广泛受到应用。
(3)就如同QNX一般,Nucleus Plus也可以根据目标产品的需求,来自行剪裁所需要的系统功能,达到精简体积的目的。而配合相对应的编译器(Borland c/c++、Microsoft c/c++)以及动态连结程序库和各种底层驱动程序,在开发上拥有非常相当大的便利性。诸如飞思卡尔(Freescale)、罗技(Logitech)公司、美国NEC、SK Telecom等公司,都有采用Nucleus Plus嵌入式操作系统作为开发产品使用。

WinCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Win CE的图形用户界面相当出色。WinCE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200K的ROM。一般来说,一个WinCE系统包括四层结构:应用程序、WinCE内核映像、板级支持包(BSP)、硬件平台。而基本软件平台则主要由WinCE系统内核映像(OS Image)和板卡支持包(BSP)两部分组成。因为WinCE系统是一个软硬件紧密结合的系统,因此即使CPU处理器相同,但是如果开发板上的外围硬件不相同,这个时候还是需要修改BSP来完成一个新的BSP。因此换句话说,就是WinCE的移植过程主要是改写BSP的过程。

Android是一个包括操作系统、中间件以及一些重要应用程序的专门针对移动设备的层次结构的软件集。Android作为一个完全开源的操作系统,是由操作系统Linux、中间件以及核心应用程序组成的软件栈,通过Android SDK提供的API以及想用的开发工具,程序员可以很方便的开发Android平台上的应用程序。其整个系统由应用程序,应用程序框架,应用程序库,Android运行库,Linux内核(Linux Kernel)五个部分组成。Android操作系统内置了一部分应用程序, 包括电子邮件客户端、SMS程序、日历、地图、浏览器、通讯录以及其他的程序,值得一提的是这些所有的程序都是用java编写的。移植的主要的工作是驱动,硬件抽象层的移植。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。

9、嵌入式实时操作系统
在工业控制、 军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。

FreeRTOS是一个迷你操作系统内核的小型嵌入式系统。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS任务可选择是否共享堆栈,并且没有任务数限制,多个任务可以分配相同的优先权。相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核。

嵌入式操作系统和通用计算机系统的主要区别
通用计算机系统:实实在在的计算机。按其体系结构、运算速度和规模可分为大型机、中型机、小型机和微机;嵌入式操作系统:“看不见”的计算机,形式多样,应用领域广泛,按应用进行分类。
通用计算机系统:通用处理器、标准总线和外设、软硬件相对独立;嵌入式操作系统:面向特定应用的微处理器,总线和外设一般集成在处理器内部,软硬件紧密结合。
通用计算机系统:系统资源充足,有丰富的编译器、集成开发环境、调试器等;嵌入式操作系统:系统资源紧缺,没有编译器等相关开发工具。
通用计算机系统:开发平台和运行平台都是通用计算机;嵌入式操作系统:采用交叉编译方式,开发平台一般是通用计算机,运行平台是嵌入式系统。
通用计算机系统:应用程序可重新编程;嵌入式操作系统:一般不能重新编程开发。
通用计算机系统:编程功能电脑,普遍进入社会;嵌入式操作系统:变为专用电脑,实现“普及计算”。


上述是贤集网为大家介绍的嵌入式操作系统的核心特点、嵌入式操作系统的种类、嵌入式操作系统和通用计算机系统的主要区别。希望这些知识能够给大家带来帮助!可以说哪里有嵌入式的应用,哪里就有嵌入式操作系统的踪影。20世纪70年代末,嵌入式OS的商业产品已在美国和加拿大等国家出现,90年代末其数量呈现井喷式增加,最鼎盛的时候有数百种之多,即使经过经过30多年的发展和淘汰,现在依然有数十余种。今天的嵌入式应用已经无处不在,嵌入式操作系统更是随处可见。但是必须强调,嵌入式操作系统对于系统的处理器和其他资源均有一定要求和占有,商业嵌入式操作系统要收取一定的开发和使用费用,即使是开源的嵌入式操作系统,在开发中也或许要向商业公司购买技术服务费用。这些将导致最终的电子产品成本的增加 ,因此并不是所有的嵌入式应用都需要使用操作系统。无线通讯产品、网络产品、智能家电、航空航天和军事装备、汽车电子、物联网产业和技术,都是嵌入式操作系统的热门应用领域。

注:文章内的所有配图皆为网络转载图片,侵权即删!

}

我要回帖

更多关于 嵌入式比java难多少 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信