打印

求助:关于ADS 及 ARM

[复制链接]
1650|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 | 只看该作者
同学,到图书馆找本说看看吧。

使用特权

评论回复
5
flashdyc|  楼主 | 2009-10-22 14:28 | 只看该作者
经过这段时间的学习,a问题和c问题已将搞定了,但现在b问题中的对内存分配还是不太明白,到底ADS堆内存是在哪里进行分配的?__user_initial_stackheap()?

使用特权

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

本版积分规则

5

主题

17

帖子

0

粉丝