3522|10

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

内存分配问题,马上结贴。。 [复制链接]

在vxworks中,内存应该是按照下面分配的:
vectors
Exception Pointers
reserverd
...
...
Initial Stack
test
data
bss
wdb Memory pool
system memory pool
从上到下地址递增的

想问下,对于在程序中直接用malloc分配的变量对应上面哪部分?
还有任务堆栈、中断堆栈又是哪部分?
函数中的局部变量是不是对应上面Initial Stack?如何划分的?

最新回复

我们公司是windriver合作伙伴,有6.x版本源码,5.5版本源码网上能找到。 公司有信息安全规定,无法外发。 我下了 一份5.5的,不太完整,需要的话我发给你  详情 回复 发表于 2009-7-8 22:10
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
malloc分配的变量 的对应的应该是 System Memory Pool
任务堆栈可以是使用data 区(全局变量),也可以是malloc分配的
局部变量 应该是处于 任务堆栈中
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果体系支持,中断栈使用独立,系统启动时根据配置设置中断栈的大小和位置。也就是说,随便你喜欢,可以任意地方。
如果体系结构不支持,中断栈就是用当前任务栈。

任务栈也一样,随便你喜欢,你可以自己设置它在任意你希望的位置,只要你保证了这空间不和别人重叠。

malloc分配到的对应于memory pool位置。

毫无疑问,局部变量在栈中,你可以随便看下反汇编,看下如何引用局部变量的就清楚了。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
system memory pool 是实际的应用软件可用部分

我认为这一部分分为了 任务栈区 和 堆区

其中,任务栈是在栈区开辟,而malloc是在堆区申请

vxworks没有单独的中断栈,中断占用任务栈,而且还要考虑中断嵌套
所以说,一般在开任务栈的时候,还要考虑中断的问题(适当多开一些任务栈)

局部变量位于任务栈中。


如楼主图示,其他部分的内容,写应用程序时可以不考虑。

根据我了解的,bootline是存放启动参数的,包括启动方式,终端地址 主机地址 用户名密码等

Initial Stack 是用户程序入口任务使用的栈,也就是根任务的栈

wdb Memory pool 是给WDB使用的(貌似任务调度)

我也只是了解一些皮毛,楼主可以多参考一些手册资料

test
data
bss
这3个段是放程序的,test是代码段,data是数据段(全局变量和静态变量就处于这个位置)


 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
uping
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
多谢楼上的回复,大家是否还有其他完善的。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
up
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
马上结贴了,大家还有补充的么。。。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

9
 
直接malloc肯定是System memory pool。
任务堆栈和中断堆栈理论上可以在任意地点,只要和其他内存不冲突即可。


建议楼主下载一份Vxworks源代码,看看内存初始化部分以及taskCreate和malloc函数即可明确
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

10
 
8楼,哪能找到源码呢
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 
我们公司是windriver合作伙伴,有6.x版本源码,5.5版本源码网上能找到。
公司有信息安全规定,无法外发。

我下了 一份5.5的,不太完整,需要的话我发给你
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表