本帖最后由 watershade 于 2019-4-2 14:20 编辑 Trancealyer和systemView都是调试RTOS的好工具。后者免费版本其实功能够了,但是只支持J-Link.(好消息是官方提供了将普通的ST-Link转变成J-Link的工具。我之前描述过过程。)前者支持更多的调试方法。支持J-Link,ST-Link,UART,USB等。甚至支持文件系统。界面和功能也十分强大。可惜的是任何版本都要一个license.而且售价一万多,对于我们这些挣扎这的无房无产工人阶级,这太贵了。(补充一点ST-Link v2需要搞成J-Link才能烧写。) 官方资料很多,这里有两个有针对性的资料: Tracealyzer on STM32 和Tracealyzer for FreeRTOS 其中后者更具体。此外还可以看这个链接的信息。 OK现在开始具体描述。 1、两种传输模式 尽管吐槽它贵,但是功能很多。如果这玩意一二十块钱,我会买的。因为这款软件考虑周全,支持两种传输模式。 A、Snapshot Mode快照模式 这种模式下trace data保存在目标RAM中。允许你对通过保存RAM中的内容,保存任何点的“快照”。这种模式优化了内存效率。产生的数据通常每秒10~20K。 通常几K的数据就满足对很多近期时间的追踪。可以将其作为黑盒作为整个系统的基础。可方便现场测试和部署。 (注意这种模式其实用处很大,如果你的系统又足够空间的化。这样你的系统就增加了诊断功能) B、Streaming Mode流模式 (这种模式是调试时最常用的模式。速度快了就变成流了。这点其实很好理解。如果你的速度很慢,比如你用串口传递一张张照片,这就不是流模式。如果你直接通过DMA将照片的信息直接写到屏幕,可以视作流模式。) 在流模式下trace data是连续不断的传送到主机上。因此可以传输很长的周期。柳陌实现通常一秒钟需要传输20-200KB的数据。前面说过接口的丰富性。原文这么说: This supports streaming via SEGGER J-Link debug probes, but may also utilize other interfaces in your system, such as USB, TCP/IP, UARTs, or device file systems. 两种模式,都需要库文件配合。可以在安装之后的目录找到。这两种模式都在同一个库文件中。 两种模式篇幅太长,前者本次就不介绍了。等有时间的网友翻译分享一下。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2、流模式详细介绍 两种模式都需要运行在主机的程序配合。前者可以后期读取的方式。后者需要一直保持连接状态。 为了实现流模式,需要从以下步骤开始: I->集成recorder库到你的工程中 Step 1: 在安装目录中找到配套版本的recorder library。目录是\FreeRTOS\TraceRecorder\ 也可以从官网下载库(不够新)。 目前的版本支持FreeRTOS v7.3以来的版本,包括最新的Amazon FreeRTOS. Step 2: 将工程文件整体拷贝到工程中。我喜欢放在Middlewares\Third_Party\下。 和FreeRTOS同处在一个文件夹。下面两图是以keil为例: 其它的工具,或使用不同的端口。适当配置不同目录就可以了。机器就是包含根目录下的源文件和头文件以及要使用传输端口对应的头文件和源文件。这不难理解。 step 3: 配置文件以支持FreeRTOS和对应端口 > 修改TRC_CFG_HARDWARE_PORT and TRC_CFG_FREERTOS_VERSION @trcConfig.h 以保证正确的软硬件版本。 对于M0的内核,默认使用SysTick。因为用不了DWT。而对于M3,M4,M7内核的优先使用DWT,也可使用SysTick。可以在trcConfig.h中通过设置以下选项来正确开启:
或TRC_RECORDER_MODE_STREAMING >而FreeRTOS的版本(TRC_CFG_FREERTOS_VERSION),可以查看task.c等文件开始的描述来确定版本。目前不同的设备最新的HAL库支持 的FreeRTOS不同有9.0.0的也有10.0 以上的。
建议精读。有很多减少RAM使用的例子。 > 在FreeRTOSConfig.h中包含“trcRecorder.h”头文件 。在FreeRTOSConfig.h末尾添加如下代码即可:
> 如果有精力,你甚至可以参考别的接口通讯设计来使用自己的端口通讯。 II->配置流模式 III->调用vTraceEnable IV->设置软件,检测端口硬件,开始recoder 一些其它link: st-link-rtos-trace-streaming tracealyzer-support-stlink-v3 上一张自己测试的图片 |