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

审核编辑:郭婷

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

    关注

    4993

    文章

    18359

    浏览量

    290088
  • JAVA
    +关注

    关注

    19

    文章

    2905

    浏览量

    103101
收藏 人收藏

    评论

    相关推荐

    嵌入式学习步骤

    硬件组件。 (4).开发固件:编写嵌入式系统的固件,这是嵌入式系统的软件部分。固件负责控制硬件并执行特定任务。 (5).调试和测试:嵌入式
    发表于 02-02 15:24

    嵌入式自学好书推荐

    科技的发展和市场的扩大,嵌入式系统未来仍将是一个重要的方向。 嵌入式开发的薪资待遇也较为优厚,工作时间相对前端和Java开发较少,且享有五险一金。对于应届生来说,一般薪资
    发表于 01-11 15:13

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

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

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

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

    c语言嵌入式开发

    电子发烧友网站提供《c语言嵌入式开发.zip》资料免费下载
    发表于 11-17 14:11 2次下载
    c语言<b class='flag-5'>嵌入式开发</b>

    嵌入式开发系统基础知识

    电子发烧友网站提供《嵌入式开发系统基础知识.pdf》资料免费下载
    发表于 11-17 10:59 0次下载
    <b class='flag-5'>嵌入式开发</b>系统基础知识

    嵌入式开发学习路线

    电子发烧友网站提供《嵌入式开发学习路线.doc》资料免费下载
    发表于 11-17 10:13 12次下载
    <b class='flag-5'>嵌入式开发</b>学习路线

    嵌入式开发入门学习

    电子发烧友网站提供《嵌入式开发入门学习.doc》资料免费下载
    发表于 10-26 09:37 1次下载
    <b class='flag-5'>嵌入式开发</b>入门学习

    Linux系统的嵌入式开发是什么

    嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家居等。   随着物联网时代的到来,嵌入式开
    的头像 发表于 10-12 15:40 1060次阅读

    什么是嵌入式Linux?

    发展需要不断进化。随着芯片性能的增强和社会变革的需要,嵌入式系统越来越承接更多、更复杂的功能,所以嵌入式开发也以高薪稳定的状态稳坐在就业的顶端。(相较于其他行业,嵌入式工程师的工资
    发表于 10-11 13:47

    嵌入式Linux应用开发的完全手册

    嵌入式Linux嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux 的入门很难。初学者多是自己琢磨,效率不高。学习过程碰到的问题千奇百怪
    发表于 09-25 07:12

    基于树莓派的嵌入式Linux开发教学

    树莓派对于全球嵌入式 Linux 开发及教育已经并将继续带来广泛的影响,及早将之引入我国主流的嵌入式开发与教学环境或将是有益的。尽管传统的 “ARM
    发表于 09-21 07:09

    STM32嵌入式开发中的RTOS,你用过哪些?

    STM32嵌入式开发中的RTOS,你用过哪些?
    的头像 发表于 09-18 16:21 854次阅读
    STM32<b class='flag-5'>嵌入式开发</b>中的RTOS,你用过哪些?

    什么人适合学习嵌入式开发

    到底什么专业的人适合学嵌入式?或从事过自动化相关工作的人员,适合参加嵌入式学习吗?等等系列问题,接下来就问大家一一解答:究竟什么样的人才适合学习嵌入式开发嵌入式简单来讲,就是软硬
    发表于 06-07 15:55

    嵌入式开发成本高的原因有哪些

    这里先问下大家:你觉得嵌入式开发成本高吗? 答案:是的,对于普通人来说,很高。当然,部分富豪除外。 下面给大家罗列一下嵌入式开发成本高的几点原因。
    的头像 发表于 06-02 10:24 636次阅读
    <b class='flag-5'>嵌入式开发</b>成本高的原因有哪些