在当今快节奏的嵌入式系统世界中,灵活性和适应性是嵌入式系统实现的关键。SEGGER推出了其最新创新:Embedded apps(emApps)应用,类似于手机上的应用程序,可以运行在嵌入式系统上。
应用是小型的动态软件,可以静态或动态地链接到设备固件中。通常使用动态链接方式,这意味着用户可以随时下载并将它们添加到已有固件中。
应用由固件中的一段高度优化的代码执行,这段代码即执行器,它实现了虚拟CPU的指令集。此功能扩展了设备功能,使其更加通用,适应新的需求和更新。从本质上讲,应用允许用户将嵌入式设备变成嵌入式平台!
应用的一个突出特点是它们是沙盒式的。换言之,它们在受保护的环境中运行,底层操作系统可以监视其行为。如果一个应用试图做一些它不应该做的事情,执行器将暂停应用程序的执行并返回到固件(调用者),由固件决定如何处理这种情况,这确保了即使应用程序出现问题,也不会造成任何伤害,系统的其余部分仍然保持稳定和安全。
基本原理
我们需要将带有API功能的沙盒和执行器添加到固件中,这样设备就可以执行应用了。要向应用添加功能,可以添加API函数。为了给文件系统添加读访问,通常会添加3个函数,比如OpenFile,ReadFile, CloseFile。为了允许写访问,需要添加一个WriteFile函数。
如何加载应用程序以及在什么上下文中/线程中执行它们取决于固件设计人员。
多个应用可以同时运行,在实时操作系统(RTOS)的控制下运行在一个核或不同核上。因为执行器由固件调用,任何RTOS都可以实现。
每个应用有独立的内存空间。如果应用程序遇到问题(如崩溃……),它不会影响系统稳定性,就像手机或桌面应用程序崩溃不会影响系统一样。这甚至可以让应用在安全关键环境中运行,甚至可以使认证一个关键系统变得更容易,因为外设功能(如显示器的控制)可以转移到一个应用中,而不需要成为认证过程的一部分。
内存需求
这些应用不仅提高了灵活性,其内存消耗也很小。执行器是嵌入式固件的一部分,通常需要600到1000字节空间。我们提供了一个ARM优化版本以及可移植的C版本,它可以运行在几乎任何平台上。固件提供API功能,通常会增加1到3 KB占用,具体取决于希望向应用公开的本地功能。这意味着emApps甚至可以在更小的系统(64KB闪存)上运行,该框架可以很容易地集成到现有固件中。
代码密度
运行这些应用的虚拟CPU的代码密度非常高,甚至高于主机CPU的代码密度,特别是在RISC-V环境中。这可以帮助节省宝贵的程序空间,特别是当应用静态地内置时!对于这个虚拟CPU,我们使用自己的C编译器,其他语言如Basic,Pascal,Phyton可以通过C转换器来使用。
内存保护-沙箱
应用只能使用固件分配的内存空间。只要应用处于活动状态,固件就会为其提供内存。任何意图访问指定空间之外的内存都会被拦截,执行器返回并让调用者(固件)决定如何处理这种情况。
性能
应用由固件中的执行器执行。执行器实现了一个虚拟CPU的指令集,我们为此进行了优化:
该指令集非常紧凑,因此由虚拟CPU执行的指令数量通常显著低于主机CPU执行相同功能所需的指令数量,并且可以在任何CPU上轻松高效地执行。结合将计算密集型任务卸载到主机CPU的能力,性能可以非常接近主机CPU。
这种创新的方法已经集成到J-Link和Flasher产品线中,通过应用可以方便的增加新的CPU支持。在Flasher Hub中,通过应用允许自定义web用户界面,添加新功能或简单地更改用户界面语言。
不同行业的嵌入式应用程序都可以利用这种技术。通过emApps,用户以一种安全可控的方式扩展功能,这种方法不仅提高了灵活性,而且为第三方开发人员提供了为生态系统做出贡献的机会。
-
嵌入式系统
+关注
关注
41文章
3686浏览量
131598 -
内存
+关注
关注
8文章
3128浏览量
75362 -
应用程序
+关注
关注
38文章
3338浏览量
59140 -
SEGGER
+关注
关注
0文章
55浏览量
14510
原文标题:运行在嵌入式系统上的emApps
文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+ Hypervisor应用场景调研
什么是嵌入式系统 嵌入式系统定义
嵌入式系统中的数据存储和管理的相关资料分享
Netdata嵌入式测试的相关资料推荐
嵌入式系统安装docker的步骤
嵌入式Linux系统中应用的GTK+和X分析
什么是嵌入式系统

评论