打印

ucos信号量创建失败

[复制链接]
2957|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
南宫云明|  楼主 | 2012-11-26 09:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在任务TASK1中创建了一个信号量Uart0Sem,然后又创建了一个信号量Uart0Sendflag,第一个信号量创建成功,第二个就怎么也不行。

我以为在同一个任务中不能同时创建两个信号量(就像任务,一个任务中能创建一个任务,但是创建两个任务就会出现问题),因此放在TASK2中创建了一个信号量,结果还是失败。这是什么情况?

导致信号量创建失败的原因有哪些呀?本人刚接触ucos,有哪位大神指点指点呀?

相关帖子

沙发
zf_015820| | 2012-11-26 10:22 | 只看该作者
不会吧?这个UCOS与RTX51差别这么大?RTX51中一个任务都可以创建好多个任务呀,也肯定可以创建多个信号量呀;建议:多看看UCOS的书,最好能看看底层代码,可能会有帮助

使用特权

评论回复
板凳
john_lee| | 2012-11-26 13:05 | 只看该作者
任何一种RTOS,包括 ucos,都必须可以在一个任务中创建多个相同类型的对象,包括楼主说的“信号量”,“任务”等等。如果不行,这种所谓的 RTOS 就没有存在的理由。

所以,一定是楼主的程序或者 ucos 的移植等等什么地方搞错了,好好检查一下代码逻辑吧。

使用特权

评论回复
地板
南宫云明|  楼主 | 2012-11-26 14:07 | 只看该作者
3# john_lee


我感觉也是这方面的问题,我试了一下,虽然能跑两个任务,但是跑不了三个任务。是移植没移植好吗?

还是在哪里被使能标志或其他标志限制住了?

使用特权

评论回复
5
南宫云明|  楼主 | 2012-11-26 16:43 | 只看该作者
我现在基本发现时什么问题了

就是跑两个任务怎么跑都没问题,跑三个任务就死了

#define OS_MAX_EVENTS            63    /* Max. number of event control blocks in your application ...  */
                                       /* ... MUST be > 0                                              */
#define OS_MAX_FLAGS             5     /* Max. number of Event Flag Groups    in your application ...  */
                                       /* ... MUST be > 0 修改这个数值为63没用                                            */
#define OS_MAX_MEM_PART          5     /* Max. number of memory partitions ...                         */
                                       /* ... MUST be > 0 修改这个数值为63没用                                             */
#define OS_MAX_QS                2     /* Max. number of queue control blocks in your application ...  */
                                       /* ... MUST be > 0 修改这个数值为63没用                                             */
#define OS_MAX_TASKS             63    /* Max. number of tasks in your application ...                 */
                                       /* ... MUST be >= 2                                             */

#define OS_LOWEST_PRIO           63    /* Defines the lowest priority that can be assigned ...         */
                                       /* ... MUST NEVER be higher than 63!                            */

上述几个定义应该是跟任务数有关的吧,我都改成这样了还有问题,然后我把他们全都改成63还是有问题。

ucos还有哪些地方需要修改的吗,任务数被限制住了。。。。   - -!!!

使用特权

评论回复
6
john_lee| | 2012-11-26 17:51 | 只看该作者
只能推测是移植的问题,楼主不要急着自己写程序,可以先找一个别人能跑通的例子,来实际跑跑,比较一下别人的移植和程序。

使用特权

评论回复
7
南宫云明|  楼主 | 2012-11-27 13:01 | 只看该作者
6# john_lee

丢人了,我知道什么原因了,任务堆栈没初始化。。。。:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

272

帖子

0

粉丝