OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4409|回复: 5

关于uc/os堆栈的不解。

[复制链接]

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2012-11-11
在线时间
3 小时
发表于 2013-12-13 15:24:18 | 显示全部楼层 |阅读模式
比如我的一个任务
task1(void)
{
    u32 tem[2];
    while(1)
    {
        do some thing;
    }
}
我在另一个任务中查询task1任务的堆栈大小为100byte,
如果我把局部数组改变成 u32 tem[3].堆栈大小就会变成104byte,可我程序里根本没有用到增加的一个元素呀。。

印象里局部变量是存放在start.s文件规定的0x20000000~0x20000400中的。
uc/os系统不是只会把R0-R15等寄存器压到自定义的栈吗?还是把局部变量也压栈了?不解







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2013-12-13 15:37:54 | 显示全部楼层
你定义的变量也是会占用栈区的,包括程序代码
回复 支持 反对

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2013-12-13 15:43:48 | 显示全部楼层
准确的讲局部变量放在栈区,代码是放在代码区
回复 支持 反对

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2012-11-11
在线时间
3 小时
 楼主| 发表于 2013-12-13 15:44:45 | 显示全部楼层
回复【2楼】三叶草:
---------------------------------
程序代码会占用栈吗?
只需要知道sp pc以及r0-r15就可以完全无缝恢复了呀
回复 支持 反对

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2012-11-11
在线时间
3 小时
 楼主| 发表于 2013-12-13 15:45:56 | 显示全部楼层
回复【3楼】三叶草:
---------------------------------
局部变量放在自定义任务栈  还是放在启动文件规定的栈?
回复 支持 反对

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2013-12-13 17:18:54 | 显示全部楼层
M3核的有主堆栈和线程堆栈,异常处理用主堆栈,任务有各自任务栈;动态分配的局部变量在栈区。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 07:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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