设为首页 加入收藏

TOP

在Amazon FreeRTOS V10中使用运行时统计信息(二)
2019-08-29 23:53:01 】 浏览:96
Tags:Amazon FreeRTOS V10 使用 行时 统计 信息
4,4)   0x20000730 0x20000510   552 B 0x200006BC (  120 B)   384 B 0x00000C6E (  9%)

6   no (0) 0x20001C68 Main         Blocked  (1,1)   0x20001C58 0x20001A08   600 B 0x20001BDC (  128 B)   356 B 0x00000000 ( <1%)

3   no (0) 0x20001378 Radio        Blocked  (3,3)   0x20001368 0x20000F88  1000 B 0x200012F4 (  120 B)   680 B 0x00000001 ( <1%)

4   no (0) 0x20001658 Sumo         Blocked  (2,2)   0x20001648 0x20001458   504 B 0x200015C4 (  136 B)   360 B 0x00000000 ( <1%)

5   no (0) 0x20001948 Drive        Blocked  (3,3)   0x20001938 0x20001748   504 B 0x200018B4 (  136 B)   264 B 0x00000000 ( <1%)

  绝对数字是运行时间计时器滴答数(TCB中的ulRunTimeCounter)以及此计数器相对于总运行时间的百分比(task.c中的ulTotalRunTime)。

  对于IDLE任务,它显示了这一点:

TCB Static Handle Name State Prio Stack Beg Stack End Size Stack Top Unused Runtime

7 no (0) 0x20001E68 IDLE Ready (0,0) 0x20001E58 0x20001CD0 400 B 0x20001DFC ( 96 B) 312 B 0x00007C35 ( 91%)

  0x7C35是定时器计数器(在本例中使用0.1 ms定时器,因此它意味着IDLE任务运行约3秒(0x7C35 / 10 => 3179 ms)并使用91%的运行时间。

  问题可能是:中断花费的时间是多少?答案是RTOS不知道中断,它只知道任务使用了多少运行时间计时器。或者换句话说:FreeRTOS运行时计数器显示的运行时* includes*中断的时间。

?教程:使用FreeRTOS进行运行时分析

  在下一节中,我将展示如何使用FreeRTOS启用运行时分析。基本步骤是:

  • 创建一个新项目(如果尚未存在)
  • 更新FreeRTOSConfig.h
  • 初始化和配置计时器
  • 添加钩子/回调到应用程序

1、创建项目

  创建一个基于你的目标板的项目:

 

项目创建的目标板

  确保包含FreeRTOS:

 

项目的FreeRTOS选项

2、添加FreeRTOS任务

  接下来添加一个任务,例如:

 1 #include "FreeRTOS.h"
 2 
 3 #include "task.h"
 4 
 5  
 6 
 7 static void MyTask(void *pvParameters) {
 8 
 9   for(;;) {
10 
11     vTaskDelay(pdMS_TO_TICKS(100));
12 
13   }
14 
15 }

  在main()内部,创建一个任务并启动调度程序:

 1 /* create task */
 2 
 3  if (xTaskCreate(MyTask, "MyTask", 500/sizeof(StackType_t), NULL, tskIDLE_PRIORITY+1, NULL) != pdPASS) {
 4 
 5    for(;;){} /* error */
 6 
 7  }
 8 
 9  vTaskStartScheduler(); /* start RTOS */
10 
11  for(;;) {
12 
13      /* should not get here */
14 
15  }

 

添加FreeRTOS任务

构建和调试该项目,只是为了确保一切正常。

 

调试FreeRTOS任务

  要在Debug视图中显示FreeRTOS线程,请参阅https://mcuoneclipse.com/2018/06/29/show-freertos-threads-in-eclipse-debug-view-with-segger-j-link-and-nxp-s32-design-studio/

  但是FreeRTOS任务列表(使用Menu FreeRTOS>任务列表来显示该视图)不显示任何运行时信息:

 

FreeRTOS任务列表,没有运行时信息

  这是我们将在接下来的步骤中添加的内容。

3、跟踪和运行时统计信息

  在FreeRTOSConfig.h中,确保将以下定义设置为1(打开):

1 #define configGENERATE_RUN_TIME_STATS 1 /* 1: generate runtime statistics; 0: no runtime statistics */
2 
3 #define configUSE_TRACE_FACILITY      1 /* 1: include additional structure members and functions to assist with execution visualization and tracing, 0: no runtime stats/trace */

 

启用运行时统计信息和跟踪功能

  该configUSE_TRACE_FACILITY需要使用RTOS有在任务描述当前存储的运行时间计数器的附加数据元素,在configGENERATE_RUN_TIME_STATS自动关上,以创纪录的任务执行时间的功能。

4、配置定时器

  接下来,我们必须设置一个计时器来测量任务执行时间。该计时器的运行速度至少比RTOS Tick计时器快10倍。

  在我们的示例中,滴答率为1 kHz:

1 #define configTICK_RATE_HZ ((TickType_t)1000)

  这意味着我们的运行时间应至少以10 kHz运行。

  要配置这样的计时器,我可以使用MCUXpresso配置外设工具:

 

外围设备工具

  在外设工具中,我们选择了FTM0定时器(我们

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇痞子衡嵌入式:PCM编码与Waveform.. 下一篇OpenWrt-Git依赖报错

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目