码迷,mamicode.com
首页 > 其他好文 > 详细

SystemView+FreeRTOS的使用

时间:2021-05-23 23:58:51      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tail   source   子函数   strong   情况   函数   复制   get   前言   

前言

RTOS的分析是比较困难的,特别是任务多且涉及很多任务通信的时候,程序的稳定性就是一个比较麻烦的问题了,不过好在有很多工具可以用来分析RTOS的运行状况,常见的有SystemView、Tracealyzer,TIRTOS的分析工具ROV(运行时对象查看器)则集成在CCS中。下面以Segger的SystemView为例,如何在FreeRTOS上移植和使用SystemView。

准备工作

移植过程

这里暂不描述从零开始打补丁的过程,而是直接使用官方提供的打好补丁的FreeRTOS源码和RTT源码。

  • 技术图片
  • 只要把example project这两个文件夹移植到自己的板子工程上就完成一半了。把..\FreeRTOS_STM32F4_TRB_SystemView\lib\FreeRTOS\FreeRTOS-Kernel\Source\portable中不必要的文件删除,只保留对应平台的port.cportmacro.h,以及MemMang这个文件夹中选择的堆管理文件,这里使用heap4.c。注意不要忘了要把 FreeRTOSConfig.h 也移植到工程中
  • 这些步骤完成后添加相应的文件和文件路径到工程中
    技术图片
    到这一步工作已经完成80%了
  • 添加相应的钩子函数,直接复制Example Project中main.c中实现的函数
    vApplicationMallocFailedHook
    vApplicationStackOverflowHook
    vApplicationIdleHook
    vMainConfigureTimerForRunTimeStats
    ulMainGetRunTimeCounterValue
    vApplicationTickHook
    vApplicationGetIdleTaskMemory
    vApplicationGetTimerTaskMemory
    把这几个函数也复制到main.c中就基本完成了
  • 在进入任务调度之前需要对RTT进行初始化,调用SEGGER_SYSVIEW_Conf()
  • 编写一个简单的任务测试
void Led1Task()
{
    while(1)
    {
        BspLedToggle(LED1);
        vTaskDelay(100);
    }
}
  • 编译后通过jink连接下载程序到板子上面,打开安装好的SystemView,点击Start Record 开始记录任务的运行情况。
    技术图片

总结

systemview使用后面再说
参考文档
https://wiki.segger.com/FreeRTOS_with_SystemView
https://blog.csdn.net/qq_29486527/article/details/88010893
https://dalegi.com/2020/01/15/setup-guide-for-segger-j-link-and-systemview-with-stm32-nucleo-boards/

SystemView+FreeRTOS的使用

标签:tail   source   子函数   strong   情况   函数   复制   get   前言   

原文地址:https://www.cnblogs.com/neriq/p/14728938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!