首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对Cortex-M体系结构中的一些算法进行测试

如何对Cortex-M体系结构中的一些算法进行测试
EN

Stack Overflow用户
提问于 2020-12-26 14:15:44
回答 1查看 231关注 0票数 1

对于我的当前项目,我必须研究Cortex-M4上不同算法的运行时行为(用过的周期)。该算法在C语言中是纯计算的,没有IO和中断。有什么提示和想法怎么做吗?

我目前的想法是创建一个最小的应用程序,并使用renode (https://renode.io/)进行循环计数:

创建一个带有固定签名的文件test.c,该函数运行我的algorithm

  • Compile,并将其链接到一个最小的application

  • Load、应用程序和所需的输入数据到renode

  • 中,运行application

  • Extract,来自renode

  • 的输出数据使用renode中的分析数据来对算法

进行评级

现在问题是:

对于类似的purposes?

  • How,是否有人使用renode或QEMU来创建真正的最小应用程序?(crt0,ld标志)

  • 对我的问题还有其他想法吗?

  • 如何在renode中配置最小的系统?哪些组件是成功运行C程序的最小子集?

问候简

EN

回答 1

Stack Overflow用户

发布于 2021-02-09 15:51:29

FYI:我在Antmicro工作,是Renode的作者之一。

执行这种分析的方法确实有很多。请注意,Renode并不是周期精确的,但您可以跟踪虚拟时间的进展.

其中一种可能的方法是使用Renode的度量分析器。您可以在这里阅读文档:https://renode.readthedocs.io/en/latest/basic/metrics.html

它允许您捕获数据并用Python进行分析,或者立即生成一些图形:

代码语言:javascript
复制
# in Renode
(monitor) machine EnableProfiler "path_to_dump_file"

# in Bash
python3 tools/metrics_analyzer/metrics_visualizer/metrics-visualizer.py path_to_dump_file

您还可以分析在UART上出现特定字符串之前所传递的虚拟时间。这可以通过机器人测试来完成。在这里可以找到时间戳提取的一个例子:https://github.com/renode/renode/blob/master/tests/platforms/QuarkC1000/QuarkC1000.robot#L44

代码语言:javascript
复制
${r}        Wait For Line On Uart     My String
            Do Something With Time    ${r.timestamp}

另一种选择是对代码进行测试,并在需要时从内存中转储二进制数据。

您还可以在特定的Program值上添加要调用的钩子--然后可以将这样的时间戳转储到日志。

可能还有许多其他选项可以继续前进,但这将取决于您的特定用例。

Renode中的最小系统:取决于您的软件,它需要

如果您想要输出的话,如果是Cortex-M

  • memory

  • uart,则
  • 是一个核心的
  • 无源控制器。

更新:

我们添加了一些跟踪特性,允许您使用https://www.speedscope.app/https://ui.perfetto.dev/显示执行跟踪,这在分析方面非常有用。

使其用于速度范围的快速方法是:

代码语言:javascript
复制
cpu EnableProfilerCollapsedStack @path/to/trace true

有关更多细节,请参见docs:https://renode.readthedocs.io/en/latest/advanced/execution-tracing.html中的本章。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65457255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档