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补救措施,可以覆盖嵌入式实时应用程序的所有级别,从高级应用程序复杂性一直到最低级别的硬件。

审核编辑:郭婷

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

    关注

    5068

    文章

    19019

    浏览量

    303290
  • JAVA
    +关注

    关注

    19

    文章

    2958

    浏览量

    104548
收藏 人收藏

    评论

    相关推荐

    零基础嵌入式开发学习路线

    嵌入式开发”没有接触过的同学可能会不明觉厉,但是只要你了解了,感兴趣并且有一个正确的学习路线的话,零基础也能入门。给大家介绍一个简单易懂的学习路线,让你能够从零开始学习嵌入式开发。 第一步:掌握
    发表于 10-25 15:55

    嵌入式开发常见问题排查

    嵌入式开发问题排查很多人认为嵌入式开发很难,主要是因为在这个过程中常常会遇到各式各样的问题。这些问题的复杂性和多样性使得许多人感到困惑和无所适从。然而,如果将这些问题逐一拆解,实际上大部分都可以
    的头像 发表于 09-22 08:04 267次阅读
    <b class='flag-5'>嵌入式开发</b>常见问题排查

    恩智浦加速嵌入式AI创新应用开发

    AI应用飞速发展的今天,如何能够将AI与嵌入式系统开发有机结合起来,营造新的开发生态,打造与众不同的创新用例,一直是嵌入式开发者追求的目标
    的头像 发表于 08-27 09:46 792次阅读

    聚焦嵌入式开发的合规性工具、项目管理工具、版本迭代工具应用

    ,就嵌入式开发与管理领域的最新趋势、工具选择以及DevSecOps实践应用等方面展开了深入探讨。 本期对话龙智资深DevSecOps顾问徐晨晖, 分享嵌入式开发的合规性工具、项目管理和版本管理的工具选择,以及DevSecOps
    的头像 发表于 07-29 15:15 478次阅读

    嵌入式开发前景怎么样?

    嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统各个领域的广泛应用。以下是对嵌入式开发前景的详细分析
    的头像 发表于 07-10 09:00 2504次阅读
    <b class='flag-5'>嵌入式开发</b>前景怎么样?

    嵌入式开发者的未来

    嵌入式系统的就业方向非常广泛,涵盖了许多不同的行业和领域。以下是一些常见的嵌入式系统就业方向:消费电子产品:这包括智能手机、平板电脑、智能电视、智能家居设备等。嵌入式系统工程师可以参与设计、
    的头像 发表于 06-23 08:10 328次阅读
    <b class='flag-5'>嵌入式开发</b>者的未来

    嵌入式开发就业前景怎么样?

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

    ARM Cortex-A53嵌入式开发平台Android手册

    电子发烧友网站提供《ARM Cortex-A53嵌入式开发平台Android手册.pdf》资料免费下载
    发表于 04-28 15:10 0次下载

    fpga是嵌入式开发

    FPGA(现场可编程门阵列)与嵌入式开发之间确实存在一定的关联,但它们本质上是两个不同的领域。
    的头像 发表于 03-15 14:18 982次阅读

    嵌入式软件开发和软件开发的区别

    嵌入式软件开发和软件开发是两个不同的概念,它们一些关键方面有着明显的区别。嵌入式软件开发是指
    的头像 发表于 01-22 15:27 2177次阅读

    嵌入式开发常见的C语言技巧与方法分享

    嵌入式开发,常常要操作寄存器,对寄存器进行写入,读出等等操作。每个寄存器都有自己固有的地址,通过C语言访问这些地址就变得尤为重要。
    的头像 发表于 12-26 09:55 1056次阅读

    嵌入式开发学习的十三法则分享

    嵌入式开发学习是一个不断积累和总结的过程,来自一个嵌入式开发高级工程师为我们总结的关于嵌入式开发学习的十三法则,大家不妨参考一下: 一、冗余度法则
    发表于 12-21 06:32

    嵌入式开发C语言中的uint8_t科普

    嵌入式开发的C语言代码,经常可以看到类似uint8_t、uint16_t、uint32_t、uint64_t这种数据类型,在教材却从
    的头像 发表于 12-13 16:30 6634次阅读
    <b class='flag-5'>嵌入式开发</b>C语言中的uint8_t科普

    嵌入式开发的交叉编译详解

    嵌入式开发,经常会遇到目标平台资源贫乏,无法运行需要的编译器。亦或是目标平台上不允许或不能够安装需要的编译器。这时候就需要使用交叉编译了。
    的头像 发表于 12-01 13:24 1153次阅读
    <b class='flag-5'>嵌入式开发</b><b class='flag-5'>中</b>的交叉编译详解

    嵌入式开发为什么需要输出调试信息?

    嵌入式开发为什么需要输出调试信息? 因为输出调试信息是嵌入式开发中一项非常重要的实践,它有助于保证软件的可靠性、稳定性和性能,也是故障排查的关键工具之一。 嵌入式开发输出调试信息主要有以下
    发表于 11-28 16:46