章节8 支持的操作系统 - Segger SystemView使用手册(译文)

本文博客链接:http://blog.csdn.net/bjr2016,作者:bjr2016,未经允许不得转载。

章节8 支持的操作系统


下面的章节描述了哪些(实时)操作系统已经验证过可以使用SystemView,和如果配置它们。

8.1 embOS

SEGGER embOS(V4.12a或者更高版本)能够为SystemView和其他记录实现(当分析功能使能时)产生跟踪事件。

8.1.1 配置embOS

分析功能是在OS_LIBMODE_SP、OS_LIBMODE_DP和OS_LIBMODE_DT的库配置中使能的(详细信息请参阅embOS用户手册UM01001)。
除了SYSTEMVIEW和RTT核心模块之外,还需要包含以下文件:
对于Cortex-M0、Cortex-M1、Cortex-M3和Cortex-M4,需要包含 SEGGER_SYSVIEW_Config_embOS.c。
该文件还为SystemView提供了额外的功能,并允许修改配置从而与目标系统相匹配,比如定义应用程序名称、目标设备和目标核心频率。它初始化SYSTEMVIEW模块并配置embOS来将跟踪事件发送到SYSTEMVIEW。参阅第56页的SystemView系统信息配置的例子。

在main函数的开始,当目标板被初始化之后,必须调用SEGGER_SYSVIEW_Conf()来启用SystemView。
现在,当应用程序运行时,SystemView可以连接到目标并开始记录事件。当SystemView连接或SEGGER_SYSVIEW_Start()被调用时,记录所有的任务、中断和OS调度器活动,以及embOS API调用。

8.2 uC/OS-III

SystemView可以用于Micrium公司的uC/OS-III,用来记录任务、中断和调度情况。

配置uC/OS-III

除了SYSTEMVIEW和RTT核心模块之外,还必须包括在应用程序项目中的以下文件:

SEGGER_SYSVIEW_Config_uCOSIII.c 提供了SystemView所需的功能,并允许修改配置从而与目标系统相匹配,比如定义应用程序名称、目标设备和目标核心频率。SystemView包中的示例配置文件被配置为与大多数Cortex-M3、Cortex-M4和Cortex-M7目标一起使用。请参阅第56页的SystemView系统信息配置的例子。

SEGGER_SYSVIEW_uCOSIII.c和os_trace_events.h提供uC/OS-III和SystemView之间的接口。它们通常不需要修改。

os_cfg_trace.h是SystemView实现uC/OS跟踪最小配置的需要的文件。如果项目已经包含该文件,请确保内容适合该应用程序。该文件包含两个定义,用于配置要管理的任务的最大数量和在SystemView记录中管理和命名的最大资源数。

#define TRACE_CFG_MAX_TASK 16u
#define TRACE_CFG_MAX_RESOURCES 16u

使能记录
可以在os_cfg.h中配置用于uC/OS-III的记录。
定义 OS_CFG_TRACE_EN 为 1,以使用基本的记录。
当 OS_CFG_TRACE_API_ENTER_EN 定义为1,API 函数调用也会被记录。
当 OS_CFG_TRACE_API_EXIT_EN 定义为1,API函数退出也会被记录。
在应用程序开始时,且系统已经初始化完成后,调用 TRACE_INIT() :

   [...] 
    BSP_Init (); /* Initialize BSP functions       */ 
    CPU_Init (); /* Initialize the uC/CPU services */
#if  (defined (OS_CFG_TRACE_EN) &&  (OS_CFG_TRACE_EN > 0u)) 
    /* Initialize uC/OS-III Trace. Should be called after initializing the  system. */ 
    TRACE_INIT ();
#endif 
   [...] 

8.3 uC/OS-II

SystemView可以用于Micrium公司的uC/OS-II,用来记录任务、中断和调度情况。SystemView支持uC/OS-II v2.92.13版本。
关于如何配置uC/OS-II以使用SystemView,请查看引导文章:< https://doc.micrium.com/display/osiidoc/SEGGER+SystemView>

*8.3.1 配置uC/OS-II

除了SYSTEMVIEW和RTT核心模块之外,还必须包括在应用程序项目中的以下文件:

SEGGER_SYSVIEW_Config_uCOSII.c 提供了SystemView所需的功能,并允许修改配置从而与目标系统相匹配,比如定义应用程序名称、目标设备和目标核心频率。SystemView包中的示例配置文件被配置为与大多数Cortex-M3、Cortex-M4和Cortex-M7目标一起使用。请参阅第56页的SystemView系统信息配置的例子。

SEGGER_SYSVIEW_uCOSII.c和os_trace_events.h提供uC/OS-III和SystemView之间的接口。它们通常不需要修改。

os_cfg_trace.h是SystemView实现uC/OS跟踪最小配置的需要的文件。如果项目已经包含该文件,请确保内容适合该应用程序。该文件包含两个定义,用于配置要管理的任务的最大数量和在SystemView记录中管理和命名的最大资源数。

#define TRACE_CFG_MAX_TASK 16u
#define TRACE_CFG_MAX_RESOURCES 16u

使能记录
可以在os_cfg.h中配置用于uC/OS-III的记录。
定义 OS_CFG_TRACE_EN 为 1,以使用基本的记录。
当 OS_CFG_TRACE_API_ENTER_EN 定义为1,API 函数调用也会被记录。
当 OS_CFG_TRACE_API_EXIT_EN 定义为1,API函数退出也会被记录。
在应用程序开始时,且系统已经初始化完成后,调用 TRACE_INIT() :

   [...] 
    BSP_Init (); /* Initialize BSP functions       */ 
    CPU_Init (); /* Initialize the uC/CPU services */
#if  (defined (OS_CFG_TRACE_EN) &&  (OS_CFG_TRACE_EN > 0u)) 
    /* Initialize uC/OS-III Trace. Should be called after initializing the  system. */ 
    TRACE_INIT ();
#endif 
   [...] 

8.4 Micrium OS 内核

SystemView可以用于Micrium公司的uC/OS-II,用来记录任务、中断和调度情况。

8.4.1 配置Micrium OS内核

除了SYSTEMVIEW和RTT核心模块之外,还必须包括在应用程序项目中的以下文件:

SEGGER_SYSVIEW_Config_MicriumOSKernel.c 提供了SystemView所需的功能,并允许修改配置从而与目标系统相匹配,比如定义应用程序名称、目标设备和目标核心频率。SystemView包中的示例配置文件被配置为与大多数Cortex-M3、Cortex-M4和Cortex-M7目标一起使用。请参阅第56页的SystemView系统信息配置的例子。

SEGGER_SYSVIEW_MicriumOSKernel.c和os_trace_events.h提供uC/OS-III和SystemView之间的接口。它们通常不需要修改。

os_cfg_trace.h是SystemView实现uC/OS跟踪最小配置的需要的文件。如果项目已经包含该文件,请确保内容适合该应用程序。该文件包含两个定义,用于配置要管理的任务的最大数量和在SystemView记录中管理和命名的最大资源数。

#define TRACE_CFG_MAX_TASK 16u
#define TRACE_CFG_MAX_RESOURCES 16u

使能记录
可以在os_cfg.h中配置用于uC/OS-III的记录。
定义 OS_CFG_TRACE_EN 为 1,以使用基本的记录。
当 OS_CFG_TRACE_API_ENTER_EN 定义为1,API 函数调用也会被记录。
当 OS_CFG_TRACE_API_EXIT_EN 定义为1,API函数退出也会被记录。
在应用程序开始时,且系统已经初始化完成后,调用 TRACE_INIT() :

   [...] 
    BSP_Init (); /* Initialize BSP functions       */ 
    CPU_Init (); /* Initialize the uC/CPU services */
#if  (defined (OS_CFG_TRACE_EN) &&  (OS_CFG_TRACE_EN > 0u)) 
    /* Initialize uC/OS-III Trace. Should be called after initializing the  system. */ 
    TRACE_INIT ();
#endif 
   [...] 

8.5 FreeRTOS

FreeRTOS可以为SystemView生成跟踪事件,并且而不需要修改就允许一些基本但有用的分析。
对于更详细的分析,如调度器活动和中断,FreeRTOS源码和使用的接口必须稍微修改。

8.5.1 配置FreeRTOS

除系统视图和RTT核心模块外,
SEGGER_SYSVIEW_Config_FreeRTOS.c需要包含在应用程序中。该文件为SystemView提供了额外的功能,并允许配置与目标系统相匹配,比如定义应用程序名称、目标设备和目标核心频率。请参阅第56页的SystemView系统信息配置的例子。
SEGGER_SYSVIEW_FreeRTOS.h头必须包含在FreeRTOSConfig.h文件的末尾。或者在每一个引用FreeRTOS.h头文件的上方引用这个文件。它定义了跟踪宏来创建SYSTEMVIEW事件。
为了得到最好的结果,FreeRTOSConfig.h中的 INCLUDE_xtaskgetidletaskhandle 和 INCLUDE_pxTaskGetStackStart 应该定义为1。
补丁文件Sample/FreeRTOSV8/Patch/FreeRTOSV8.2.3_Core.patch显示了FreeRTOS 8.2.3源码和GCC / ARM_CM4F端口所需的修改。当使用另一个版本FreeRTOS或其他FreeRTOS的接口时,它可以作为参考。也就是说,如果使用的是另一个接口,而不是使用GCC / ARM_CM4F,则需要相应地添加traceISR_ENTER()、traceISR_EXIT()和traceISR_EXIT_TO_SCHEDULER()调用。
补丁文件Sample/FreeRTOSV9/Patch/FreeRTOSV9_Core.patch是用于FreeRTOS V9版本的补丁。

8.6 其他操作系统

其他的OSes还没有正式的验证。
如果您想要在其他操作系统中使用SystemView,请与SEGGER或OS供应商联系。操作系统工具也可以在接下来的章节中完成。

8.7 无操作系统

SystemView可以用于无操作系统或者其他未验证的操作系统的情况,用来记录中断和用户事件。

8.7.1 配置应用程序

除了SYSTEMVIEW和RTT核心模块之外,
SEGGER_SYSVIEW_Config_NoOS.c需要包含在应用程序中。该文件提供了SystemView所需函数的基本配置,可以修改为适合系统。请参阅第56页的SystemView系统信息配置的例子。
可以在SEGGER_SYSVIEW_Init中传递一个额外的SEGGER_SYSVIEW_OS_API指针,以提供关于程序的系统时间或“任务”的信息。
有关如何在系统中记录中断的描述,请参阅第117页。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移植 SystemView 到 FreeRTOS 上需要进行以下几个步骤: 1. 下载 SystemView 的安装文件并解压缩。 2. 在 FreeRTOS 的配置文件中打开 trace 配置选项(`configUSE_TRACE_FACILITY`),并设置 SystemView 的输出端口(`configUART_PRINTF`)。 3. 在 FreeRTOS 中包含 SystemView 的头文件和源文件,并初始化 SystemView。 4. 在 FreeRTOS 的任务中使用 SystemView 的 API 函数进行事件跟踪。 下面是一个简单的示例代码,展示了如何在 FreeRTOS 中使用 SystemView 进行事件跟踪: ```c #include "FreeRTOS.h" #include "task.h" #include "SEGGER_SYSVIEW.h" void Task1(void *pvParameters) { SEGGER_SYSVIEW_TASKINFO task_info; // Get task information task_info.pTaskName = "Task1"; // Register task with SystemView SEGGER_SYSVIEW_SendTaskInfo(&task_info, 0); while (1) { // Perform task operations vTaskDelay(100); SEGGER_SYSVIEW_SendTaskState(SEGGER_SYSVIEW_TASK_STATE_READY); // ... } } int main(void) { // Initialize SystemView SEGGER_SYSVIEW_Conf(); SEGGER_SYSVIEW_Start(); // Create tasks xTaskCreate(Task1, "Task1", configMINIMAL_STACK_SIZE, NULL, 1, NULL); // Start FreeRTOS scheduler vTaskStartScheduler(); return 0; } ``` 在上面的示例代码中,`Task1` 是一个简单的任务函数,在任务中使用了 SystemView 的 API 函数进行事件跟踪。在 `main` 函数中,首先初始化了 SystemView,并创建了任务。最后启动了 FreeRTOS 调度器。 使用 SystemView 可以帮助我们更好地理解和调试 FreeRTOS 的运行情况,进而提高系统的效率和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值