打印
[ZLG-MCU]

Cortex-M3主堆栈MSP和进程堆栈PSP问题

[复制链接]
3709|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jtingwang|  楼主 | 2008-5-10 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用uC/OS-II操作系统,分配了主堆栈(MSP)和任务堆栈(PSP)。发现在某个任务中建立一个局部数组,该数组的内存空间被分配到主堆栈

while(1)
{
    unsigned char cSrc[10] = {11,22,33,44,55,66,77,88,99,10};
    unsigned char cDest[10];
    unsigned char i;

    for(i = 0; i < 10; i++)
    {
        cDest = cSrc;
    }
    
    OSTimeDly(1);
}

疑问:进入了任务之后,应该使用任务堆栈,即数组cSrc[10]和cDest[10]应该被分配到PSP+某个地址的内存空间;
现在发现数组cSrc[10]和cDest[10]被分配到了MSP+某个地址的内存空间

后果:cDest被赋予了PSP堆栈空间内存的值,即cDest不能被正确赋值

相关帖子

沙发
zlgarm| | 2008-5-13 08:46 | 只看该作者

问题分析

1)堆栈有没有溢出?
2)可能编译器优化了代码,没有使用cSrc[],而是把数值直接赋给cDest[] 。
3)注意这是栈,是满递减的。

(zlgarm_zsg)

使用特权

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

本版积分规则

67

主题

171

帖子

1

粉丝