打印
[应用相关]

uCOSII在STR7x上跑竟然用管理模式

[复制链接]
2973|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a_bb|  楼主 | 2007-4-25 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好!
在STR710_book_光盘资料的书稿补充中的《第6章 uCOS-II在STR71x微控制器上的移植》中提到:
管理、中止、未定义、中断和快中断与相应异常联系,不适合作为任何的工作模式,而系统模式除了是特权模式外,其他方面与用户模式一样,因而可选的任务模式只有用户模式和系统模式。为了尽量减少任务代码错误对整个程序的影响,缺省的任务模式定为用户模式,可选为系统模式。

以上当然正确,任务模式应该用用户模式。但在具体实现时却:

在函数OSTaskStkInit()中最后
    *(--stk)     = (INT32U)ARM_SVC_MODE;    /* CPSR,(允许IRQ和FIQ中断) */

那么任何任务在启动时都会根据堆栈中CPSR的内容进入管理模式
我的程序确实也是进入了管理模式,这便与用用户模式相矛盾了。
为什么?是它不对吗?如何修改?

沙发
yxs1977| | 2007-4-26 09:42 | 只看该作者

虽然不懂,但还是顶一下

使用特权

评论回复
板凳
ST_ARM| | 2007-4-26 10:02 | 只看该作者

管理模式与用户模式

系统模式除了是特权模式外,管理模式与用户模式是一样的。
在STR710_book_光盘资料的书稿补充中的《第6章 uCOS-II在STR71x微控制器上的移植》中的移植是根据uCOS网站上得来得,这个移植适合所有得ARM7TDMI的MCU,但是它违背操作系统的原则,用户的代码应该运行在用户态,任务切换等操作属于系统内核的一部分,应该运行在系统态,所以我们不建议客户使用uCOS-II自己网站上的移植,我们另外做了一个针对STR71x的移植。这个代码与uCOS-II自己网站上的移植不同。在这个移植中用户的代码运行在用户态,任务切换等操作运行在系统态。

使用特权

评论回复
地板
a_bb|  楼主 | 2007-4-26 12:08 | 只看该作者

能给一份参考吗?

3楼说的很对,我很同意他的观点,能给一份你们的移植代码吗?
请发到 guangjingyang@yahoo.com.cn
谢谢

使用特权

评论回复
5
yangtaojsw| | 2007-4-27 09:08 | 只看该作者

能给我一份吗?

我现在正在研究str710的ucos-ii移植,能给我一份?参考一下。非常感谢! Email: yangtaojsw@qq.com

使用特权

评论回复
6
tyz114499| | 2007-4-27 16:28 | 只看该作者

能给我一份吗?

我使用的是UCOS网站上的移植,加上LWIP后运行还算正常,只是有时会进入未定义模式,然后程序就死在那了,如果你们的移植不是用于商业用途,能给我一份参考一下吗?谢谢  tyz114499@sina.com    tyz114499@126.com

使用特权

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

本版积分规则

35

主题

98

帖子

0

粉丝