一文读懂嵌入式应用框架

2019-01-28 14:01:01 来源:网络
标签:

 

EAF是Embedded Application Framework 的缩写,即嵌入式应用框架。嵌入式应用框架是 Application framework的一种, 是在嵌入式领域的应用框架。

 

Application Framework——应用框架,是一种软件框架,软件开发人员用应用框架作为标准结构,以便实现应用软件。


那什么是软件框架呢

关于软件框架

软件框架是一个抽象的概念, 是提供了通用的软件功能,可以通过用户编写代码有选择地改变, 从而提供特定的软件应用。 软件框架提供了构建和部署应用程序的标准方式。 软件框架是一个通用的、可重用的软件环境, 它提供特定的功能, 作为大型软件平台的一部分, 以促进软件应用程序、产品和解决方案的开发。 软件框架可能包括辅助程序、编译器、代码库、工具集和API , 汇集了所有不同的组件, 便于一个项目或系统的开发。

 

那些我们用过或者常见的软件框架太多了:

 

windows上MFC

.net Framework

spring framework以及衍生的SSH等等

Entity Framework

Robot Framework

play framework

Zend framework

Oracle Application Development Framework

Cactus Framework

Eclipse XXX framework

AWS Lambda Framework

FrondEnd framework:Vue.js,Angular.js,React等等

 

尤其是Web 应用框架更加丰富多彩,基于各自语言实现的Web Application Framework 不胜枚举。

 

进一步, 很多的系统架构也引入Framework 的概念,例如,Enterprise architecture framework等等,甚至在研发管理上也同样涌现了Framework,例如 Project Management Framework,Risk Management Framework等,外延在不断在融合放大。

 

关于软件应用框架的开发著述也有很多,例如侧重API设计的《软件框架设计的艺术》等等。

 

嵌入式系统的应用框架

与一般的电脑相比, 嵌入式设备有着自己的特性, 例如耗电量低、体积小、操作范围粗糙、单位成本低。 这是以有限的加工资源为代价的, 这使得程序和交互的难度大大增加。 然而, 通过在硬件之上建立智能机制, 利用可能存在的传感器和存在一个嵌入式单元网络, 既可以在单位和网络一级对现有资源进行最佳管理, 并提供远远超出现有可用功能的增强功能。 这或许就是嵌入式应用的必然性。

 

EAF 是面向嵌入式系统的软件应用框架。嵌入式系统是一个在较大的机械或电气系统中具有专用功能的计算机系统, 通常具有实时计算约束。嵌入式系统从便携式设备, 如数字手表和 MP3播放器, 到大型的固定设备, 如交通灯, 工厂控制器, 以及大部分复杂的系统, 如混合动力车、核磁共振成像和航空电子设备等等。 复杂性从低到单一的微控制器芯片, 到非常高的多个单位等等。

 

鉴于如此的复杂,很难有一个统一的应用开发框架。

 

但是,参考Java 面向资源的分类(J2EE,J2SE,J2ME,Java Card等),我们可以对嵌入式系统的应用框架进行尝试分析。

 

手机上的应用框架

由于手机的功能越来越强大,很多时候被认为超出了嵌入式系统的范畴。但是,了解手机上的应用框架,对于EAF而言,还是大有裨益的。

 

手机上的应用开发框架一般也被称为 Mobile Development Framework。近些年,随着智能手机的普及,面向手机开发的应用框架已被人们所熟知,例如 ios development framework,Android development framework,还有基于HTML5的混合编程框架PhoneGap等等。

 

尤其是Android,如果资源允许,基于android的嵌入式设备可以轻松使用android的软件应用框架。google 还面向嵌入式设备推出了android wearable 等一系列方案,当然iOS 也是如此。

 

下图就是那张经典的android 架构层次图:

 

Android应用程序框架分为应用层、应用框架层、系统运行库层和Linux内核层,在开发应用时就是在这个框架上进行扩展。Android应用框架的部分功能如下:

 

android.app:提供高层的程序模型和基本的运行环境。

android.content:包含对各种设备上的数据进行访问和发布。

android.database:通过内容提供者浏览和操作数据库。

android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以直接绘制屏幕上。

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元素(大部分是可见的)在应用程序的布局中。

 

智能手机的资源还是相当丰富的,在智能手机之前的Feature Phone 同样有着自己的应用开发框架,只是不如Android 和iOS 那么普及,已经逐渐被人们所遗忘。 但是,这些应用框架的设计思想和实现方式同样有着重要的参考性。例如,Qualcomm的BREW(翻开了历史的回忆)。

 

BREW 指Binary Runtime Environment for Wireless 的缩写,从基本的层面而言,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访问蜂音频等媒体和数据路径。

 

软件库

为了简化开发过程和市场的速度时间, 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 之间的语法相似性, 使翻译变得简单明了。 嵌入式开发人员可以在 asm.js JavaScript 子集中编写性能关键代码, 并将其编译为本地代码, 作为构建过程的一部分, 而不是依赖 JIT。

 

对于内存的使用而言,从积极的一面来看, JavaScript 使用了一个垃圾收集器, 从而消除了显式释放内存的需要。 通过这种简化, 嵌入式开发人员有时间专注于其他方面的开发。

 

目前,已经有多个开发系统开始支持嵌入式的JavaScript:

Espruino是一个单片机开发板, 被称为微控制器的 JavaScript。 它运行开源的 Espruino JavaScript 引擎, 它支持 JavaScript 标准的子集。

 

Tessel 是一个集成了Wi-Fi的JavaScript 微处理器,并提供一个兼容Node.js的 API,开发人员可以使用Node.js进行开发。

 

Marvell Semiconductor 的 Kinoma Create 是一个运行在 Marvell 半导体上的"JavaScript 物联网构建工具包", 它支持完整的 JavaScript 5.0.

 

在国內,也有类似的开发系统,例如老友周爱民老师所在的ruff.io。

 

总之,Javascript 在嵌入式设备上的潜力很大, 可以简化嵌入式程序员的开发工作, 并为客户提供更可靠、更可定制的产品。

 

综上所述,嵌入式应用框架(EAF)对嵌入式系统的成功有着重要的意义。特别是对于嵌入式开放平台而言,能够提高开发者的开发效率,促进生态系统的繁荣。然而,IoT中还有很多超轻量级的设备,或许根本没有OS,被称为“智能颗粒”,笑称“智霾”,可能不需要EAF,也可能是一种另外形态的EAF,只是我不知道而已。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
集成和独立USB解决方案的优缺点分析

随着串口从台式机和笔记本电脑中消失,通用串行总线(USB)现在成为需要连接到PC的各种外围设备的通用接口,无论是作为开发平台还是商用产品。在这个由两部分组成的系列文章的第一部分中,我们快速介绍了USB接口标准及其在嵌入式系统中不断发展的作用。

德州仪器公司(TI)发布2018第四季度及2018年度财务业绩与股东回报

德州仪器公司(TI)(NASDAQ: TXN)日前公布其第四季度财务报告,营业收入为37.2亿美元,净收入12.4亿美元,每股收益1.27美元。其中,每股收益包括未涵盖在公司原始计划中的1美分离散税优惠(discrete tax benefit)。

使用32位单片机设计电能计量自动抄表系统

我国社会经济的快速增长直接促进了电力工业的迅猛发展,电力需求不断增加,供应日趋紧张,如今的电力系统已成为一个庞大复杂的多元化系统。为了保证电网正确、安全的商业化运营,必须有一套计量精确、功能强大的电能计量计费系统。

具有优先级的可编程电源管理系统的设计

现今对电子系统设备性能的要求越来越高,在权衡电子系统的性能和功耗时,电子系统的性能往往得到更多的重视。

一篇文章解读嵌入式系统在通信系统中的可应用性

近年来,以PC机为代表的通用计算机系统在硬件和软件方面都取得了飞速的发展,处理器的运算速度已经达到了每秒10亿次的数量级。作为计算机系统核心的操作系统也从字符界面的单任务、单用户的DOS,发展到拥有图形界面的多用户、多任务的Windows 98、Windows NT。计算机的应用已经扩展到通信、交通、家电及医疗诸多领域。

更多资讯
80年历史看三星半导体超越英特尔绝非偶然?(下篇)
80年历史看三星半导体超越英特尔绝非偶然?(下篇)

在上篇中我们回顾了三星半导体的诞生以及它对手机和存储芯片的倾力投入和一段艰苦岁月。本文我们继续看这家公司怎么成长为芯片产业的一哥。

IBM如何从一个落伍者重回数字计算第一梯队
IBM如何从一个落伍者重回数字计算第一梯队

IBM在上世纪80年代的信息革命中,不情愿地成为了落伍者——虽然IBM最早推出了个人电脑,但是由于IBM的保守性,最终没能成为个人电脑之王。反而是微软和Intel借助个人电脑市场逐渐做大,并逐步侵蚀IBM的传统市场。IBM随即出现了严重的亏损,并打破了IBM从不裁员的神话。这段时期,是IBM历史上最艰难的时期。当时有人甚至质疑IBM公司是

2018年十件FPGA大事,哪件牵动你的心(上)
2018年十件FPGA大事,哪件牵动你的心(上)

在科技领域里,FPGA向来都不是最吸引眼球的。可是就在刚刚过去的2018年,就发生了很多FPGA相关的大事。在这些大事中,很多都会对FPGA甚至整个芯片行业未来的发展产生重大影响。

情人节不只有口红和包包
情人节不只有口红和包包

对男人來說,情人节要送什么给女友是最苦恼的! 每个人都有不同的表达爱的方式,除了口红和包包,你还可以加上一些有特别的东西,例如一个LED项链。

美光诉晋华案几经周折,结局仍未可知?

就在新一轮中美经贸高级别磋商即将开启之际,为期近两年的美光、晋华知识产权诉讼案,也来到了一个关键节点。

电路方案