EAF是EmbeddedApplicationFramework的缩写,即嵌入式应用框架。嵌入式应用框架是Application框架的一种,是嵌入式领域的应用框架。ApplicationFramework——应用框架是软件开发人员用来作为标准结构来实现应用软件的软件框架。那么什么是软件框架呢?关于软件框架软件框架是一个抽象的概念,它提供通用的软件功能,用户可以有选择地更改这些功能以编写代码来提供特定的软件应用。软件框架提供了构建和部署应用程序的标准方法。软件框架是一种通用的、可重用的软件环境,它提供特定功能作为更大软件平台的一部分,以促进软件应用程序、产品和解决方案的开发。软件框架可能包括辅助程序、编译器、代码库、工具集和API,将所有不同的组件组合在一起以促进项目或系统的开发。我们用过或常用的软件框架太多了:Windows上的MFC、.netFramework、springframework和派生的SSH等。FrondEnd框架:Vue.js、Angular.js、React等……尤其是Web应用框架更是五光十色,基于各自语言的Web应用框架太多了。再者,很多系统架构也引入了Framework的概念,比如Enterprisearchitectureframework等,甚至R&D管理中也出现了Framework,比如ProjectManagementFramework,RiskManagementFramework等,其外延在不断的融合和融合。放大。关于软件应用框架开发的著作也有很多,比如《软件框架设计的艺术》着重于API设计等等。嵌入式系统应用框架与一般计算机相比,嵌入式设备具有功耗低、体积小、工作范围粗、单位成本低等特点。这是以有限的处理资源为代价的,这使得编程和交互变得更加困难。然而,通过在硬件之上构建智能机制,利用可能的传感器并拥有嵌入式单元网络,可以在单元和网络级别对现有资源进行全面管理,并提供远远超出现有可用功能的增强。这可能是嵌入式应用的必然性。EAF是嵌入式系统的软件应用程序框架。嵌入式系统是在较大的机械或电气系统中具有专用功能的计算机系统,通常具有实时计算限制。嵌入式系统的范围从便携式设备,如数字手表和MP3播放器,到大型固定设备,如交通信号灯、工厂控制器,以及最复杂的系统,如混合动力汽车、MRI和航空电子设备等。复杂性范围从单个微控制器芯片的低到多个单元的非常高等等。鉴于如此复杂,很难有一个统一的应用开发框架。但是,参照Java面向资源的分类(J2EE、J2SE、J2ME、JavaCard等),我们可以尝试分析一下嵌入式系统的应用框架。由于手机的功能越来越强大,手机上的应用程序框架往往被认为超出了嵌入式系统的范围。但是了解手机端的应用框架对EAF有很大的帮助。手机上的应用开发框架一般也称为MobileDevelopmentFramework。近年来,随着智能手机的普及,手机开发的应用程序框架已经家喻户晓,比如ios开发框架,Android开发框架,以及基于HTML5的混合编程框架PhoneGap等。特别是Android,如果资源允许的话,基于android的嵌入式设备可以方便地使用android软件应用框架。谷歌也针对嵌入式设备推出了androidwearable等一系列方案,当然iOS也是如此。下图是经典的android架构层次图:Android应用框架分为应用层、应用框架层、系统运行时层和Linux内核层,开发应用时都是在这个框架上进行扩展。Android应用程序框架的一些功能如下:android.app:提供高级程序模型和基本运行环境。android.content:包含各种设备上数据的访问和发布。android.database:通过内容提供者浏览和操作数据库。android.graphics:底层图形库,包括canvas、colorfilter、point、rectangle,可以直接在屏幕上绘制。android.location:位置和相关服务类。android.media:提供一些类来管理各种音视频媒体接口。android.net:提供类以方便网络访问,超出通常的java.net.*接口。android.os:提供系统服务、消息传输和IPC机制。android.opengl:提供OpenGL的工具。android.provider:提供对Android内容提供程序的访问的类。android.telephony:提供与拨打电话相关的API交互。android.view:提供基本的用户界面界面框架。android.util:涉及工具类方法,比如时间和日期的操作。android.webkit:默认浏览器操作界面。android.widget:包含应用程序布局中的各种UI元素(大部分可见)。智能手机的资源还是很丰富的。智能手机之前的FeaturePhone也有自己的应用开发框架,但不如Android和iOS普及,逐渐被人们遗忘。但是,这些应用框架的设计思想和实现方法也具有重要的借鉴意义。比如高通的BREW(翻开历史的记忆)。BREW是BinaryRuntimeEnvironmentforWireless的缩写。在基本层面上,BREW平台是手持设备上嵌入式芯片操作系统的接口或抽象层。BINARY表示二进制。BREW的编程接口是一组二进制函数库。所有基于BREW的应用程序和扩展类都被编译并链接成二进制代码以供本地执行。RUNTIME指的是运行时间。所有基于BREW的应用程序和扩展类都是在运行时发现和调用的,这与动态链接库非常相似。实际上,BREW的应用程序和扩展类的模拟器版本是一个DLL。ENVIRONMENT指环境。BREW是一个开放灵活的环境,提供大量的编程接口,可以管理丰富的服务。WIRELESS表示无线。BREW可以充分发挥设备的特点,在低RAM/FLASH环境下快速有效地运行,有效利用有限的无线网络资源。BREW基本上沿袭了COM的组件框架。组件架构的优点之一是应用程序可以随着时间的推移而发展。此外,组件的使用还有一些优势,可以使现有应用程序的升级更加方便和灵活,例如应用程序定制、组件库和分发。组件等M2M应用框架鉴于M2M技术的特点,系统设计人员可能不得不从头开始构建整个M2M架构。M2M技术的核心包括向设备或设备添加智能服务,并将该设备与可以监视或控制该设备的后端基础设施连接起来。为实现这一点,M2M设备使用两个基本元素:与后端通信的基础设施(无线电调制解调器或模块)和运行服务的软件。通过提供一种直接将M2M服务嵌入通信模块的方法,以及预装的软件模块、连接能力和处理资源,通用的M2M应用框架如下:EAF一般包括以下组件:优化的轻量级操作系统而一些M2M应用程序需要更强大的RTOS,但大多数不需要。操作系统旨在提供API来控制语音、数据呼叫、文本消息和TCP/IP连接。应该优化以充分利用对协议栈的直接访问。为了对连接的应用程序提供全面支持,操作系统还应提供核心功能集,包括:实时,包括保证对外部或内部中断的响应时间,无论其状态如何。任务的灵活优先级。用于定义和同步服务所需任务的多任务处理能力。处理速度和功率选择的灵活性可优化电池寿命。内存、固件和软件保护功能。能够使用API访问媒体和数据路径,例如BeeAudio。软件库为了简化开发过程并加快上市时间,EAF应包括各种软件库和API,以提供设备或服务可能需要的各种功能。这包括定位、综合互联网连接协议、无线和互联网安全等服务。EAF还应该支持为目标市场的特定需求而开发的第三方软件库。理想情况下,EAF不仅应该得到通信模块供应商的支持,还应该得到合作伙伴和开发人员的支持。开发工具EAF还应该包含一个开发工具包,以便于对M2M应用程序进行编码、调试和监控,并且这些工具应该是开源的并且可以免费使用。最终,EAF应该提供开发M2M应用程序并将它们嵌入模块所需的一切。***对于云连接,EAF应提供工具来简化连接设备的云管理,包括一个完全实施的系统来处理设备监控和软件/固件升级。该系统应允许开发人员监控设备的健康状况并识别潜在问题。它还应该包括已经过验证的远程操作系统升级工具,以及使用补丁机制的修补程序工具。用于脚本的EAF脚本对于为嵌入式系统创建软件的开发人员来说并不陌生。选择脚本通常是解决问题最快的方法。通常,脚本用于自动构建和运行验证测试。Javascript作为全栈必备,广泛应用于网页、Web服务器和移动应用,在嵌入式系统中也将占据一席之地。出于对性能的担忧,可以通过一些技术手段来提高JavaScript的运行性能:1.充分利用内置函数和对象。Javascript语言具有复杂的内置对象,支持数组、JSON、正则表达式和其他字符串操作。这些实现通常在JavaScript引擎中得到了很好的优化。2.仔细编码。由于脚本比本机代码慢,因此代码优化在性能至关重要的地方至关重要。Javascript的动态特性意味着JavaScript引擎通常无法像C编译器那样有效地优化代码。3.混合编程。没有一种语言适合所有情况,所以选择最适合工作的语言,而不是100%纯粹地使用它。每个JavaScript引擎都提供了一种从脚本调用本机代码的方法。如果不确定性能,请先用JavaScript实现,因为它更容易执行。如果存在性能瓶颈,请在C中重新实现该函数。Mozilla项目asm.js中出现了使用c的替代方法。定义一个严格的JavaScript子集,它更容易转换为本机代码或C源代码。利用C和JavaScript之间的句法相似性使翻译变得简单明了。嵌入式开发人员可以在JavaScript的asm.js子集中编写性能关键代码,并将其编译为本机代码作为构建过程的一部分,而不是依赖于JIT。就内存使用而言,从积极的方面来说,JavaScript使用了垃圾收集器,这消除了显式释放内存的需要。通过这种简化,嵌入式开发人员有时间专注于开发的其他方面。目前,已有多个开发系统开始支持嵌入式JavaScript:Espruino是一款单片机开发板,被称为微控制器的JavaScript。它运行开源EspruinoJavaScript引擎,该引擎支持JavaScript标准的一个子集。Tessel是一个集成Wi-Fi的JavaScript微处理器,并提供了Node.js兼容的API,开发者可以使用Node.js进行开发。MarvellSemiconductor的KinomaCreate是运行在MarvellSemiconductor上的“JavaScript物联网构建工具包”,支持完整的JavaScript5.0。在国内也有类似的开发系统,比如老朋友周爱民所在的ruff.io。综上所述,Javascript在嵌入式设备上的潜力巨大,可以简化嵌入式程序员的开发工作,为客户提供更可靠、可定制的产品。综上所述,嵌入式应用框架(EAF)对嵌入式系统的成功具有重要意义。尤其是对于嵌入式开放平台,可以提高开发者的开发效率,促进生态系统的繁荣。然而,物联网中仍有许多超轻量级设备,它们可能根本没有操作系统。它们被称为“智能粒子”,被戏称为“智能雾霾”。他们可能不需要EAF,或者他们可能是另一种形式的EAF。只有我不知道。参考:JaroslavTulach,《软件框架的设计艺术》,人民邮电出版社,2011金泰妍,宋亨,周朴志勋,李柏林启勇,《Android 框架揭秘》,人民邮电出版社,2012曹宏伟,《BREW 进阶与精通》,电子工业出版社,2009http://www.embedded-computing.com/hardware/embedded-application-frameworks-simplifying-the-development-of-m2m-deviceshttp://www.embedded-computing.com/embedded-computing-design/javascript-for-embedded-deviceshttp://www.embedded-computing.com/embedded-computing-design/speeding-embedded-systems-time-to-market-using-node-js[这篇文章是本文来自专栏作家“老曹”,作者微信公众号:哦家ArchiSelf,id:wrieless-com】点此阅读更多本作者好文
