搜索
查看: 945|回复: 0

[原创] 基于SystemView v3.12分析FreeRTOS v10.4.1

[复制链接]

该用户从未签到

39

主题

173

帖子

2

蝴蝶豆

金牌会员

最后登录
2021-3-29
发表于 2020-11-13 10:09:29 | 显示全部楼层 |阅读模式
作者:Erich Styper,翻译:BMR技术部

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

segger-systemview-3.12-with-freertos-10.4.2.png

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位变量,如果你需要多个通知,必须使用其它任务交互方式;在FreeRTOS v10.4.x版本中,直接任务通知可以指定通知项(32位)的数量。

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

图片1.png

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

图片2.png

Systemview

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

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

图片3.png

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


小结

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

图片4.png

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

图片5.png

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


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-26 06:25 , Processed in 0.171252 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表