首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

关于链接地址和绝对地址解决方案

2012-03-06 
关于链接地址和绝对地址在vxworks中的rominit函数,不使用绝对地址,只使用相对地址,请问,是不是所有在rom中

关于链接地址和绝对地址
在vxworks中的rominit函数,不使用绝对地址,只使用相对地址,请问,是不是所有在rom中运行的程序,都是只使用相对地址的呢?在什么时候使用相对地址,在什么时候使用绝对地址呢?
  另外,romstart函数也是在rom中运行的,为什么要把它的链接地址link到ram空间呢?
 

[解决办法]
PU的寻址方式可以使用绝对地址和相对地址,相对地址的像PowerPC里的bl指令。
先说明下LZ最后一个问题,需要清楚下vxWorks的启动过程,vxWorks在启动时首先需要在rom中取数据(因为ram掉电就没程序了),在rom里执行的程序就是romInit和romStart,然后就会跳到Ram中执行了。这点LZ应该很清楚吧
再说前面两个问题,在多数程序中,都是使用相对地址进行链接跳转的,这是因为使用相对地址的执行速度会更快些,只要函数标识不冲突,就可以正常执行。而绝对地址大多数用于长地址跳转(如从ROM跳到RAM中)的情况。
这里需要说一下跳转的机制,程序会将指令和地址传递给PC(程序计数器),相对地址长度短,用机器码一条就可以搞定;而绝对地址呢,很长(16或32位),需要用两条机器码指令才能完成,效率自然就低了。
[解决办法]

探讨

PU的寻址方式可以使用绝对地址和相对地址,相对地址的像PowerPC里的bl指令。
先说明下LZ最后一个问题,需要清楚下vxWorks的启动过程,vxWorks在启动时首先需要在rom中取数据(因为ram掉电就没程序了),在rom里执行的程序就是romInit和romStart,然后就会跳到Ram中执行了。这点LZ应该很清楚吧
再说前面两个问题,在多数程序中,都是使用相对地址进行链接跳转的,……

热点排行