


深度学习耐用型嵌入式系统边缘计算机通常部署在偏远地区,并且面临极端的环境挑战。因此,要完全保证您的深度学习型工业计算机的性能可靠且达到最佳状态,必须对它们进行加固,以承受可能危害未加固系统的恶劣条件。标准嵌入式系统的坚固性不足以承受极端环境,并且在工业环境中部署时很容易发生故障。因此,您需要确保部署坚固耐用的深度学习嵌入式系统,这些系统是工业级的,并具有丰富的I / O,以支持传统技术和现代技术,同时还要承受极端温度,强烈冲击,持续振动,电压冲击等。 设计安全可靠的嵌入式系统最佳实践 嵌入式系统的软件开发项目面临着各种各样的挑战。 时间限制使开发人员承受着在严格的时间限制内(许多情况下)完成项目要求的压力。此外,对嵌入式软件的可靠性,准确性和性能的期望比对实时计算的期望更高。我们还需要考虑嵌入式软件在其上运行的实际目标硬件的约束。为了解决安全性和安全性,行业通常会强加软件合规性和认证要求。 流程标准提供了流程,验证方法和最佳实践,以充分确保软件的安全性,安全性和质量。这些包括: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)的工具链的一致性。 能够对开发环境进行版本控制并还原它,以服务于已通过特定工具链认证的产品的旧版本。 化提供了以下内容: 开发环境版本控制 集中管理和部署 对安全漏洞立即做出反应 降低入职成本
下一篇边缘深度学习支持因素
文章分类:
新闻动态
|