请教RTP的问题
vxworks吧
全部回复
仅看楼主
level 12
wenwutan 楼主
CPU为MPC8308,DDR2容量256MB,其中保留容量为64MB,所以vxWorks系统可用DDR2容量为196MB。在镜像配置中“RTP_CODE_REGION_START”和“RTP_CODE_REGION_SIZE”均设置为0。在telnet中使用memShow查看显示如下:
-> memShow
status bytes blocks avg block max block
-------- -------------- ---------- ---------- ----------
current
free 108529552 2 54264776 108529488
alloc 23874592 2408 9914 -
internal 408 2 204 -
cumulative
alloc 24002600 2661 9020 -
peak
alloc 23876168 - - -
value = 0 = 0x0
可用内存有100多M字节。我创建了一个很简单的RTP,只有一个main函数,函数中仅一个while(1)循环,循环体内为taskDelay(1000);将这个RTP通过WorkBench进行Debug调试,可以正常调试,然后我在main函数之外创建一个较大的全局数组,容量2MB,但函数中并没有使用,结果通过WorkBench进行Debug调试时,直接导致镜像死机,全局数组容量为1MB时,没有问题,可以下载调试。
下载RTP文件时,FTP服务器显示vxe文件已经成功下载,应该是启动的时候数组太大,导致溢出。但是镜像里配置的RTP堆大小是自动分配,空余内存有100多MB,应该足够了,为何还是会死机,只能分配1MB以下空间?
谢谢!
2013年04月27日 06点04分 1
level 9
额,全局数组是全局变量,全局变量占用静态区。
2013年05月13日 07点05分 2
level 9
全局变量不管函数用与没用,它都要占地方。
函数里面定义的局部变量,动态生成,不调不占,调了才会去占用内存。
2013年05月13日 07点05分 3
level 9
百度搜索”静态存储区”,相关的知识点,还有谭浩强的c语言中,”全局变量””动态存储””静态存储”等相关内容,钱能的C语言中叙述了”堆””栈””静态分配”我就不copy了。
2013年05月13日 07点05分 4
level 9
个人经验值,嵌入式系统,32位机静态区一般是2M,但系统保留以及特殊功能寄存器,以及系统本身会用掉一些,留给应用程序能用的也就1M了。MPC8303可用的静态区1M多。
非嵌入式32位机一般是4M。具体多大CPU的手册上写着的。
2013年05月13日 07点05分 5
level 1
创建rtp使用RTPspawan中有一个关于进城容量大小的参数,设置大一点。
2013年11月05日 10点11分 6
1