modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
阅读:2755回复:1

怎样加载ELF格式文件到RAM运行?

楼主#
更多 发布于:2008-12-10 20:29
程序的目的是将ROM上的一个ELF文件加载到RAM里运行,现在有几点疑惑,哪位兄弟能帮忙指点一下:
1) ELF文件含有多个section,是不是要把每个section分析出来,然后把RO,RW section COPY到RAM,然后把ZI section在RAM里建立起来,然后把PC指针指向RAM中RO的入口点就可以了?

2) 是关于scatter 文件的一个问题, 里面有一个加载域的概念,不是很明白,象我要做的这种情况,我是要将上一步里的section COPY到加载域,还是运行域呢?

3) 是关于__main函数的,看资料说它会在跳到我们自己的main之前做两个动作,一个是复制RW区和建立ZI区,另一个是初始化堆和栈以及初始化库函数,那么是不是我不需要自己COPY ELF文件里的那些个section到其运行域? 那我要怎样加载ELF文件到RAM里呢?

这几个问题搞的有点糊涂,哪位兄弟能帮忙指点指点,或者给我一些资料参考一下,先在这里谢谢大家啦
modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-12-12 14:33
现在有点明白了: 在ELF文件中有加载域和运行域的参数,只要把program section遍历一下,然后COPY到指定的加载地址就好了,运行域不用去管,因为在文件运行的时候里面的__main负责加载域到运行域的工作。我的理解对吗?
游客

返回顶部