ZYNQ ucos KAL_LockCreate创建互斥信号量失败

2015-10-26 11:25 阅读 310 次 评论 0 条

ucos的hello world工程下,添加自定义互斥信号量失败,返回的错误信息为RTOS_ERR_ALLOC表示在创建互斥信号量时,分配空间失败。

在创建自定义互斥信号量之前已经创建过互斥信号量(在UARTPS_Init函数中调用),都能成功。想到修改程序中的lscript.ld文件中的,Stack Size和Heap Size,增加了两倍,然而重新编译还是创建不成功。

修改程序的stack与heap size

又想到互斥信号量在starttask中创建,是否会占用starttask的空间,所以尝试在ucos bsp中修改UCOS_START_TASK_STACK_SIZE宏定义的空间,默认为784,改为4096。重新编译仍然创建失败。

修改start task任务的stack size

这是想起在UCOSStartup函数中,调用了Mem_Init();函数,对存储空间进行初始化,转到Mem_Init()函数的源代码,启动根据LIB_MEM_CFG_HEAP_SIZE宏定义空间大小进行创建heap空间,而默认的大小为512。LIB_MEM_CFG_HEAP_SIZE宏定义在lib_cfg.h文件中。

没有直接修改此LIB_MEM_CFG_HEAP_SIZE,而通过ucos BSP设置中找到LIB中的定义修改BSP,如下图所示,修改为1024。不直接修改的原因是因为编译BSP时,会重新生成lib_cfg.h文件,容易造成修改的内容被重新生成的bsp文件覆盖而修改不成功。

修改uclibde  mem cfg heap size

重新编译后,互斥信号量创建成功,且相关功能运行正常。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:ZYNQ ucos KAL_LockCreate创建互斥信号量失败 | 起点博客
分类:应用笔记 标签:, , , ,

发表评论


表情