Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217559
  • 博文数量: 49
  • 博客积分: 2101
  • 博客等级: 大尉
  • 技术积分: 525
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-07 10:38
文章分类

全部博文(49)

文章存档

2010年(49)

我的朋友

分类: 嵌入式

2010-09-07 11:43:07

在工程的编译规则中可选的有

Vxworks

Vxworks_rom

Vxworks_rom_compress

Vxworks_rom_res

1 调试用

Vxworks:这个规则编译出来的image本来是用来开发的时候用于方便下载并调试的elf格式文件。它的编译就是把所有的源文件编译成一个大的elf格式目标文件。用户只需要把其中的二进制指令及数据拷贝到正确的ram位置中并执行就行了(加载)。

我认为加载器在加载vxworks时肯定会对其做一定的解释动作。现在我在bootconfig中查到无论是使用什么加载方式,都会使用bootLoadModule这个函数来加载elf格式的vxworks imageElf文件是可链接可执行文件,关于可执行这个概念我一直无法理解,现在想来,要想执行必须加载,而加载过程就会分析它。所以可执行还不如说是可加载呢!

2 成熟产品

Vxworks_rom:这个image就不是elf文件格式,它是bin文件格式。可以放在rom中直接执行。编译成此格式后,可以把该文件放在flashrom)中,让其直接启动。启动后将会把里面包含的真正的vxworks bin复制到内存中执行。

Vxworks_rom_compress 和上个的区别是vxworks bin是压缩的,拷贝到内存中需要解压缩的过程。

Vxworks_rom_res:它和vxworks_rom的区别就是text段会驻留rom不拷贝,但是databss段拷贝到ram

 

注:更进一步的查询,bootLoadModule函数是根据系统使用的编译器来指向不同的加载函数的。因为不同的编译器编译出来的目标文件格式是不一样的,例如.out .elf等等。仔细的看了一下bootElfModule函数,确实和我理解的一样,对elf格式的文件进行分析来下载到ram中执行。

阅读(2279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~