打印

ADS编译C程序的问题

[复制链接]
2220|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangxuefan1220|  楼主 | 2010-4-2 15:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人是菜鸟,刚接触ARM7才一个星期,最近在看 startup.s 启动文件,但是还是有的地方不是很明白,望高人指教。

1.startup.s是不是主要完成以下三个工作:各种模式的堆栈的分配、目标板的初始化和进入C主程序。
除了这三个工作之外,还有没有要完成的工作啊?

2.好像 startup.s 文件中分配的堆栈都是向下生长的,那么是不是意味着ADS在编译C程序的时候,只要涉及到堆栈的地方,都会按照向下生长的方式使用堆栈?

3.在 startup.s 文件中,好像是用 STACK 表示堆栈的,但是好像还有 heap ,这个是用来干什么的?
在 startup.s 中好像没有用到,而在这部分用了 EXPORT 关键字,是声名给外部程序调用的。
希望高人能解释一下这个一般都拿来做什么?

4. IMPORT __use_no_semihosting_swi 是做什么用的?
我在使用ADS的时候,必须屏蔽这句话,才可以编译。

问题比较多,希望高人能帮忙解释一下?

相关帖子

沙发
xinzha| | 2010-4-2 22:59 | 只看该作者
1.基本就是这些,主要是根据自己系统的需要做一些事,还有可能包括地址空间分配或者重映射
2.一般的规则栈是向下生长的,不过我隐约记得似乎可以设置,感兴趣的话去查查arm手册。
3.heap是堆,供malloc或者calloc之类内存分配使用,extern是因为其他模块中有函数需要用到这个值,比如__user_initial_stackheap之类的函数
4.这个声明你的项目中禁止使用semihosting功能,semihosting是arm的一种调试方式,可以实现目标板和主机之间的资源信息交互。你编译不过就是因为代码中包含了类似的函数,比如fopen,fclose,fprintf之类。

使用特权

评论回复
板凳
nadahenry| | 2010-4-4 19:42 | 只看该作者
原来如此,   一直没看这东西了

使用特权

评论回复
地板
wangxuefan1220|  楼主 | 2010-4-6 14:35 | 只看该作者
非常感谢2楼的

使用特权

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

本版积分规则

0

主题

17

帖子

0

粉丝