有可能时中断缺省的位置与中断处理函数之间的距离超过了 32M,vxWorks5.5.1以后都有一个excExtendedVectors变量,当这个变量为TRUE的时候,允许中断跳转的地址超过32M。
但在vxWorks5.4不支持。
具体信息可以参考vxworks_architecture_supplement.pdf extended-Call exception vector support chapter as following:
Extended-Call Exception Vector Support
VxWorks for PowerPC adds support for extended-call (32-bit addressable) exception vectors.
VxWorks
Architecture Supplement, 6.3
164
When exceptions and interrupts occur, PowerPC processors transfer control to a predetermined address, the exception vector, depending on the exception type.
After saving volatile task state, the handler routine installed for that exception vector is called. This call is made using bl or bla instructions that, as described previously, require the handler routine to be located within the 32 MB of the vector table or within the first 32 MB of memory. Most systems are able to satisfy this
32 MB constraint. However, if a given handler routine were to be located outside of the addressable areas, the target address would be unreachable in some previous VxWorks releases.
This release provides support for extended-call exception vectors, which can call handler routines located anywhere in the 4 GB address space. Extended-call exception vectors make calls to a 32-bit address in the link register (LR) using the blrl instructions. Extra work is required for an extended-call exception vector to load a 32-bit address into the LR, and make a call to it. Therefore, using extended-call exception vectors incurs an additional eleven instruction overhead in increased interrupt latency. It is therefore not advisable to use this feature unless absolutely necessary.
This release still maintains the earlier style 26-bit call vectors as the default. Using a single bl/bla instruction is much more efficient than the multiple-instruction sequence described previously. It is expected that most targets will continue to use the original relative branch (default) style exception handling.
A new global boolean, excExtendedVectors, has been added, that allows users to enable extended-call exception vectors. By default, excExtendedVectors is set to FALSE. When set to TRUE, extended-call vectors are enabled. excExtendedVectors must be set to TRUE before the exception vectors are initialized in the VxWorks boot sequence (that is, before the call to excVecInit( )). Setting excExtendedVectors after excVecInit( ) does not achieve the desired result, and results in unpredictable system behavior. Selection of extended-call exception vectors is done on a per-BSP basis in order to minimize the impact on those BSPs that do not require this feature.
阅读(1423) | 评论(0) | 转发(0) |