搜索
bottom↓
回复: 1

关于ucos在AVR上移植的堆栈疑问

[复制链接]

出0入0汤圆

发表于 2008-5-4 12:44:43 | 显示全部楼层 |阅读模式
例如进行任务切换
     _OSCtxSw::
                PUSHRS                                                ; Save current task's context
                PUSHSREG
                PUSHSP

     进入函数第一件事就是入栈,那么此时的Y指针指向的确保一定是当前任务的堆栈入口吗?
     是不是Y指针指向的地址只有在个别涉及到任务切换时才会改变?

    LDS     R30,_OSTCBCur                ;
    LDS     R31,_OSTCBCur+1                ;
    ST      Z+,R28        ;              
    ST      Z+,R29  ;   
    前面两个LDS语句是使    Z = OSTCBCur->OSTCBStkPtr   
    那么后面的怎么理解,是指把Y的内容即任务的堆栈入口放在Z所指向的地址内吗?可是Z已经入栈过了啊。
    关于Z,Y两个寄存器在任务切换时应用还不是太清除,希望大家原谅我的无知

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-5-18 18:22:58 | 显示全部楼层
avr的汇编看不懂,ucos在进行任务切换时是从当前任务控制块中取到该任务的规模指针,然后再保存任务上下文的。
有时候可能还要做些调整,有的cpu会自动入栈一些东西。总之就是使任务的规模满足ucos的要求,要不然一切换肯定就跑飞了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 18:15

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

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