zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置
来源:互联网 发布:清华大学网络 编辑:程序博客网 时间:2024/06/11 02:19
本文介绍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官网资料还是挺多的,不像Lattice实在太少,也可能是我没找到方法),找到的确有自定义BSP的方法(AR# 63964),但是例子中是自定义stand alone BSP的方法,以类似的方法修改,但是可能由于是FreeRTOS BSP的修改与stand alone有所不同,最后选择修改后的BSP,每次生成BSP会在执行freertos821_xilinx.tcl出错,没有解决,待日后处理,所以本方法还未成功。
解决办法
最后,真是,踏破铁鞋无觅,得来全不费功夫;最后在发现是我多虑了,SDK早已考虑到这些,直接在BSP上右键->Board Support Package Settings,可以看到下图
直接在这里有设置,直接将use_idle_hook设置为true即可(以下还有关于FreeRTOS更多的设置,如STDIO、心跳钩子函数等)。
真是一个简单的问题,甚至可以说是不存在的问题,而网上搜索真没找到类似情况的说明,费了不少时间,这里特此记录,不成功的处理也可作为以后其它问题处理的备选方法。
其它
- 对于使用了队列的应用要添加
#include "queue.h"
;使用了互斥量的要添加#include "semphr.h"
- 要使用xil_printf则要添加
#include "xil\_printf.h"
;用了vivado中的宏定义要添加#include "xparameters.h"
- zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置
- STM32使用freertos时在中断中调用系统函数的注意点
- stm32f 使用freertos时在中断中调用系统函数的注意点
- zynq FreeRTOS
- 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
- 如果要设置系统级(全局)钩子, 钩子函数必须封装在 DLL 中
- 钩子函数的使用
- 在使用SDK进行编译时,在文档类中设置背景颜色的元数据格式
- 在C#中使用钩子
- 在C#中使用钩子
- 对于数据包的截取,使用linux中的netfilter钩子函数
- 对于数据包的截取,使用linux中的netfilter钩子函数
- ZYNQ的Linux开发--使用SDK生成设备树
- FreeRTOS任务API函数的使用
- FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系
- 使用钩子函数的注意事项
- 在C#中使用针对当前程序的钩子
- freertos函数vTaskList使用
- visualstudiocode 调试electron
- 多线程
- spring Thymeleaf 中文乱码
- intellij 编译 springmvc+hibernate+spring+maven 找不到hbm.xml映射文件
- intellij创建maven web项目
- zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置
- python2.7 Unable to find vcvarsall.bat
- Linux服务-vsftp
- 数据结构实验之链表三:链表的逆置
- POJ 2377 (最大生成树 Kruskal)
- android studio下ndk开发
- poj 2251 Dungeon Master (BFS)
- 关于C语言入门的小知识点
- HDU 5755 Gambler Bo 高斯消元解同余方程组