求助:关于ADS 及 ARM

[复制链接]
2567|4
 楼主| flashdyc 发表于 2009-10-21 18:45 | 显示全部楼层 |阅读模式
最近一直在学习LPC2210单片机的启动代码部分,现在有些疑问希望大家能帮我解答一下:
    在启动代码最后部分的B  __main中,我查到的资料说它里面主要做了两方面的内容,a.完成代码和数据的复制(从加载域到执行域),并把ZI数据区清零 b.进入__rt_entry初始化系统堆和栈
    先说a部分,全局变量等数据复制这个我能理解,但代码复制我就有些不明白了,是把所有代码复制到RAM中,加快运行速度?有这种说法?
    b部分,初始化栈可以理解,但堆内存做什么用?仅仅是编译器动态分配内存时利用的空间?还有,堆和栈内存一般设定的尺寸多大合适?
    对于RAM中内存分配使用的问题我还是有些不太明白,比如说RAM有16K,我看有的程序将堆设为512B, 栈设为1K, 那除了一些全局变量外其他那么大的RAM有什么用,浪费了?
zchong 发表于 2009-10-21 20:26 | 显示全部楼层
1、搞清楚运行域和加载域你的第一个问题就解决了。
2、你不动态分配内存就不需要堆,最好将全局变量和静态变量之外的内存全部作为栈,个人理解
 楼主| flashdyc 发表于 2009-10-21 20:58 | 显示全部楼层
本帖最后由 flashdyc 于 2009-10-21 21:05 编辑

也就是通过设置分散加载设置之后程序代码可以再RAM中执行,RAM中数据也可以在FLASH内存储?
jinqiankun 发表于 2009-10-22 11:40 | 显示全部楼层
同学,到图书馆找本说看看吧。
 楼主| flashdyc 发表于 2009-10-22 14:28 | 显示全部楼层
经过这段时间的学习,a问题和c问题已将搞定了,但现在b问题中的对内存分配还是不太明白,到底ADS堆内存是在哪里进行分配的?__user_initial_stackheap()?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

0

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