嵌入式系统工程师怎样才能不落伍

news2024/9/21 12:43:19

        不断增加的复杂性和异质化正在衍生出一些新的方法,能够避免在设计周期结束时出现意外。

        在一个系统中,硬件的表现是否优秀取决于运行在其上的软件。随着系统复杂性的增加,总是软件在拖后腿。

        缩小硬件和软件差距的方法是不断改进软件开发的方法。在把软件部署运行在硬件上之前,确保软件升级都进行了验证和测试,并进行之前芯片制造商开发硬件时进行的同类的详细检查。

5929256a445b6-thumb.jpg

        试图将软件开发过程提前并不是什么新主意。多年来,业界开发了一系列的方法解决这个问题。比如敏捷软件开发方法,它试图通过两个或更多的软件开发者同时进行同一个代码的开发来降低错误。此外还包括持续集成方法,它是从另外一个角度解决这个问题的,这个方法的本质是,将代码持续不断地加入共享的代码库或开发分支中,进行频繁的自动构建,以在早期发现和验证问题。

        Mentor嵌入式部门产品管理总监Warren Kurisu说:“越来越多的开发团队正在使用持续集成方法作为简化整体开发流程的手段,并避免在开发集成阶段出现令人讨厌的意外。基于模型的设计方法通过模拟和自动代码生成进行了大量的工作,可以支持这种方法过程。”

        通过持续集成,可以在构建硬件设备的同时,构建一个单纯从概念出发的数字映像。在这种方法的加持下,多个更加独立的团队可以同时开发,这时,更好地践行持续集成概念就变成了各个团队的代码“何时”准备好集成进系统的问题。

        “多团队同时开发的方法是对持续集成模式的一种认可,这种方法使开发商能够更早地对设计进行验证,并允许开发人员根据数字映像模型验证其代码和测试系统配置。”Kurisu说。“举一个简单的例子吧,比如Linux进程。这种架构设计使应用程序开发人员能够在其桌面开发系统上创建应用程序,只要它们遵守Linux编程模型,这些应用程序就可以在最终阶段顺利集成,甚至可以在系统部署后加载。如果系统架构师需要更严格的分离模型,则可以使用独立的执行环境,如Linux容器或Docker容器。这种模式不仅适用于Linux,实时操作系统也和Linux进程很像,包括一个允许代码分离的进程模型。”

        一旦在进程或分区中运行的代码就绪,就可以将其纳入到连续集成工作流中。虽然这似乎是一个显而易见的步骤,但它的效果很好,可以很快地将各种异构组件融合在一起。

        “例如,集成了四核ARM Cortex-A53内核、Cortex-R5内核和FPGA架构,并具有可实现功能分离的多个电源层的Xilinx UltraScale + MPSoC,”Kurisu说。“可以预计的情景是多个开发团队同时为这个SoC编写代码,一个团队在应用内核上开发Linux,一个团队在实时内核上开发安全应用程序,另一个团队在FPGA架构上实现算法。在总体架构上,这些应用可以通过已定义的接口进行通信。一方面,这些独立团队自身可能会使用持续集成方法来构建在其内核上运行的代码,另一方面,当系统所有内核上的代码都就绪后,主要的集成工作就会开始。和上面一样,持续集成的问题就是进行全系统集成的代码何时准备就绪。”

基础问题

        系统的复杂性一直在稳步增长,部分原因是没有人确定虚拟/增强现实、汽车、医疗、工业物联网和深度学习等各种新兴市场需要什么样的芯片或功能。在这种情况下,一种常见的方法是将多个类型的处理器和功能集成在一颗芯片上,通过软件把各个组件融合在一起,这比将所有组件放入各个分立的ASIC中更便宜。

        Aldec硬件部总经理Zibi Zalewski表示:“最终配置是根据目标市场或客户要求创建的。“子系统的可扩展性使您可以快速增加系统规模和复杂性。现在,把一个系统从双核扩展到四核不算什么大问题,没有适当的工具才是真正的问题所在。此外,硬件部分不再是决定项目的主要元素,系统复杂性主要来自于软件层。所以不单单是晶体管数量问题,还包括功能要求。”

        这与系统整体质量有直接的关系,最终是衡量创建该系统的各种方法的有效性。

        ARM模型技术总监Bill Neifert说:“评估质量时,挑战在于它不仅仅涉及芯片的质量。它衡量的是整个系统,会衍生出区段问题。每个设计中都有你关心的东西,但对于汽车、工业和企业计算而言,关心对象又有所不同。一些涉及不同的硬件,另外一些则是相同硬件上的不同应用。如果您正在处理需要记录和证据的安全相关问题,你需要关心的就是软件过程和底层硬件。记住,你能证明到什么程度,质量就是什么水平。”

最大限度降低意外
        不管选择的方法有多好,总会有一些错误发生。所以,这里的目标是尽量减少项目开发最终阶段的意外,记住,没有任何一种方法能够完全消除意外。
“当您编写应用程序时,您真的必须在真实的目标上运行一下它,因为您可能没有正确地分配内存,或者您可能只有只能在ARM上使用的二进制库,而很多人却试图在x86上测试嵌入式系统,“Imperas Software首席执行官Simon Davidmann说。“Jenkins是一个经常被提及的开源自动化服务器,代码可以在ARM、MIPS或瑞萨处理器上运行,不需要任何管理工作,在几分钟之内就可以得到一个“测试通过”的结果。你可以把Jenkins看做运行对象,你可以说,'这是我的机器。我有四台机器可以运行测试',其他人也可以共享Jenkins资源。它可以简化最简单的程序,即便你的程序只有一个只包含一个算法的文件,它也允许你构建工程并运行,当你修改了代码,它可以自动化地充分测试并记录。当然,您必须了解Jenkins的产品如何工作或模拟器的工作原理,但是只需要几千美元,您就能获得可以非常有效地进行编译、构建、测试和验证的系统。”

        Synopsys的MetaWare产品经理Allen Watson说:“我们生产的软件是允许人们开发软件的工具。我们的客户使用我们的工具编写嵌入式软件,但同时我们的工具本身也是软件。虽然有一些差异,但归根结底我们和客户们都在编写软件,这是一个非常复杂的软件。我们自己也在小组内采用持续集成方法,没有其它方法能够替代这种开发方式。我们有多个开发人员编写同一个产品的软件,但他们承担不同的任务。通常,他们先写自己的代码,在本地进行一些单元测试,准备好后,就把代码并到软件的主线开发分支上。

        但是,并不是每个人都认可这个概念。Uniquify营销副总裁Graham Bell认为,重点应该是反复性而不是持续集成。

        “持续意味着不间断地继续下去,而反复意味着活动之间可以暂停,”他说。“当然,嵌入式软件的集成工作会反复经历一系列的集成-测试 - 修改活动,直到特征漂移结束或者bug数量达到了设计签收级别。这就是这个过程中暂停的地方。随着设计从硅虚拟原型转移到硬件原型,最终再转移到消费者手中的产品,这种集成循环会一再发生。有些人可能会认为,集成工作的这些阶段现在是重叠的,因为各个设计团队需要尽早获得有关工作设计的知识,以加速自己工作的设计签收。如果是这种情况,那么也许我们可以说,这些同步进行的工作正在导致嵌入式软件的持续整合。”

        这不仅仅是定义上的分歧,它影响着基础方法论。和支持反复整合的企业相比,支持持续整合的企业数量增长更多。

        Austemper设计系统公司首席执行官Sanjay Pillay认为,持续集成是实现最佳上市时间的唯一途径。“目前复杂的SoC及其开发时间表无法通过使用硬件-固件-软件的串行开发方法来实现。工程团队现在必须包括硬件开发人员和嵌入式软件设计人员,而且软件设计人员的数量往往超过硬件设计人员。他们一起开始这个项目,并在整个项目周期中并肩协作。”

        但是,随着设计中异构组件的数量不断增多,持续集成也只是简化开发流程的其中一个选择。

        Mentor的Kurisu说:“人们可以争辩说,今天最先进的软件和硬件不再需要持续集成方法。但是我认为,基于模型的设计实际上激发了持续集成方法的活力,并放大了这种方法的作用。”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/821616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】多医院、多诊所、多机构SaaS模式云HIS信息管理系统源码

云HIS,一款基于云计算和大数据技术的智慧医院云平台,为医疗机构提供了一种全新的信息化解决方案,旨在实现数据安全、用户满意度和成本效益的最佳平衡。 基于云计算技术的B/S架构的HIS系统,为基层医疗机构提供标准化的、信息化的、…

攻击数亿个账户,黑客利用OAuth2.0疯狂作恶

一、OAuth协议介绍 OAuth是一种标准授权协议,它允许用户在不需要向第三方网站或应用提供密码的情况下向第三方网站或应用授予对存储于其他网站或应用上的信息的 委托访问 权限。OAuth通过访问令牌来实现这一功能。 1.发展历史 OAuth协议始于2006年Twitter公司Ope…

Python爬虫遇到URL错误解决办法大全

在进行Python爬虫任务时,遇到URL错误是常见的问题之一。一个错误的URL链接可能导致爬虫无法访问所需的网页或资源。为了帮助您解决这个问题,本文将提供一些实用的解决方法,并给出相关代码示例,希望对您的爬虫任务有所帮助。 一、…

mysql进阶-触发器

在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 和 库存信息 分别存放在 2 个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时 在库存表中…

牛客网Verilog刷题——VL41

牛客网Verilog刷题——VL41 题目答案 题目 请设计一个可以实现任意小数分频的时钟分频器,比如说8.7分频的时钟信号,注意rst为低电平复位。提示:其实本质上是一个简单的数学问题,即如何使用最小公倍数得到时钟周期的分别频比。设小…

23种设计模式详解与示例代码(详解附DEMO)

设计模式在Java中的应用与实现 🚀🚀🚀1.创建型模式1. 工厂方法模式(Factory Pattern)2.抽象工厂模式(Abstract Factory Pattern)3. 单例模式(Singleton Pattern)4.原型模…

Bug解决:ModuleNotFoundError: No module named ‘taming‘

from taming.modules.vqvae.quantize import VectorQuantizer2 as VectorQuantizer ModuleNotFoundError: No module named taming 在安装 taming-transformers时,出现了以下两个报错: 报错一: from taming.modules.vqvae.quantize import V…

使用langchain与你自己的数据对话(四):问答(question answering)

之前我已经完成了使用langchain与你自己的数据对话的前三篇博客,还没有阅读这三篇博客的朋友可以先阅读一下: 使用langchain与你自己的数据对话(一):文档加载与切割使用langchain与你自己的数据对话(二):向量存储与嵌入使用langc…

2023CRM如何选型?有哪些特点需要注意?

企业管理中客户关系管理系统被认为是至关重要的一环。随着市场竞争加剧和科技不断发展,企业面临着各种选择,如何选择适合自己的CRM系统变得非常重要。本文将为您介绍2023CRM选型最新指南。 首先,应该了解CRM系统的分类,根据自己的…

LeetCode每日一题——1331.数组序号转换

题目传送门 题目描述 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的…

【Python机器学习】实验07 K-means无监督聚类

文章目录 聚类K-means 聚类1 准备数据2 给定聚类中心,计算每个点属于哪个聚类,定义函数实现3 根据已有的数据的标记,来重新更新聚类中心,定义相应的函数4 初始化聚类中心,定义相应的函数5 定义K-means算法6 绘制各个聚…

windwos server 2008 更新环境,且vs_redis 安装失败

KB2919442 下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id42153 KB2919355 下载地址:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id42153 安装步骤:先安装442,后安装355

C++ 对象的生存期

对象(包括简单变量)都有诞生和消失的时刻。对象诞生到结束的这段时间就是它的生存期。在生存期内,对象将保持它的状态(即数据成员的值),变量也将保持它的值不变,直到它们被更新为止。对象的生存…

windows下安装anaconda、pycharm、cuda、cudnn、PyTorch-GPU版本

目录 一、anaconda安装及虚拟环境创建 1.anaconda的下载 2.Anaconda的安装 3.创建虚拟环境 3.1 环境启动 3.2 切换镜像源 3.3环境创建 3.4 激活环境 3.5删除环境 二、pycharm安装 1.pycharm下载 2.pycharm的安装 三、CUDA的安装 1.GPU版本和CUDA版本、cudnn版本、显卡…

布瑞特单圈绝对值旋转编码器串口数据读取

布瑞特单圈绝对值旋转编码器串口数据读取 数据手册:http://briter.net/col.jsp?id109 (2.1版本RS485说明书通信协议 单圈.pdf) 绝对式编码器为布瑞特BRT38-ROM16384-RT1,采用RS485通信。 该绝对式编码器共有5根线:红、黄、黑、绿、白 由…

解决 MyBatis-Plus + PostgreSQL 中的 org.postgresql.util.PSQLException 异常

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

计算机网络期末复习要点(谢希仁第8版)抱佛脚通用

熬夜苦肝4天,拿下! 课本是谢希仁的计算机网络,第8版。 本文原创!禁止转载。 复习建议:本博客不一定能涵盖你们考试的重点,所以不是走到穷途末路的同学还是应该多多回归课本,课本每章后面都有…

DRM几个重要的结构体及panel开发

一、DRM Linux下的DRM框架内容众多,结构复杂。本文将简单介绍下开发过程中用到的几个结构体。这几个结构体都在之前文章里面开发DRM驱动时用到的,未用到的暂不介绍。 DRM中的KMS包含Framebuffer、CRTC,ENCODER,CONNECTOR&#xff…

ARM处理器 指令(读写内存、状态寄存器、软中断、协处理器……)

一、数据处理指令1)数学运算数据运算指令的格式数据搬移指令立即数伪指令加法指令带进位的加法指令减法指令带借位的减法指令逆向加法指令乘法指令数据运算指令的扩展 2)逻辑运算按位与指令按位或指令按位异或指令左移指令右移指令位清零指令 3&#xff…

弱监督语义分割伪标签可视化(把单通道灰度图转为voc格式语义分割标签的彩色形式)

一、目的 以图片2007_001960为例,voc数据集中的原图和对应的语义分割标签分别如下: 图1 图2 图像级标签WSSS任务第一阶段最后生成的pseudo mask如下: 图3 我们的…