初级会员
- 积分
- 87
- 金钱
- 87
- 注册时间
- 2016-11-12
- 在线时间
- 26 小时
|
偶然看到网上有人使用systemview来分析嵌入式系统。
上网搜了一下systemview,发现这个软件功能真是强大,可以让你浏览从记录开始到记录结束的各个事件,把系统运行的过程用图形化的方式展示在眼前,可以很方便的查找问题,也可以用来验证系统任务和中断切换过程是否符合自己的设想。
SystemView 是一个用于虚拟分析嵌入式系统的工具包。SystemView 可以完整的深入观察一个应用程序的运行时行为,这远远超出一个调试器所能提供的。这在开发和处理具有多个线程和事件的复杂系统时尤其有效。SystemView 由两个部分组成:
SystemView 的PC端程序,用于收集目标板上传的信息。
SystemView 嵌入式端程序可以分析嵌入式系统的行为。它记录嵌入式系统产生的监视数据,并在不同的窗口中显示这些信息。这些记录可以保存到文件中,用于以后的分析或者编写文档。
我参考了下面这位的教程,教程使用的是ucosiii ,但我移植的是ucosii,版本需要是2.92.13以上的。当然低版本的也可以通过自己添加"os_trace_events.h"的宏实现支持,不过很麻烦,有兴趣的可以试试。
http://www.stmcu.org/module/forum/thread-616185-1-3.html
教程只讲了如何移植,但是没讲如何添加一些功能。
用一个信号量的例子来说明一下,有一个头文件"os_trace_events.h"包含了各种宏,将对应的宏写到我们代码发生的事件前就可以在,任务中观察到该事件。
例如:
OS_TRACE_SEM_CREATE
OS_TRACE_SEM_PEND_ENTER
OS_TRACE_SEM_POST_ENTER
把这几个宏分别添加到相应时间前,就可以在systemviewPC软件中看到相应任务中发生的该事件。
发现的一个问题,因为systemview是在系统切换中发送事件给上位机,start_task任务没有被记录,显示运行0次。
还有一个地方需要注意,targetDevice必须是具体型号,选cortex-m4不能记录。
最后把我移植的工程发一下。
链接:https://pan.baidu.com/s/1X7LcpBZ0eIqv0D22UqN78w 密码:jm7q
|
|