嵌入式中如何高效管理MCU内存?

💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

嵌入式软件测试在智能物联网时代受关注。嵌入式软件具有实时性要求、有限的内存空间、较少的I/O通道等特点。测试工具有ETest Studio、Klocwork、Hitex TESSY、Rapita Verification Suite、Squish、Trinity DT10和VectorCAST。

🔎

延伸解读

嵌入式测试与商用软件测试的关键差异

文章指出,嵌入式软件具有实时性、内存有限、I/O通道少、低功耗高可靠等特点,且开发与运行环境分离(宿主机与目标机)。因此,单元测试虽可在宿主机进行,但集成和系统测试需在目标机或仿真环境完成,并需处理插桩和数据回传。测试还必须关注毫秒级实时响应和负载性能,这与一般商用软件测试有明显区别。

工具选型需匹配测试阶段与认证需求

文中列举的工具各有侧重:ETest Studio适合黑盒配置项和系统测试;Klocwork专注静态代码质量与安全漏洞;TESSY和VectorCAST覆盖单元/集成测试及覆盖率分析;RVS强调MC/DC和DO-178C/ISO 26262认证;Squish针对GUI测试;DT10支持灰盒动态跟踪与长时间测试。选型时应根据测试阶段、语言支持和行业认证要求进行匹配。

覆盖率与实时性是嵌入式测试的核心关注点

文章多次提到MC/DC覆盖率要求,以及单元测试对代码质量的高标准。同时,由于系统实时性要求,测试需验证毫秒级响应,并进行负载测试。插桩处理虽有助于目标机数据回传分析,但也需认真处理宿主机与目标机之间的数据传输。这些要求意味着测试方案需兼顾覆盖率达标与实时性能验证。

❓

Q&A

嵌入式软件测试和普通商用软件测试主要有哪些区别?

嵌入式软件具有实时性要求、有限的内存空间、较少的I/O通道,且低功耗、高可靠性、成本敏感、与硬件紧密相关。因此测试时需重点考虑实时响应性能(毫秒级)和负载测试,并且集成测试、系统测试通常在目标机环境下执行,与一般商用软件差异较大。

嵌入式软件的单元测试一般在什么环境下进行?有什么要求?

单元测试通常在宿主机环境下进行,只有在少数情况下(如目标机编译器可能存在缺陷)才在目标机环境下进行。单元测试对代码质量要求较高,通常要求达到MC/DC覆盖率。

嵌入式软件测试中为什么要进行插桩处理?

在对目标机进行测试时,通常需要对在宿主机上编译通过的代码进行插桩处理,以便在目标机上执行程序时,将插桩时预测好的数据返回到宿主机上进行分析。因此宿主机和目标机之间的数据传输也需要认真处理。

Klocwork 是什么工具?主要能检测哪些问题?

Klocwork 是一款支持百万行甚至千万行以上 C/C++/Java/JS/C# 代码质量的静态检测工具,利用深度数据流分析技术跨类、跨文件查找运行时缺陷、错误和安全漏洞,支持自动化扫描1000多种代码缺陷(如空指针、资源及内存泄漏、未捕获的异常、除零等),并支持 CWE、OWASP、CERT 等安全标准。

Hitex TESSY 适用于哪些测试?支持哪些覆盖率分析?

Hitex TESSY 是专门针对基于 C/C++ 开发的嵌入式软件进行单元/集成测试的工具,可满足 ISO26262、IEC61508、EN 50128/50129 等标准对测试的需求,工具自身通过 TUV 认证。它提供分支覆盖、MC/DC、多条件覆盖 MCC 等多种覆盖度分析。

VectorCAST 支持哪些行业认证标准?

VectorCAST 是适用于嵌入式软件高可靠性和高安全性软件的自动化动态测试工具链,支持 C/C++ 和 Ada 语言,符合 DO-178B/C、ISO 26262、ASPICE、IEC 61508、EN 50128、IEC 62304、IEC 60880 等多种行业认证标准。

🏷️

标签

➡️

继续阅读