[ZLG-ARM] ARM 程序的工作过程

[复制链接]
 楼主| reeper 发表于 2009-4-2 15:14 | 显示全部楼层 |阅读模式
<br />  首先由各种&nbsp;source&nbsp;file&nbsp;经过编译产生&nbsp;object&nbsp;文件,然后&nbsp;object&nbsp;文件经过链接生成&nbsp;Image&nbsp;文件,然后通过&nbsp;ICE&nbsp;的方法,根据描述文件的指定下载到目标板上的固态存储器指定地址当中,比如&nbsp;flash&nbsp;,&nbsp;EEPROM,&nbsp;ROM&nbsp;等等。在程序执行之前,根据某些描述文件,将需要读写数据的&nbsp;部分读出放入动态存储器比如&nbsp;RAM&nbsp;当中,然后程序从&nbsp;ROM&nbsp;开始执行。或者有时为了提高程序的运行速度,也可以将所有的程序&nbsp;(&nbsp;有一些&nbsp;root&nbsp;的部分除外,以后会提及&nbsp;)&nbsp;通过一个描述文件放入指定的&nbsp;RAM&nbsp;当中,然后程序从&nbsp;RAM&nbsp;开始执行,但是这样会耗费大量的动态存储器,所以大部分程序会取折中的方法,将需要快速运行的部分和要读写的部分放入&nbsp;RAM&nbsp;中&nbsp;(&nbsp;一般读固态存储器的过程和动态存储器的过程是一样的,但是写就不同了,所以读写的部分一定要放到&nbsp;RAM&nbsp;中&nbsp;)&nbsp;,而只读的部分和对速度要求不是那么高的部分放入固态存储器。同时&nbsp;ARM&nbsp;结构的异常向量表规定放在地址为&nbsp;0x00000000&nbsp;开始的地址空间上,而一般的&nbsp;CPU&nbsp;为了提高异常相应速度,会将这个向量段&nbsp;remap&nbsp;到其他的&nbsp;RAM&nbsp;当中,所以在描述文件当中必须精确指定异常向量跳转程序的地址到&nbsp;remap&nbsp;的地方。在&nbsp;application&nbsp;程序执行前,还需要由一些文件描述&nbsp;application&nbsp;程序执行的环境。比如系统工作时钟,总线频率。现在一般嵌入式编程语言为&nbsp;C,C++&nbsp;等。如果在使用它们的时候使用的&nbsp;runtime-library&nbsp;,那么在程序执行前还需要为这些库函数初始化&nbsp;heap&nbsp;。然后&nbsp;ARM&nbsp;可能工作在不同的模式,还需要为不同的工作模式设置&nbsp;stack&nbsp;。这样,描述链接地址的文件,以及在&nbsp;application&nbsp;运行前所有的初始化程序就是&nbsp;startup&nbsp;程序组<br />
msleep 发表于 2009-4-2 17:37 | 显示全部楼层

挺细致的!

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

本版积分规则

139

主题

185

帖子

0

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