2012-11-19 70 views
1

我想对嵌入式目标上的C++源代码执行代码覆盖。 基本思路是,使用gcc打开-frofile-arcs -ftest-coverage生成一个精灵。 将其下载到ARM设备上,然后收集数据以使用gcov分析代码覆盖率。使用arm-none-eabi-gcc从cpp生成elf文件

如何使用arm-none-eabi-gcc命令生成一个elf文件。 我已经设置了GNU ARM工具链并设置了env变量。 我可以使用arm-none-eabi-g ++ -c -mthumb -mcpu = cortex-m3 -fprofile-arcs -ftest-coverage filename.cpp -o filename.elf?

在此先感谢!

回答

0

我不确定你想要做的事实际上是可能的。我认为GCC中的分析选项需要一些操作系统支持。您可能更愿意查看Keil/ARM提供的分析工具。 Streamline profiler的社区版本可能对你有用,请检查ARM网站。

+0

是很好的解释我要寻找一个软件工具,以获取代码覆盖率。Profiler使用跟踪来获取数据,然后做代码覆盖。我想要一些与此相关的东西 - > http://sysrun.haifa.il.ibm.com/hrl/greps2007/papers/gcov-on-an-embedded-system.pdf。 – aditya3524

+1

本文的关键部分是“编译一个没有文件系统且没有C标准库的PPC目标”。您需要编写自己的版本来在运行时记录覆盖率数据。 –

+0

是的,但对我来说仍然是第2步。首先,我需要生成一个gcov打开的精灵 - > http://balau82.wordpress.com/2010/02/14/simplest-bare-metal-program-for-arm/ ---我在哪里可以得到startup.s和cortex-m3的链接器。我没有完全理解链接器部分。有什么建议么? – aditya3524

0

不,您需要做更多。你需要链接到gcov库。这可以用-lgov & -fprofile-arcs链接器标志希望你的链接脚本具有.got和.plt部分。

上面只会生成.gcno文件。 .gcda文件在硬件内部运行时生成。等待应用程序退出或添加您自己的包装来创建.gcda文件。

最后,您需要找到一种方法从您的硬件中提取该.gcda文件。

所有abvoe在
https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/