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

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

3天内不再提示

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

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

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

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

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

ISO 26262 (汽车)

IEC 62304(医疗)

IEC 61508(工业

EN 50128(导轨)

以及更多

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

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

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

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

静态代码分析

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

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

尽快让团队富有成效。

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

这并不是要贬低这些警告的重要性。但是,大多数开发人员无法修复现有或遗留代码。至少不是立即。

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

Dynamic Analysis Methods or Runtime Error Detection

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

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

团队可以在软件抽象的各个级别应用这种类型的测试。从测试每个单独的单元或功能开始,然后集成其他软件部件。最终软件测试整个系统或黑匣子。这通常表现在众所周知的 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,并部署到开发人员的桌面以进行本地命令行扫描。下图显示了此设置的高级概述。

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

开发环境版本控制

集中管理和部署

对安全漏洞的即时反应

降低入职成本

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

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

审核编辑:郭婷

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

    关注

    8

    文章

    5155

    浏览量

    126447
  • 嵌入式
    +关注

    关注

    5068

    文章

    19013

    浏览量

    303090
收藏 人收藏

    评论

    相关推荐

    什么是嵌入式操作系统?

    的战斗机。 FreeRTOS:它适合那些资源有限的小型设备,就像小巧的瑞士军刀。 QNX:它以安全可靠著称,很多汽车和工业系统都用它,可以说是EOS中的沃尔沃。 Linux:虽然它不是专门为
    发表于 11-08 15:07

    嵌入式学习建议

    ,最好能有自己动手的空间。不花一分硬件钱想要学好嵌入式系统不实际,因为这是实践性很强的学科。好书,可以让人少走弯路,不被误导。好老师也可以是做过一些实际项目的学长(一定要找做过几个成功项目的学长或老师做
    发表于 10-22 11:41

    什么是嵌入式?一文读懂嵌入式主板

    的个人电脑不同,嵌入式系统不是为了通用的计算任务设计,而是专注于特定的应用场景,确保其在特定环境中运行得既高效又可靠
    的头像 发表于 10-16 10:14 481次阅读

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+全文学习心得

    降低了虚拟机之间的耦合性,提高了系统可靠性和安全性。 在学习过程中,我深刻体会到嵌入式Hypervisor的核心价值在于其灵活性和可扩展性。它能够根据实际应用需求,动态地调整资源配置
    发表于 10-09 19:11

    【「嵌入式Hypervisor:架构、原理与应用」阅读体验】+第7-8章学习心得

    提供了安全可靠和高效的虚拟化环境。同时,嵌入式Hypervisor的设计还注重解决容错性和实时性问题,为构造高可靠嵌入式
    发表于 10-09 18:50

    嵌入式系统的原理和应用

    嵌入式系统是一种专用的计算机系统,其设计初衷是执行特定任务,而非作为通用计算机使用。这类系统通常作为更大系统的一部分,起到控制、监控或辅助的
    的头像 发表于 10-05 17:03 529次阅读

    嵌入式系统的未来趋势有哪些?

    ,会更多地使用环保材料,以减少对环境的污染。同时,系统设计将更加注重生态可持续性,满足可持续发展的需求。 6. 实时操作系统(RTOS)的发展 实时操作系统嵌入式
    发表于 09-12 15:42

    嵌入式系统怎么学?

    系统设计与调试:需要掌握嵌入式系统的设计方法和调试技术,包括硬件设计、软件设计、电路调试等,以确保系统的稳定性和可靠性。 随着技术的不断进
    发表于 07-02 10:10

    如何提升嵌入式编程能力?

    最佳实践。 13. 阅读相关书籍:阅读关于嵌入式系统设计和编程的书籍,以获得更深入的理解。 14. 构建项目:通过构建完整的嵌入式项目来综
    发表于 06-21 10:01

    再谈嵌入式实时操作系统

    程序的可移植性得到了增强,系统开发的工作量减轻的同时也提高了开发效率。对实时性和可靠性日益增长的要求正在塑造某些现代领域的嵌入式实时操作系统的发展方向,例如航空航天、工业控制、汽车电子
    的头像 发表于 04-09 17:27 741次阅读
    再谈<b class='flag-5'>嵌入式</b>实时操作<b class='flag-5'>系统</b>

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

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

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

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

    嵌入式系统发展前景?

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

    如何使用 DSC 和 MCU 确保嵌入式系统安全

    作者:Stephen Evanczuk 投稿人:DigiKey 北美编辑 随着向物联网 (IoT) 的迁移,安全性已不再是嵌入式应用中的选配功能,已发展成为确保系统完整性所需的必备能力。为了满足日益
    的头像 发表于 02-13 14:38 653次阅读
    如何使用 DSC 和 MCU 确保<b class='flag-5'>嵌入式</b><b class='flag-5'>系统安全</b>

    什么是嵌入式系统嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2391次阅读