Arm 关于裸金属系统的基准

Arm 关于裸金属系统的基准,arm,benchmarking,cortex-m,bare-metal,thumb,Arm,Benchmarking,Cortex M,Bare Metal,Thumb,我使用的是LPC43xx系列,它有cortex-m4/m0。这是一个裸机系统。我是裸机编程新手,我想为性能评估制作小型基准程序。这是一个非缓存系统。我该怎么做?或者我应该尝试分析。据我所知,在您的情况下,有三种方法可以测量代码执行时间: 定时器(初始化定时器的频率是您想要的,在代码执行前后读取定时器值) gpio(或类似的东西)在代码执行之前将其设置为1,在代码执行之后将其设置为0, 用示波器测量时间 性能计数器嵌入CPU,在您的情况下,我认为这一个相关: 没有缓存会大大提高结果的质量。谢谢

我使用的是LPC43xx系列,它有cortex-m4/m0。这是一个裸机系统。我是裸机编程新手,我想为性能评估制作小型基准程序。这是一个非缓存系统。我该怎么做?或者我应该尝试分析。

据我所知,在您的情况下,有三种方法可以测量代码执行时间:

  • 定时器(初始化定时器的频率是您想要的,在代码执行前后读取定时器值)

  • gpio(或类似的东西)在代码执行之前将其设置为1,在代码执行之后将其设置为0, 用示波器测量时间

  • 性能计数器嵌入CPU,在您的情况下,我认为这一个相关:


没有缓存会大大提高结果的质量。谢谢大家的回答。我的系统没有缓存:)使用Dhrystone,我不确定代码是如何工作的,只能在一个内核上工作,或者在两个内核上工作。可以实现哪些其他类型的参数:我希望内存带宽、内存延迟、cpu性能等等。所有这些都可以用线程来衡量吗?是否可以实现RTOS并使用Pthreads。由于裸机不支持线程。非常感谢您的支持,我想包括RTO可能会降低系统的性能。是的,这是真的。。对我来说,这就像是对同一芯片中的两个单核进行基准测试!这就是为什么我想知道是否有任何双重工作的方法。当两个内核都在执行任务时,是否可以使用这些方法?@Kael timer和gpio应该适用于这两个内核情况,关于cpu计数器,您应该仔细阅读cpu文档。@PeterJ我使用了所有这些方法,我想您错过了全部要点。它不是用于分析(查找热点),而是用于小型算法的基准测试。就像泡泡排序和快速排序一样。@PeterJ你真的不懂这个嵌入式系统的算法吗?@fghj我已经同意你的看法,我不懂,没有线索。。。。。。。。。。。。。