基于SystemView v3.12分析FreeRTOS v10.4.1

浏览:1436来源:本站时间:2020-10-20

作者:Erich Styper   翻译:BMR技术部


亚马逊在今年9月份连续发布了FreeRTOS的新版本v10.4.0和v10.4.1,而SEGGER是在4月发布了SystemView v3.12。随着FreeRTOS的升级,我们需要做些工作才能让最新的FreeRTOS v10.4.x与SystemView v3.12一起工作。不用担心,笔者已经完成需要的补丁和更改工作。


FreeRTOS

FreeRTOS代码现在在GitHub上托管。v10.4.0在2020-9-9发布,目前在GitHub上可以获取最新的v10.4.1版本。


v10.4.x最大的变化是扩展了直接任务通知(Direct Task Notification)功能,支持一个通知值数组,从FreeRTOS v10.4.0开始,每个任务都可以有一系列通知。直接任务通知是一个很好的功能,占用RAM少且执行速度更快,笔者在大量的应用中都使用了该功能。 但在FreeRTOS v10.4.0之前的版本中,任务通知是一个32位变量(32位处理器中,如ARM Cortex),如果你需要多个通知,必须使用其它任务交互方式;在FreeRTOS v10.4.x版本中,直接任务通知可以指定通知项(32位)的数量。


笔者已经成功地移植了FreeRTOS的最新版本,并更新了所有的例程。 例如,在使能所有附加功能的MCUXpresso(基于Eclipse)IDE中,实现了FreeRTOS v10.4.1与MCUXpresso SDK集成并运行:

在Processor Expert中查看使用的FreeRTOS信息:



Systemview

Systemview使用SEGGER RTT技术,可以帮助用户深入了解基于RTOS应用程序的运行时行为。Systemview的最新版本为v3.12。


SystemView v3.12捕获的 FreeRTOS v10.4.1应用信息如下图:


为了使用SystemView捕获FreeRTOS应用信息,FreeRTOS内核需要做些调整。要将目标跟踪数据直接传输到主机,还需应用中驻留并配置SEGGER RTT代码。由于FreeRTOS API的改变,必须扩展SEGGER的补丁包,并将其应用于新版本的内核代码。 此外,所有最新的FreeRTOS应用例程都采用了GNU链路时间优化(防止链接器错误地删除对象)配置。


小结
SystemView和FreeRTOS都可以作为Processor Expert组件,与MCUXpressoIDE一起使用:



所有的移植文件(包括FreeRTOS、RTT、SystemView)都可以通过GitHub获取(链接参见文末),可以与最新版本的IDE、SDK、GCC(包括最高等级优化及LTO链接时间优化)一起工作。

笔者已经使用MCUXpressoIDE和SDK,完成最新的FreeRTOS和SystemView集成工作,可以使用SystemView检查最新版本FreeRTOS应用程序的性能。 FreeRTOS中的扩展任务通知功能是一个很好的扩展,笔者计划在下一个应用程序中使用它。


你可以从下面的链接获取相应的源文件:
FreeRTOS和Segger文件:https://github.com/ErichStyger/McuOnEclipseLibrary
Processor Expert端口和组件https://github.com/ErichStyger/McuOnEclipse_PEx
FreeRTOS内核:https://github.com/FreeRTOS/FreeRTOS-Kernel
Segger SystemView下载地址:https://www.segger.com/downloads/systemview/
跟踪FreeRTOS:https://mcuoneclipse.com/2017/12/09/new-freertos-v10-0-0-amazon-segger-systemview-and-percepio-tracealyzer/
FreeRTOS示例及更多信息:https://github.com/ErichStyger/mcuoneclipse


京ICP备:京ICP备05011254号-1 版权归北京麦克泰软件技术有限公司所有
北京麦克泰软件技术有限公司