NASA JPL Embedded Gcov 使用指南

NASA JPL Embedded Gcov 使用指南

embedded-gcovGCC/gcov code coverage data extraction from the actual embedded system, without requiring a file system, or an operating system, or standard C libraries.项目地址:https://gitcode.com/gh_mirrors/em/embedded-gcov


项目介绍

NASA JPL(美国国家航空航天局喷气推进实验室)的 embedded-gcov 是一个专为嵌入式系统设计的GCC/gcov代码覆盖率数据提取工具,它的一大特色是能够在不依赖文件系统、操作系统或标准C库的情况下从实际的嵌入式系统中提取覆盖率数据。这一特性使得开发者能够即使在资源受限的环境下也能进行有效的代码测试评估。项目提供了详细的PDF指南,以及如何在不支持传统文件操作的环境中实现代码覆盖度测量的方法。

项目快速启动

要开始使用 embedded-gcov,你需要按照以下步骤操作:

环境准备

首先,确保你的开发环境配置了正确的交叉编译工具链,比如针对AARCH64架构的GCC编译器。

# 更换编译工具链到指定路径
export PATH=/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-elf/bin:$PATH

修改Makefile

接下来,在你的项目Makefile中加入必要的编译标志和源文件以启用gcov功能:

# 在Makefile中增加编译选项
CFLAGS += -O0 -g -fprofile-arcs -ftest-coverage

# 添加embedded-gcov的源文件
C_SRCS += $(SDK_ROOT)/fpsoc/utest/emb_gcov/code/gcov_gcc.c \
          $(SDK_ROOT)/fpsoc/utest/emb_gcov/code/gcov_printf.c \
          $(SDK_ROOT)/fpsoc/utest/emb_gcov/code/gcov_public.c

# 更新头文件包含目录
INC_DIRS += $(SDK_ROOT)/fpsoc/utest/emb_gcov/code

# 在特定代码块中包括必要的头文件
#include "gcov_public.h"
#include "gcov_gcc.h"

# 可能在适当的位置调用初始化和清理函数
__gcov_call_constructors();   // 在系统初始化之后调用
...
__gcov_exit();               // 需要在程序结束前调用来导出数据

构建并收集覆盖率数据

构建你的项目时使用上述修改后的Makefile。运行你的嵌入式软件后,你需要一种机制来从目标系统中检索覆盖率数据,这通常涉及到特殊的数据导出流程,具体方法可根据项目文档中的指示进行调整。

应用案例和最佳实践

在嵌入式系统中集成 embedded-gcov 的最佳实践包括:

  • 最小化资源占用:优化编译设置以减少覆盖数据对有限内存的影响。
  • 数据定期导出:利用系统的非活动时间将数据导出到可访问的地方,如通过网络或外部存储。
  • 分析循环:建立自动化流程,定期收集和分析覆盖率数据,反馈到开发过程中。

典型生态项目

虽然直接的“典型生态项目”提及不多,但embedded-gcov适用于任何采用GCC作为编译器的嵌入式系统项目,尤其是那些对于实时性、资源限制有严格要求的场景。在航空航天、汽车电子、工业控制等领域,它能够支持高效的软件质量保证和验证过程。


以上就是关于NASA JPL Embedded Gcov的基本使用指南。深入学习和高级应用建议参考项目提供的PDF文档和GitHub仓库内的示例代码。

embedded-gcovGCC/gcov code coverage data extraction from the actual embedded system, without requiring a file system, or an operating system, or standard C libraries.项目地址:https://gitcode.com/gh_mirrors/em/embedded-gcov

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邬祺芯Juliet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值