打印
[开发工具]

在 STM32Cube IDE 中设置 GCov

[复制链接]
512|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cutfall|  楼主 | 2025-3-11 10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想在 STM32Cube IDE 中设置 GCov,参考的是这篇教程:
https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/
使用的时 STM32F413,编译的时候发现 RAM 溢出了 150K 。
不知道是不是漏掉了一些操作。

使用特权

评论回复
沙发
duo点| | 2025-3-11 12:57 | 只看该作者
全局变量或数组过大

使用特权

评论回复
板凳
laocuo1142| | 2025-3-11 15:46 | 只看该作者
函数调用层级过深可能导致堆栈空间不足,因为每次函数调用都会占用一定的堆栈空间。

使用特权

评论回复
地板
flycamelaaa| | 2025-3-11 16:20 | 只看该作者
可能编译器和链接器设置不当

使用特权

评论回复
5
powerantone| | 2025-3-11 19:09 | 只看该作者
GCov的配置不正确

使用特权

评论回复
6
stormwind123| | 2025-3-11 22:00 | 只看该作者
减少函数内部局部变量的使用,特别是占用内存较大的变量。

使用特权

评论回复
7
probedog| | 2025-3-11 23:00 | 只看该作者
对于需要频繁分配和释放小块内存的应用,可以考虑使用内存池管理。

使用特权

评论回复
8
classroom| | 2025-3-12 13:00 | 只看该作者
优化编译器设置,如选择较低的优化级别、关闭不必要的调试信息等,以减少生成的代码大小和内存占用。

使用特权

评论回复
9
公羊子丹| | 2025-3-23 08:00 | 只看该作者
GCov 需要额外的 RAM 来存储覆盖率数据,STM32F413 只有 320K RAM,可能不够用。

使用特权

评论回复
10
周半梅| | 2025-3-23 08:00 | 只看该作者
你是把 GCov 相关的数据存在哪?如果是内部 RAM,可能需要换成外部存储。

使用特权

评论回复
11
帛灿灿| | 2025-3-23 08:01 | 只看该作者
试试优化编译选项,比如 -Og 或 -Os,减少 RAM 占用,看能不能降低溢出风险。

使用特权

评论回复
12
童雨竹| | 2025-3-23 08:02 | 只看该作者
你用的是哪种 C 库?newlib 有可能占用较多 RAM,试试 newlib-nano 版本。

使用特权

评论回复
13
万图| | 2025-3-23 08:03 | 只看该作者
STM32CubeIDE 里有 GCov 插件支持吗?还是你手动集成的?

使用特权

评论回复
14
Wordsworth| | 2025-3-23 08:04 | 只看该作者
试试调整 -fprofile-arcs -ftest-coverage 选项,可能可以减少数据量。

使用特权

评论回复
15
Bblythe| | 2025-3-23 08:05 | 只看该作者
可以用 SWV 或 ITM 传输覆盖率数据,避免占用 RAM,减少溢出风险。

使用特权

评论回复
16
Pulitzer| | 2025-3-23 08:06 | 只看该作者
你是用的裸机开发,还是带 RTOS?RTOS 可能会进一步占用 RAM。

使用特权

评论回复
17
Uriah| | 2025-3-23 08:07 | 只看该作者
如果只是想分析代码覆盖率,考虑用 QEMU 之类的仿真环境,避免真实硬件的 RAM 限制。

使用特权

评论回复
18
Clyde011| | 2025-3-23 08:08 | 只看该作者
你可以试试只在关键模块上启用 GCov,减少全局覆盖,可能会降低 RAM 占用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

9

帖子

0

粉丝