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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Ricardo Camacho 2022-10-21 14:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

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

ISO 26262(汽车)

IEC 62304(医疗)

IEC 61508(工业)

EN 50128(导轨)

以及更多

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

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

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

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

静态代码分析

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

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

让团队尽快提高工作效率。

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

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

因为有各种编码合规性标准(MISRA C:2012,自动sar 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++测试访问容器化编译器 (GNU GCC) 和运行时环境。有两个单独的 Docker 容器,一个用于编译器和构建工具,另一个用于执行环境(例如,嵌入式 Linux 的剥离版本)。

在这个例子中,Parasoft C/C++测试标准可以用作基于命令行的工具,适用于容器内部署。它可以与编译器和构建系统打包到一个容器映像中,用于 CI/CD,并部署到开发人员的桌面上进行本地命令行扫描。

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

开发环境版本控制

集中管理和部署

对安全漏洞的即时反应

更低的入职成本

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

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

审核编辑:郭婷

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

    关注

    5186

    文章

    20146

    浏览量

    328779
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76706
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    精准对时与全面加密:嵌入式工控机助力光伏储能系统安全稳定运行

    英康仕工控推出的NIS-YS839嵌入式工控机,以其B码对时功能和全面国密算法支持,为光伏储能行业提供安全可靠的硬件解决方案。
    的头像 发表于 11-18 14:22 1637次阅读
    精准对时与全面加密:<b class='flag-5'>嵌入式</b>工控机助力光伏储能<b class='flag-5'>系统安全</b>稳定运行

    嵌入式系统的定义和应用领域

    应用系统在功能、可靠性、成本、体积和功耗等方面的严格要求的专用计算机系统。 那么,嵌入式系统具体应用在哪些领域呢?事实上,它们的应用非常
    发表于 11-17 06:49

    2025年最佳嵌入式编程语言有哪些呢?

    嵌入式系统是现代科技不可或缺的一部分。它们存在于家用电器、汽车、住宅、医院、商店等各个领域。它们与我们的社会紧密相连。选择合适的语言来构建嵌入式系统对于成功至关重要。那么,2025年
    的头像 发表于 11-14 10:27 895次阅读
    2025年<b class='flag-5'>最佳</b>的<b class='flag-5'>嵌入式</b>编程语言有哪些呢?

    嵌入式开发的关键点介绍

    开发需要考虑嵌入式系统的资源限制,例如:内存、CPU处理能力等等。因此,嵌入式开发需要开发人员具备优化代码的能力。嵌入式系统
    发表于 11-13 08:12

    嵌入式实时操作系统的特点

    任务的系统。 实时嵌入式操作系统与传统的桌面操作系统相比,更注重对实时任务的响应和精确控制。它们在资源利用、可靠性、可预测性、任务调度和中断
    发表于 11-13 06:30

    如何采用SAFERTOS和ESM保护嵌入式系统安全

    信任根的重要组成部分是实时操作系统(RTOS),它为应用程序的运行提供了一个安全的平台。嵌入式系统的具体安全要求取决于其架构以及所面临的威胁
    的头像 发表于 10-24 15:51 1148次阅读

    2025全国大学生嵌入式芯片与系统设计竞赛应用赛道全国总决赛圆满闭幕-飞凌嵌入式

    8月13日2025全国大学生嵌入式芯片与系统设计竞赛应用赛道全国总决赛圆满闭幕,飞凌嵌入式作为大赛协办单位之一,携手瑞芯微在应用赛道设立专属赛题并承担评审工作,积极为高校学子搭建高水平的嵌入式
    的头像 发表于 08-15 08:02 2072次阅读
    2025全国大学生<b class='flag-5'>嵌入式</b>芯片与<b class='flag-5'>系统</b>设计竞赛应用赛道全国总决赛圆满闭幕-飞凌<b class='flag-5'>嵌入式</b>

    【技术指南】提升嵌入式数据可靠性,从元器件选型开始!

    数据可靠性是嵌入式产品开发中的关键问题,涉及多个层面的设计和选型。从本期开始,我们将通过一系列内容深入探讨嵌入式数据存储的可靠性问题。前言数据可靠
    的头像 发表于 07-29 11:35 280次阅读
    【技术指南】提升<b class='flag-5'>嵌入式</b>数据<b class='flag-5'>可靠</b>性,从元器件选型开始!

    嵌入式开发入门指南:从零开始学习嵌入式

    开发(设备驱动、内核编译) 4. 推荐的学习资源书籍:《嵌入式系统软件设计基础》《ARM Cortex-M系列嵌入式开发》在线课程:慕课网、B站嵌入式教学视频
    发表于 05-15 09:29

    嵌入式应用中常见的安全威胁

    越来越多的嵌入式设备存在互联需求,在安全应用开发中,除功能安全外,应用还需考虑信息安全
    的头像 发表于 04-28 14:45 992次阅读
    <b class='flag-5'>嵌入式</b>应用中常见的<b class='flag-5'>安全</b>威胁

    嵌入式适合自学吗?

    缺乏系统的规划,而学习到一些不相关或不重要的内容。 2)缺乏实践机会:嵌入式开发需要大量的实践,而自学的学习者可能缺乏实际的项目练习和实践
    发表于 04-27 09:54

    可靠嵌入式主板设计

    嵌入式系统已广泛应用于各个领域,从航空航天、医疗设备到工业控制和智能家居,其应用范围不断扩展。随着应用场景的日益复杂和关键,嵌入式系统可靠
    的头像 发表于 03-25 15:11 809次阅读
    高<b class='flag-5'>可靠</b>性<b class='flag-5'>嵌入式</b>主板设计

    如何提高嵌入式代码质量?

    。 3. 嵌入式操作系统的使用:选择和配置合适的嵌入式操作系统(如FreeRTOS、uC/OS等),能够提供任务调度、内存管理和通信支持,减少开发复杂度和提高
    发表于 01-15 10:48

    新手怎么学嵌入式?

    ,实现一些简单的功能,如点亮一个 LED 灯、读取传感器数据等,来加深对嵌入式技术的理解。你还可以参加一些线上或线下的嵌入式项目实践活动,与其他爱好者一起学习和交流。 5. 学习嵌入式
    发表于 12-12 10:51

    嵌入式系统开发与硬件的关系 嵌入式系统开发常见问题解决

    嵌入式系统开发与硬件的关系 嵌入式系统是专为特定应用设计的计算机系统,它们通常嵌入在所控制的设备
    的头像 发表于 12-09 09:38 1466次阅读