Zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置

本文介绍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\freertos821_xilinx_v1_0,这里假定vivado安装目录为E:\Xilinx)时,搜索发现根本没有FreeRTOSConfig.h这个文件,所以本方法不可行。
(后来发现FreeRTOSConfig.h是编译时才生成的)

直接自定义BSP

后来在网上找资料,找到官网(个人认为Xilinx官网资料还是挺多的,不像Lat  TI ce实在太少,也可能是我没找到方法),找到的确有自定义BSP的方法(AR# 63964),但是例子中是自定义stand alone BSP的方法,以类似的方法修改,但是可能由于是FreeRTOS BSP的修改与stand alone有所不同,最后选择修改后的BSP,每次生成BSP会在执行freertos821_xilinx.tcl出错,没有解决,待日后处理,所以本方法还未成功。

解决办法

最后,真是,踏破铁鞋无觅,得来全不费功夫;最后在发现是我多虑了,SDK早已考虑到这些,直接在BSP上右键->Board Support Package Set  TI ngs,可以看到下图

 Zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置_设计制作_制造/封装

直接在这里有设置,直接将use_idle_hook设置为true即可(以下还有关于FreeRTOS更多的设置,如STDIO、心跳钩子函数等)。

真是一个简单的问题,甚至可以说是不存在的问题,而网上搜索真没找到类似情况的说明,费了不少时间,这里特此记录,不成功的处理也可作为以后其它问题处理的备选方法。

其它

对于使用了队列的应用要添加#include "queue.h";使用了互斥量的要添加#include "semphr.h"
要使用xil_printf则要添加#include "xil\_printf.h";用了vivado中的宏定义要添加#include "xparameters.h"

91
100
0
11

相关资讯

  1. 1、《热血中超》手游公测预约开启神秘代言人剪影曝光319
  2. 2、纵谈伯乐千里马兼谈文化传承之路3469
  3. 3、暖暖环游世界天空之塔攻略可爱甜美风平民攻略1199
  4. 4、《时空猎人》二周年公会争霸赛谁能问鼎巅峰4002
  5. 5、功夫全明星2月25日全平台上线明星制作人计划再启3475
  6. 6、《召唤师联盟》不删档内测今日狂袭大神惊艳代言694
  7. 7、《克鲁赛德战记》不知火舞登场再度携手KOF4764
  8. 8、大话西游手游全平台公测火爆明星群贺等你归队1925
  9. 9、《风云七剑》你有多久没有玩过真正的武侠了2149
  10. 10、游戏惊现拟真帝都《中国惊奇先生》场景首爆4093
全部评论(0)
我也有话说
0
收藏
点赞
顶部