搜索
bottom↓
回复: 18

KEIL for ARM ucos-ii,软件仿真正常,下载到片子任务调度异常

[复制链接]

出0入0汤圆

发表于 2012-10-7 16:19:33 | 显示全部楼层 |阅读模式

请教各位大神:

KEIL for ARM ucos-ii,软件仿真正常,下载到片子以后任务调度异常。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-10-8 17:20:11 | 显示全部楼层
很正常,你把延时加长点

出0入0汤圆

 楼主| 发表于 2012-10-8 22:11:07 | 显示全部楼层
cumtgao 发表于 2012-10-8 17:20
很正常,你把延时加长点

延时?? 都还没有用到延时呀…

出0入0汤圆

发表于 2012-10-9 08:35:44 | 显示全部楼层
二过 发表于 2012-10-8 22:11
延时?? 都还没有用到延时呀…

就是任务挂起时间加长

出0入0汤圆

 楼主| 发表于 2012-10-9 14:56:01 | 显示全部楼层
cumtgao 发表于 2012-10-9 08:35
就是任务挂起时间加长

多谢~~是这样的:在一个低优先级的任务中创建了一个高优先级的任务,这时候不久会进行任务切换吗,这时候任务切换也不正常,没有用到任务延时(挂起)。

出0入0汤圆

发表于 2012-10-9 15:05:28 | 显示全部楼层
二过 发表于 2012-10-9 14:56
多谢~~是这样的:在一个低优先级的任务中创建了一个高优先级的任务,这时候不久会进行任务切换吗,这时候 ...

如果你在低优先级任务中创建了一个高优先级任务,并且没有挂起低优先级的任务???
你这样做和一开始就创建了该高优先级任务没有什么区别,每一个systick到来 各个任务的timdly都会减一。一旦有高于这个低优先级的任务处于任务就绪状态,那个高优先的任务就会执行。

出0入0汤圆

 楼主| 发表于 2012-10-9 15:14:46 | 显示全部楼层
cumtgao 发表于 2012-10-9 15:05
如果你在低优先级任务中创建了一个高优先级任务,并且没有挂起低优先级的任务???
你这样做和一开始就 ...

对,是这样的,就是为了让高优先级的任务运行(因为在高优先级的任务中会有等待消息队列这样的使自己挂起的操作),在创建任务的中不是有任务调度函数可以进行任务调度和切换吗,但是就是切换不到高优先级的任务中来运行。

出0入0汤圆

发表于 2012-10-9 15:20:55 | 显示全部楼层
二过 发表于 2012-10-9 15:14
对,是这样的,就是为了让高优先级的任务运行(因为在高优先级的任务中会有等待消息队列这样的使自己挂起 ...

理论上是这样,没有代码不好分析,贴那个低优先级任务的代码吧

出0入0汤圆

 楼主| 发表于 2012-10-9 15:30:04 | 显示全部楼层
cumtgao 发表于 2012-10-9 15:20
理论上是这样,没有代码不好分析,贴那个低优先级任务的代码吧

是LWIP的代码,代码太长了,大概是这样,自己建立一个优先级较低的任务,其中就会去做tcpip的初始化,在初始化时会调用ucos-ii的功能函数去创建网络主线程tcpip_thread(),这时候在仿真的时候它能够切换到这个主线程,但是下载到片子中以后就切换不到这个主线程了…

出0入0汤圆

发表于 2012-10-9 15:33:07 | 显示全部楼层
估计是任务栈崩溃了。实际使用可能比仿真任务栈占用大。
你应该用iar而不是keil来开发ucosii程序

出0入0汤圆

 楼主| 发表于 2012-10-9 15:36:28 | 显示全部楼层
marx 发表于 2012-10-9 15:33
估计是任务栈崩溃了。实际使用可能比仿真任务栈占用大。
你应该用iar而不是keil来开发ucosii程序 ...

有没有什么解决方法…我手头用的就是keil…  是低优先级的任务的任务栈崩了还是高优先级任务的崩了,把它改大一点可行不?   多谢啦~~

出0入0汤圆

发表于 2012-10-9 16:47:03 | 显示全部楼层
问题就出在你如果用lwip或者gui的话,ram会非常紧张,不是想改大任务栈就能随便改的。iar可以看每个任务最大使用当前使用,根据这个来改。MDK搞ucos简直RZ透顶,学生玩玩行,实际做项目根本不行。

出0入0汤圆

 楼主| 发表于 2012-10-9 16:50:03 | 显示全部楼层
marx 发表于 2012-10-9 16:47
问题就出在你如果用lwip或者gui的话,ram会非常紧张,不是想改大任务栈就能随便改的。iar可以看每个任务最 ...

崴了…肿么办呢…

出0入0汤圆

发表于 2012-10-9 17:01:24 | 显示全部楼层
可以加个延时测试一下

出0入0汤圆

发表于 2012-10-9 19:44:42 | 显示全部楼层
没有代码    如何分析?

出0入0汤圆

发表于 2012-10-9 20:26:58 | 显示全部楼层
cumtgao 发表于 2012-10-9 19:44
没有代码    如何分析?

lwip的代码那么长,不是你这种能力的人能分析的。

出0入0汤圆

 楼主| 发表于 2012-10-10 09:56:43 | 显示全部楼层
i55x 发表于 2012-10-9 20:26
lwip的代码那么长,不是你这种能力的人能分析的。

有没有什么解决办法呢…求指教

出0入0汤圆

发表于 2012-10-16 22:55:12 | 显示全部楼层
先把其他无关任务的堆栈减小,或者直接关掉。看看是不是Ram不够导致的问题

出0入0汤圆

 楼主| 发表于 2012-10-17 11:19:52 | 显示全部楼层
nicholasdlut 发表于 2012-10-16 22:55
先把其他无关任务的堆栈减小,或者直接关掉。看看是不是Ram不够导致的问题 ...

怎么来看RAM够不够啊,其实现除了lwip自身的任务以外,自己创建的只有一个任务啊…   谢谢回复~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 15:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表