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

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

3天内不再提示

设计安全可靠的嵌入式系统最佳实践

星星科技指导员 来源:嵌入式计算设计 作者:Ricardo Camacho 2022-07-01 14:15 次阅读

时间限制使开发人员面临着在严格且在许多情况下不充分的时间表内完成项目要求的压力。此外,对嵌入式软件的可靠性、准确性和性能的期望高于对实时计算的期望。我们还需要考虑运行嵌入式软件的实际目标硬件的约束。软件合规性和认证要求通常由行业强加以解决安全问题。

流程标准提供流程、验证方法和最佳实践,以确保软件安全、安全和质量有足够的信心。这些包括:

DO-178B/C(航空电子设备)

ISO 26262(汽车)

IEC 62304(医疗)

IEC 61508(工业

EN 50128(导轨)

和更多

软件验证和确认是遵守流程标准的关键组成部分。这是一个涉及不同软件测试技术的过程,这些技术可能是严格的、昂贵的和耗时的。

使用一种或两种软件测试技术并不能解决问题。在开发生命周期中使用各种自动化方法将为您节省时间和金钱。它还将有助于建立无价的可靠性声誉。

嵌入式软件开发的自动化测试方法

自动化对于测试嵌入式软件至关重要,因为手动方法容易出错且耗时。让我们讨论对您的团队有帮助的重要自动化测试方法。

静态代码分析

首先,我强烈建议始终将静态代码分析作为第一种测试方法。执行静态分析的一个绝妙优势是您可以在项目的任何阶段引入和使用它。即使项目不完整且部分编码,静态代码分析也是有效的,因为不需要执行代码。

引入静态分析的最大挑战是大量代码会产生大量警告。将静态分析集成到项目中时,建议关注以下内容:

尽快让团队高效工作。

最大限度地减少团队被所有静态分析警告淹没的机会。

这并不是要降低这些警告的重要性。但是,大多数开发人员没有修复现有或遗留代码的奢侈。至少不是马上。

因为有各种编码合规性标准(MISRA C:2012、AUTOSAR C++14、SEI CERT、CWE 等)从一个目标开始。如果安全是关键目标,那么启用所有与安全相关的规则、禁用不太重要的规则并启用一种内置的安全编码标准(如 CERT C/C++)是有意义的。

动态分析方法或运行时错误检测

如前所述,一种测试方法是不够的。仅通过静态分析无法识别所有错误或缺陷。动态分析方法或运行时错误检测也是一种可以采用的测试实践。

该测试应与需求相关联。它检查正在运行的代码,暴露架构和行为缺陷、其他弱点和/或安全漏洞,包括内存泄漏等。

团队可以在不同级别的软件抽象上应用这种类型的测试。从测试每个单独的单元或功能开始,然后集成其他软件部分。最终软件测试系统作为一个整体或黑盒。这通常体现在著名的 V 模型软件生命周期中。

结构代码覆盖率

在动态分析方法中,可以应用其他技术,如结构代码覆盖。

简而言之,结构覆盖是为了确定系统是否经过充分测试而执行和记录的代码的标识。如果您可以确定已通过测试用例执行的代码,那么未发现或未执行的代码将暴露出对额外测试的需求。

如果您的合规性要求是获得 100% 的代码覆盖率,那么您至少需要通过单元测试和手动测试来执行覆盖率。虽然我们可以继续揭示其他测试方法,如回归、性能、压力、API、UI、接受度等,但让我们深入研究嵌入式系统测试的现代部署。

持续集成和持续交付

在过去几年中越来越受欢迎的一个主题是持续集成和持续交付 (CI/CD)。CI/CD 是夜间集成的软件开发实践(将较小的构建单元组合到应用程序、库或组件中),旨在构建可测试的软件以实现持续交付和早期检测构建/集成问题和错误。

嵌入式软件开发中的 CI/CD 通常受到应用程序开发不受限制的方式。除了目标硬件平台的物理和计算约束之外,还有合规性约束。嵌入式软件市场对具有极长生命周期的安全性有独特的要求。产品可以在市场上保留数十年。

如今,一些组织将静态分析纳入其 CI/CD 现代开发工作流程中。适应通常围绕基于 Git 的开发环境,采用动态方法进行分支和合并,开发人员可以指定父/引用分支与他们当前的开发分支进行比较,并自动比较和计算增量以进行分析。

因此,与其在整个项目上运行分析,这可能需要相当长的时间,甚至几个小时,它可以在最小的文件集上运行。这减少了评估会议的持续时间和重点。然后可以解决和纠正编码违规,以实现干净、安全和可靠的构建。

容器化开发环境

另一种类型的现代化来自容器化开发环境。开发工具的容器化部署正在成为嵌入式开发团队的生计。

尽管容器最初是为了解决微服务和基于 Web 的应用程序的部署问题而开发的,但它们最近在嵌入式团队中流行起来。尤其是对于使用容器来管理复杂工具链的大型团队。

在管理复杂的开发环境时,尤其是在安全关键领域,团队通常会遇到以下挑战,这些挑战很容易通过容器解决:

将整个团队的升级同步到编译器、构建工具链等工具的最新版本。

动态响应库或软件开发工具包 (SDK) 等的新安全补丁。

确保所有团队成员和自动化基础设施 (CI/CD) 的工具链的一致性。

能够对开发环境进行版本化并恢复它以服务于通过特定工具链认证的旧版本产品。

入职和设置新的开发人员。

在下面的示例中,您让Parasoft C/C++test访问容器化编译器 (GNU GCC) 和运行时环境。有两个独立的 Docker 容器,一个用于编译器和构建工具,另一个用于执行环境(例如,嵌入式 Linux 的剥离版本)。

在这个例子中,Parasoft C/C++test 标准可以用作基于命令行的工具,适用于容器内部署。它可以与编译器和构建系统一起打包成一个容器镜像,用于 CI/CD 并部署到开发人员的桌面上进行本地命令行扫描。下图显示了此设置的高级概述。

以下示例可以通过自动化完成,或者每个团队成员都可以拉出一致的开发环境,其中容器化提供以下功能:

开发环境版本控制

集中管理和部署

对安全漏洞的即时反应

较低的入职成本

了解行业领导者如何提供安全可靠的软件

如果您想简化团队工作流程、削减成本并缩短上市时间,那么了解嵌入式安全和安全关键系统开发中的挑战、解决方案和现代方法对您来说很重要。

审核编辑:郭婷

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

    关注

    4981

    文章

    18266

    浏览量

    288222
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72892
  • 编译器
    +关注

    关注

    1

    文章

    1575

    浏览量

    48606
收藏 人收藏

    评论

    相关推荐

    嵌入式热门发展方向有哪些?

    ,从而提高生产效率和质量。可靠性:嵌入式系统可以实现24小时无间断工作,减少设备故障的发生。可编程性:嵌入式系统可以进行灵活的编程,以满足各
    发表于 04-11 14:17

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式系统开发中最常用的编程语言之一。成为一名
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式系统开发中最常用的编程语言之一。成为一名
    发表于 03-25 14:12

    嵌入式会越来越卷吗?

    以及大数据处理等技术之间的整合与互动可能会越来越密切。这种融合或许会带来更强大的系统和更广泛的应用,但也会带来新的挑战,如数据安全性和系统稳定性等问题。 嵌入式
    发表于 03-18 16:41

    嵌入式系统发展前景?

    应用领域。随着汽车电子化和智能化程度的不断提高,嵌入式系统将在汽车控制、安全系统、自动驾驶等方面发挥更为重要的作用。 工智能和机器学习技术的发展为嵌入式
    发表于 02-22 14:09

    嵌入式学习步骤

    嵌入式行业是一个涉及广泛领域的行业,嵌入式、物联网、人工智能、智能与科学、电子信息工程、通信工程、自动化工程、测控、计算机科学等专业在嵌入式系统中使得软件和硬件的结合更加高效,适合从事
    发表于 02-02 15:24

    TPM是否可以作为嵌入式信息安全系统的主控?

    目前想开发一个嵌入式信息安全系统,实现建立TLS连接以及密钥和证书的安全存储以及日志的安全存储,类似于HSM。目前硬件上HSM集成在MCU中,成本太高且资源过于浪费,因此考虑使用TPM
    发表于 10-23 09:17

    什么是嵌入式Linux?

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

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统
    发表于 09-28 06:59

    监控技术如何增强嵌入式系统安全

    为确保嵌入式系统安全性所采用的基本安全措施之一是时间和逻辑序列监控。在本文中,我们将了解监控技术如何增强嵌入式
    的头像 发表于 09-15 11:06 303次阅读
    监控技术如何增强<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>的<b class='flag-5'>安全</b>

    嵌入式新手应该怎么学?

    嵌入式新手应该怎么学? 对于嵌入式新手来说,知道一点嵌入式,知道嵌入式大概是做什么的,不是很懂,所以要熟悉掌握嵌入式的概念。我们可以看到网上
    发表于 09-08 10:22

    使用MPU监控创建安全可靠嵌入式系统 使用MPU监控的原因和好处

    的一个基本安全措施是MPU(内存保护单元)监控。在本文中,我们将深入探讨MPU监控,分析其重要性、好处,以及它如何帮助创建安全可靠嵌入式系统
    的头像 发表于 07-21 11:04 560次阅读

    基于RTOS的应用程序的五个最佳实践技巧

    嵌入式系统使用 RTOS,而且随着系统的时序要求变得越来越复杂,这个数字只会随着时间的推移而增加。在今天的文章中,我们将研究设计基于 RTOS 的应用程序的五个最佳
    的头像 发表于 07-07 16:49 593次阅读
    基于RTOS的应用程序的五个<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>技巧

    PX5的ARM TrustZone支持让嵌入式系统变得更加安全

    产品安全性。PX5 RTOS对ARM TrustZone的支持让嵌入式开发者能够从物理层降低网络安全风险。 PX5的CEO William Lamie表示:“基于MCU的产品如今已是生活中不可缺少的一部分
    发表于 05-18 13:44

    安全软件开发的最佳实践

    安全的软件开发最佳实践是必要的,因为安全风险无处不在。在网络攻击盛行的时代,它们可以影响每个人,包括个人、公司和政府。因此,确保软件开发的安全
    的头像 发表于 05-08 10:51 483次阅读
    <b class='flag-5'>安全</b>软件开发的<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>