打印
[ZLG-ARM]

uc/os中,全局变量占用的是哪个任务的堆栈?

[复制链接]
2954|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arzhiy|  楼主 | 2007-3-13 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zlgARM| | 2007-3-13 16:28 | 只看该作者

RE

全局变量怎么会占用堆栈?跟堆栈没关系。

使用特权

评论回复
板凳
high| | 2007-3-14 10:03 | 只看该作者

介绍点深入的东西

首先从逻辑上说,全局变量一般是任何系统都需要的,对于非ucos的前后台系统,全局变量岂不是没处可放置?


我的认识:全局变量(包括静态变量)是放置在独立的一块数据区里面的。一个二进制程序分3个部分
RO -- 代码
RW -- 数据
ZI -- 没有初始化的数据

全局变量就放在RW和ZI.启动后由系统程序将数据拷贝到指定地址的内存中,从而成为全局变量。这部分任务在main()函数被系统调用前完成。
------------------------------------------
在ucos这个例子中,任务使用的栈是用全局静态数组,也就是全局变量了,这样的好处是,栈空间作为全局变量由编译器自动来分配,访问起来也方便(访问数组当然容易了)

使用特权

评论回复
地板
zlgARM| | 2007-3-14 13:35 | 只看该作者

RE

楼上的说得很好。

使用特权

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

本版积分规则

11

主题

64

帖子

1

粉丝