0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

橡胶在低级嵌入式开发中与道路相遇的地方

星星科技指导员 来源:嵌入式计算设计 作者:DR. KEVIN NILSEN 2022-11-07 14:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作为一种支持面向对象抽象和软件组件可扩展组合的高级编程语言,Java是开发用户界面和应用程序软件的理想选择。然而,Java软件如何最有效地解决嵌入式软件典型的低级问题并且通常用C语言编程,这一点还不太明显。然而,新的硬实时Java技术针对的是低级嵌入式实时开发的特殊需求?并击败了混合C和Java混合语言方法。

嵌入式系统与构建它们的人以及它们执行的底层执行引擎一样多。同样,在为低级实时计算(ìrubber 与道路相遇)选择Java 运行时环境时,一刀切的解决方案既不可行也不实用。

在声称支持实时垃圾回收的现有虚拟机中,每个虚拟机提供的功能略有不同,表示对软实时截止时间的不同程度的遵守,其中内存限制和虚拟机占用无关。较少数量的虚拟机可以处理较低级别的要求,其中硬实时截止时间、执行速度和内存占用更为重要。通常,这些虚拟机与管理底层硬件服务的底层操作系统RTOS 共存。但是,事实是:有时这还不够好。有时,Java软件需要超越硬件抽象层,直接与硬件设备通信

在Java越来越被认为是首选语言的世界中,拥有自上而下的完整应用程序覆盖的虚拟机技术可能是一个显着的优势。许多嵌入式 Java 应用程序都是使用两种语言方法构建的。Java 用于应用程序的更大、更复杂和更动态的部分,而 C 用于较低级别的功能,例如设备驱动程序或需要更快吞吐量的应用程序部分。

这种选择的影响会导致通过将Java和C应用程序链接在一起的Java本机接口(JNI)进行尴尬和不可预测的转换。人们这样做的原因很明显:传统的虚拟机太大、太慢、太不可预测,无法处理低级执行。因此,新推出的硬实时Java技术现在可以使用Java语言而不是C来解决低级实时问题。与JNI技术相比,这种硬实时Java技术还为将传统的高级Java代码连接到低级C代码提供了卓越的性能和健壮性。硬实时 Java 现在可以取代 C 代码来实现直接与硬件通信的设备驱动程序。这允许仅Java的连续统一体,从成熟的Java的1到10秒响应时间,一直到硬实时Java的10微秒响应时间,这是解决硬件线速度所必需的。

用 Java 替换 C

混合语言方法的弱点是几个方面的。首先,每当应用软件跨越Java和C执行之间的边界时,JNI协议都会提取高收费。此协议开销可能是可执行代码成本的两倍以上,它破坏了将 C 语言用于应用程序的某些性能关键部分的许多性能优势。其次,更重要的是,Java 安全模型会因在

应用程序中引入 C 代码而受到损害。在过去 10 年构建的大量嵌入式 Java 应用程序中,代表超过 100 万行嵌入式 Java 代码,Aonix 支持工程师发现,C 和 Java 代码之间的 JNI 接口代表了最常见的故障点。

使此问题更加复杂的是,这些错误是最难调试的错误之一。这是因为无意中破坏了 JNI 协议的 C 程序员会使随附的 Java 虚拟机处于不稳定状态。该错误可能表现为 Java 应用程序代码或 Java 虚拟机本身的实现中的错误。虚拟机供应商、Java 应用程序开发人员和 C 开发人员之间的相互指责结果。

Java 规范请求 (JSR) 302 正在开发硬实时安全关键型 Java 编程的标准方法。除了支持核电站关闭和商用飞机控制等应用的严格安全认证要求外,安全关键型Java标准还代表了适用于Java语言开发各种低级代码的基础。这个不断发展的标准的原型实现已经证明,在内存占用(超过 100 倍)、吞吐量(高达 3 倍)和确定性(数千倍)方面显着节省成本。这种低级 Java 代码能够展示优化 C 语言 10% 以内的性能

特征。它能够通过支持一级中断处理程序的Java 实现和设备寄存器输入和输出操作来直接控制设备硬件。

对于那些必须构建从动态高级复杂性到静态低级简单性的分层软件体系结构的人来说,已经设计了一种机制,允许非常高效和健壮地集成低级

硬实时Java组件与高级传统Java组件。从长期工程角度来看,在整个应用程序中消除 C 代码可以产生更好的控制、更高的可预测性、更低的软件维护成本和更长的软件寿命。

性能结果

Aonix 演示具有计算密集型分形程序,其中分形渲染以 C 或硬实时 Java 代码实现。在这两种情况下,图形显示都是用Java编程的,带有SWT图形接口。演示揭示的全 Java 性能提升是高级和低级 Java 代码之间更清晰集成的好处。全 Java 解决方案清楚地显示了在高级 Java 代码和低级 C 代码之间进行集成所需的 Java 本机接口带来的低效率。

该演示是在嵌入式 Linux 环境中运行的,对于此特定演示,不需要解决裸硬件问题。事实上,传统的Java和硬实时Java技术将在大多数嵌入式操作系统和商业RTOS环境中运行。硬实时Java技术非常简单,也可以安装在裸硬件上运行,而无需底层操作系统。

除了从应用程序中消除 C 语言提高了可靠性、可维护性和开发人员生产力之外,此演示还表明,全 Java 解决方案的运行速度比等效的 Java-C混合程序高出 2 比 1。确切的加速比取决于缩放系数和窗口大小。通过一个特定的测量,全Java程序的运行速度比混合程序快2.33倍。

全 Java 解决方案简化了开发、集成和维护

没有放之四海而皆准的JVM,但是现在硬实时Java提供了一种单一来源的Java补救措施,可以覆盖嵌入式实时应用程序的所有级别,从高级应用程序复杂性一直到最低级别的硬件。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20143

    浏览量

    328684
  • JAVA
    +关注

    关注

    20

    文章

    2997

    浏览量

    115639
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    分享一个嵌入式开发学习路线

    法,这些语法嵌入式开发至关重要。 2. 技能进阶期(2-3个月) 从51单片机过渡到主流的ARM Cortex-M系列(嵌入式就业核心平台),学会使用STM32单片机,掌握
    发表于 12-04 11:01

    C语言嵌入式开发的应用

    C 语言汽车电子控制系统开发的主导地位。 2、设备驱动程序 设备驱动程序是嵌入式系统连接硬件和软件的桥梁,它负责实现
    发表于 11-21 08:09

    嵌入式开发的关键点介绍

    嵌入式开发在现代科技扮演着非常重要的角色。随着物联网的发展,嵌入式系统的需求也越来越大。嵌入式开发不仅需要开发人员具备深入的硬件知识和编程
    发表于 11-13 08:12

    恩智浦如何攻克两大嵌入式开发难题

    我们的身边,嵌入式系统无处不在。而随着技术的进步和应用的拓展,今天的嵌入式开发也面临着诸多新课题、新挑战。
    的头像 发表于 10-27 09:28 1158次阅读

    新一代嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。 2025.1 版嵌入式软件和工具的新 增功能 AMD
    的头像 发表于 08-20 09:15 3616次阅读

    嵌入式开发就业还有前景吗?

    智能家居领域,嵌入式开发的主要工作是开发各种智能化设备和系统,如智能照明、智能安防、智能家电等。嵌入式开发人员需要掌握相关的硬件和软件技术,如处理器、传感器、通信技术、操作系统等,
    发表于 07-16 10:47

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用嵌入式系统
    发表于 05-15 09:29

    嵌入式开发:高门槛的系统性工程与 996 的行业困局

    嵌入式开发的门槛,往往被培训机构和表象所掩盖。许多人误以为 “用 C 语言写个跑 ARM 上的程序” 就是嵌入式,实则连皮毛都未触及。真正的嵌入式开发是硬件与软件深度融合的系统性工程
    的头像 发表于 04-09 11:06 672次阅读
    <b class='flag-5'>嵌入式开发</b>:高门槛的系统性工程与 996 的行业困局

    Python嵌入式系统的应用场景

    你想把你的职业生涯提升到一个新的水平?Python嵌入式系统中正在成为一股不可缺少的新力量。尽管传统上嵌入式开发更多地依赖于C和C++语言,Python的优势在于其简洁的语法、丰富的库和快速的
    的头像 发表于 03-19 14:10 1184次阅读

    BlackBerry QNX推出通用嵌入式开发平台

    BlackBerry有限公司(纽交所代码:BB;多伦多证券交易所代码:BB)旗下部门QNX今日宣布推出QNX 通用嵌入式开发平台(General Embedded Development
    的头像 发表于 03-11 16:04 934次阅读

    代码+案例+生态:武汉芯源半导体CW32嵌入式开发实战正式出版

    尊敬的各位电子工程师、嵌入式开发爱好者们:大家好!今天,我们怀着无比激动与自豪的心情,向大家宣布一个重大喜讯——武汉芯源半导体的单片机CW32正式出书啦!《基于ARMCortex-M0+的CW32
    的头像 发表于 03-03 15:15 1006次阅读
    代码+案例+生态:武汉芯源半导体CW32<b class='flag-5'>嵌入式开发</b>实战正式出版

    代码+案例+生态:武汉芯源半导体CW32嵌入式开发实战正式出版

    的理念,持续为大家带来更多优质的产品和技术支持。同时,也期待大家能够从这本书中收获满满,嵌入式开发道路上取得更加辉煌的成就!
    发表于 03-03 15:14

    如何成为嵌入式开发工程师?

    如何成为嵌入式开发工程师? 成为嵌入式开发工程师通常需要掌握一系列技能和知识,并且在实践不断积累经验。以下是一些基本步骤和建议: 1. 基础教育:- 获取电子工程、计算机科学或相关领域的学位
    发表于 02-19 10:39

    嵌入式开发必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品

    实用干货!嵌入式开发学习必备-RK3562演示Linux常用系统查询命令(上)关注触觉智能持续为大家带来更多嵌入式开发内容
    的头像 发表于 12-31 10:51 117次阅读
    <b class='flag-5'>嵌入式开发</b>必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品

    如何使用 RISC-V 进行嵌入式开发

    RISC-V是一种开源的指令集架构(ISA),它允许任何人设计、制造和销售基于RISC-V的处理器,这为嵌入式开发提供了极大的灵活性和创新空间。以下是使用RISC-V进行嵌入式开发的基本步骤: 一
    的头像 发表于 12-11 17:32 2742次阅读