打印
[C语言]

关于ucos系统 任务切换 pc sp 通用寄存器的保存地址问题

[复制链接]
1424|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
XLDZZ|  楼主 | 2016-10-20 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
         一般来说 cortex m的单片机,在没有系统只是裸奔的状态下。当发生程序转移时(如子程序调用或者发生中断),当前被打断的程序运行地址会保存在start.s中指定的地址中。
        ucos发生程序转移时,当前任务的pc sp 通用寄存器等内容是保存在每个任务的堆栈里的。
        我的问题就是ucos如何指定,让编译器把任务转移时的地址保存在任务堆栈里的呢。

相关帖子

沙发
ayb_ice| | 2016-10-20 12:53 | 只看该作者
这是OS内核要做的事

使用特权

评论回复
板凳
XLDZZ|  楼主 | 2016-10-20 16:28 | 只看该作者
前面的问题 我知道怎么回事了
是修改SP指针实现不同任务不同的堆栈空间

只是具体实现方式没搞明白,没找到具体的代码.
那位找到麻烦告诉我

使用特权

评论回复
地板
皈依| | 2016-10-20 20:45 | 只看该作者
楼主研究的好细啊。。。是打算自己做嵌入式内核么?关注

使用特权

评论回复
5
qbasicljx| | 2016-10-21 15:09 | 只看该作者
参考ucos 的taskcreate 函数

使用特权

评论回复
6
wpei_31| | 2016-10-24 13:23 | 只看该作者
看一下移植UCOS时那个汇编文件

使用特权

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

本版积分规则

64

主题

182

帖子

0

粉丝