论坛» 嵌入式开发» MCU

[VxWorks] STACK_ADRS指向什么地址?

菜鸟
2006-06-16 21:52 1楼
现在刚开始读ARM7的romInit.s,对其中sp的设置不是很明白。
以下问题都是针对Bootable的非驻留类型的非压缩的VxWorks而言。

romInit()中将sp设置为STACK_ADRS,而STACK_ADRS在configAll.h中定义为
#define STACK_ADRS _romInit /*栈向下增长的情况*/
此处的_romInit是指的什么地址?是romInit()函数的入口地址吗?

由于在设置sp之前,romInit()中作了将ROM的从0到ROM_COPY_SIZE的内容拷贝到RAM的从0到ROM_COPY_SIZE的工作。然后作了ROM和RAM地址交换。是否意味着在ROM和RAM中各有一个romInit()函数?如果是,romInit()函数的入口地址对应的是RAM中的romInit()的入口地址还是ROM中的romInit()入口地址?

菜鸟
2006-06-16 22:04 2楼
取romInit()的地址,是romInit()在镜像文件中相对于文件起始的偏移量,还是被映射到RAM中的地址(RAM_HIGH_ADRS)?
菜鸟
2006-06-19 19:50 3楼
没人愿意回答么?做过BSP的高人们来说说啊~
自己想了一下,发现越来越多的问题让人迷糊。
如果有一个函数F,在Make system中被指定在地址空间ADR1处执行,
在实际的硬件映射后却处于地址空间的ADR2处。如果F的代码都是位置无关代码(PIC),F应该可以正常运行。问题是,这时候取F的地址,应该是多少?
菜鸟
2006-06-19 19:55 4楼
还有一个问题。
如果有一段ROM驻留的程序B会调用A这个函数。而A被指定到RAM空间中的某处运行。B调用A这个函数的过程会是怎么样的?先将ROM中所包含的A函数的代码拷贝到RAM中,然后再执行A?此时如果取A的地址,会是什么呢?

菜鸟
2006-06-19 20:00 5楼
ELF文件转换成可以烧写的HEX文件的过程是什么样的呢?读取program header然后将各个segment写入HEX文件?如何确定地址呢?
共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]