- 本工程使用
RTT用于日志输出以及SystemView事件跟踪; - 本工程通过
CubeMX生成的FreeRTOS相关代码版本为FreeRTOS V10.3.1; - 本工程使用了
dbger和SystemView;
- 通过
git submodule add https://github.com/ShadowThree/SystemView.git ThirdUtils/SystemView添加本项目到工程指定目录; - 添加如下头文件路径到工程:
../ThirdUtils/SystemView/FreeRTOS_V10.3.1_portable_RVDS_ARM_CM4F_SystemView_FreeRTOS10_Patch // 必须添加到 FreeRTOS 相关头文件之前
../ThirdUtils/SystemView/Config
../ThirdUtils/SystemView/Sample/FreeRTOSV10 // 因为 FreeRTOS 源码版本为 V10.3.0,所以选择这个
../ThirdUtils/SystemView/SEGGER- 添加如下源文件到工程:
ThirdUtils\SystemView\FreeRTOS_V10.3.1_portable_RVDS_ARM_CM4F_SystemView_FreeRTOS10_Patch\port.c
ThirdUtils\SystemView\FreeRTOS_V10.3.1_portable_RVDS_ARM_CM4F_SystemView_FreeRTOS10_Patch\tasks.c
ThirdUtils\SystemView\Sample\FreeRTOSV10\SEGGER_SYSVIEW_FreeRTOS.c
ThirdUtils\SystemView\Sample\FreeRTOSV10\Config\Cortex-M\SEGGER_SYSVIEW_Config_FreeRTOS.c
ThirdUtils\SystemView\SEGGER\SEGGER_RTT.c
ThirdUtils\SystemView\SEGGER\SEGGER_SYSVIEW.c- 在
MDK keil选中如下文件 --> 右击 -->Options for File,去掉Include in Target Build前面的勾:
Middlewares/FreeRTOS/tasks.c // 被 SystemView 中的 Patch 文件修改了
Middlewares/FreeRTOS/port.c // 被 SystemView 中的 Patch 文件修改了
LOG/SEGGER_RTT.c // 和 SystemView 共用,在 SystemView 已经添加了- 在
FreeRTOSConfig.h中引入如下头文件:
#include "SEGGER_SYSVIEW_FreeRTOS.h"- 在
MDK keil的魔术棒 -->C/C++中勾选GNU extensions; - 在
main.c中调用SEGGER_SYSVIEW_Conf();配置SystemView; - 编译下载,打开
SystemView软件启动接收即可;
- 只能在
ARM Compiler V5下移植; - 在
SEGGER_SYSVIEW_Conf.h中添加如下定义:
#define SEGGER_SYSVIEW_CORE SEGGER_SYSVIEW_CORE_CM3- 在
FreeRTOS开始调度之前,执行如下代码:
// 在 RTOS 环境中,只需要 Conf 即可
SEGGER_SYSVIEW_Conf();
// 以下两个只有在非 RTOS 环境下才需要
// SEGGER_SYSVIEW_Start();
// SEGGER_SYSVIEW_OnIdle();