[ZLG-MCU] Cortex-M3主堆栈MSP和进程堆栈PSP问题

[复制链接]
4264|1
 楼主| jtingwang 发表于 2008-5-10 17:00 | 显示全部楼层 |阅读模式
使用uC/OS-II操作系统,分配了主堆栈(MSP)和任务堆栈(PSP)。发现在某个任务中建立一个局部数组,该数组的内存空间被分配到主堆栈<br /><br />while(1)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;cSrc[10]&nbsp;=&nbsp;{11,22,33,44,55,66,77,88,99,10};<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;cDest[10];<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;10;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cDest&nbsp;=&nbsp;cSrc;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDly(1);<br />}<br /><br />疑问:进入了任务之后,应该使用任务堆栈,即数组cSrc[10]和cDest[10]应该被分配到PSP+某个地址的内存空间;<br />现在发现数组cSrc[10]和cDest[10]被分配到了MSP+某个地址的内存空间<br /><br />后果:cDest被赋予了PSP堆栈空间内存的值,即cDest不能被正确赋值
zlgarm 发表于 2008-5-13 08:46 | 显示全部楼层

问题分析

1)堆栈有没有溢出?<br />2)可能编译器优化了代码,没有使用cSrc[],而是把数值直接赋给cDest[]&nbsp;。<br />3)注意这是栈,是满递减的。<br /><br />(zlgarm_zsg)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

171

帖子

1

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