
作者:Erich Styper,翻译:BMR技术部 % Q0 [& \* {7 r+ m- g亚马逊在今年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位变量,如果你需要多个通知,必须使用其它任务交互方式;在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中的扩展任务通知功能是一个很好的扩展,笔者计划在下一个应用程序中使用它。 |