本文介绍zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置和一些说明
初玩zynq发现,在zynq中可以运行FreeRTOS,果断试了下;测试了几个例子,一切正常,但是在使用空闲钩子函数时导致无法正常执行。
要使用空闲钩子函数必须将FreeRTOSConfig.h文件中的configUSE_IDLE_HOOK定义为1,当然编译前已手动将其定义改为1,但是空闲钩子函数仍然没有运行。
查看源文件没发现错误,无意间再次确认configUSE_IDLE_HOOK是否改为1时,查看FreeRTOSConfig.h文件中configUSE_IDLE_HOOK定义为0了,再次修改,重新编译运行,不行,再看,configUSE_IDLE_HOOK又定义为0了,嗯,应该是编译工程时BSP也重新生成了,而默认configUSE_IDLE_HOOK定义为0,所以configUSE_IDLE_HOOK又回到了0。
找到原因,进入以下处理过程
不成功的处理
直接在源文件(包含main的实现文件)头加上
#define configUSE\_IDLE\_HOOK 1这样当然不行,在编译FreeRTOS时configUSE_IDLE_HOOK任为0,这里定义的configUSE_IDLE_HOOK只有在编译源文件时有用,而源文件中也没使用这个宏,所以这样改是不行的。
当然将
#define configUSE\_IDLE\_HOOK 1放到包含FreeRTOSConfig.h文件的FreeRTOS.h文件包含#include "FreeRTOS.h"之前也是同样道理,同样不行。修改SDK自带BSP中源文件
直接将SDK生成FreeRTOS BSP的源文件修改,这样看似可行。
当找到SDK的BSP目录(E:\Xilinx\SDK\2015.3\data\embeddedsw\ThirdParty\bsp\freerto

在Zynq平台上使用FreeRTOS时,遇到空闲钩子函数无法正常执行的情况。问题出在FreeRTOSConfig.h中的configUSE_IDLE_HOOK配置。通过检查发现,即使手动设置为1,编译后仍会变为0。尝试直接修改源文件、SDK自带BSP或自定义BSP均未成功。最终解决方案是在SDK的BSP设置中启用use_idle_hook选项,使得空闲钩子函数能够正确运行。这是一个常见的配置陷阱,对于使用FreeRTOS的开发者具有参考价值。
最低0.47元/天 解锁文章
5242

被折叠的 条评论
为什么被折叠?



