[ZLG-ARM] [求助]使用uC/OS,低优先级任务无法向高优先级传递消息邮箱

[复制链接]
4227|17
 楼主| snow863 发表于 2008-3-28 11:01 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;我在使用&nbsp;“ZLG_GUI在uC_OS的使用例子_EasyARM2200”,inChipFlash运行程序(非调试状态),将按键进程的优先级调高于液晶显示的优先级时,按键进程就无法把按键信息通过邮箱传递出去。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;并且,我实验过,只要是低优先级进程向高优先级进程传递消息,在inchip运行就不行,exram调试时则无问题。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;我使用该操作系统已经有一段时间,用很多方法尝试却无法解决,现请各位工程师不吝赐教!非常感谢!&nbsp;<br />
zlgarm 发表于 2008-3-28 11:26 | 显示全部楼层

EasyARM2200

snow863&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;EasyARM2200配套的CPU&nbsp;PACK为LPC22X0系列,内部没有Flash,就不能选择DebugInChipFlash,只能选择其他选择。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty&nbsp;zlgarm_lijintao
 楼主| snow863 发表于 2008-3-28 12:06 | 显示全部楼层

谢谢zlgarm_lijintao的回复。

&nbsp;&nbsp;&nbsp;&nbsp;我用的是LPC2214才出现这种情况的,盼望您继续提供帮助。<br />
zlgarm 发表于 2008-3-28 13:33 | 显示全部楼层

BANK_SET

snow863&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果您是在内部Flash调试,外部BANK_SET跳线应设置为Bank-Ram,Bank-Flash。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On&nbsp;duty&nbsp;zlgarm_lijintao
 楼主| snow863 发表于 2008-3-28 14:01 | 显示全部楼层

非常感谢您的忠告

&nbsp;&nbsp;&nbsp;&nbsp;我的问题是“在inchip运行程序时,低优先级进程无法向高优先级进程传递消息邮箱”。<br />&nbsp;&nbsp;&nbsp;&nbsp;另外,您可以对与我的基础知识有信心。不才,使用该操作系统和贵公司的开发板都已经有1年多了。不会犯这样的错误的。<br />&nbsp;&nbsp;&nbsp;&nbsp;期待您的回复,解决我的具体问题。我认为,该问题是一个很有技术含量的问题。再次感谢您!
zlgarm 发表于 2008-3-29 12:16 | 显示全部楼层

snow863,您好!

您能否从以下几方面进行排查:<br />1、查看信号量的个数是否超过设定值;<br />2、信号量及所有变量是否都有初始化;<br />3、是否是野指针所导致;<br />4、任务堆栈是否溢出。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By:&nbsp;zlgarm_Zhangxiaomeng
zddpy 发表于 2008-3-30 21:57 | 显示全部楼层

路过,顺便问一下

下面两方面排查,如何具体操作:<br /><br />3、是否是野指针所导致;<br />4、任务堆栈是否溢出
 楼主| snow863 发表于 2008-3-31 09:42 | 显示全部楼层

谢谢zlgarm_Zhangxiaomeng

非常感谢,我用的是消息邮箱,haha。<br />1.邮箱使用个数没有超过设定值;<br />2.确定所有使用的事件都初始化了;<br />4.堆栈设定到原来的数十倍也未解决,问题应该不会出在这。<br />3.野指针,应该不会,除了操作系统需要的,这个例程里基本没有其它指针了。<br /><br />我只对例程“ZLG_GUI在uC_OS的使用例子_EasyARM2200”只做了以下改动:<br />1.将显示进程的优先级3改为1,按键进程优先级2不便(这样按键的优先级低于显示进程);<br />2.此时片内片外调试都无问题,但到片内单独运行,邮箱发数据时,程序就停止了。<br /><br />我用自己编的程序试,也是这样。问题是:高低优先级的任务之间,不能相互传递邮箱,只能由高到低。<br /><br />谢谢您Zhangxiaomeng。
 楼主| snow863 发表于 2008-4-1 09:21 | 显示全部楼层

回答zddpy的问题4

tip:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uC提供了一个堆栈检验函数OSTaskStkChk(),要详细了解的话我可以把电子书传给你。谢谢您的支持!
yuzhuju 发表于 2008-4-1 17:27 | 显示全部楼层

个人觉得这个帖子是有质量的.

顺便顶一下.
lhzw2001 发表于 2008-4-1 17:56 | 显示全部楼层

期待...

  
ZorroCN 发表于 2008-4-2 13:37 | 显示全部楼层

某也想要知道

lhzw2001 发表于 2008-4-9 19:25 | 显示全部楼层

那就顶起来!!!!!!

  
wlsui 发表于 2008-4-9 20:33 | 显示全部楼层

可以比较下在Flash和在RAM中调试的模板有什么不一样

分散加载文件,如FLASH的分散加载文件有无问题
 楼主| snow863 发表于 2008-4-10 09:44 | 显示全部楼层

谢谢各位的支持

&nbsp;&nbsp;&nbsp;&nbsp;分散加载我研究过几天,参考了Lpc2100的模板,未能解决问题。<br />&nbsp;&nbsp;&nbsp;&nbsp;耽误了几天时间,现在我暂时用全局变量代替邮箱。也欢迎联系我的Email:&nbsp;ucos@yahoo.cn&nbsp;谢谢!
lhzw2001 发表于 2008-4-10 20:18 | 显示全部楼层

下个VC下的ucos仿真试试....

  
lhzw2001 发表于 2008-4-14 11:34 | 显示全部楼层

?

&nbsp;?
 楼主| snow863 发表于 2008-4-16 16:14 | 显示全部楼层

谢谢lhzw2001

正在做些测试,有眉目的时候和大家探讨。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部