我有以下代码行
MEMORY
{
m_interrupts (rx) : ORIGIN = 0x00002000, LENGTH = 0xC0 /*192 Bytes*/
....
....
....
....
.interrupts :
{
__vector_table = .;
. = ALIGN(4);
KEEP(*(.vectortable)) /* Startup code */
. = ALIGN(4);
} > m_interrupts
在我的main.c文件中。
并且我的__vector_table在链接描述文件的中断部分中如下所示:
SCB_VTOR = (uint32_t)__vector_table;
当中断发生时,由于我将寄存器SCB_VTOR加载到__vector_table的地址,它将指向向量表的当前位置? SCB_VTOR
是什么意思,我的0x00002000
指向代码的地址<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
行?预先感谢
答案 0 :(得分:1)
__vector_table
包含链接程序脚本中包含的地址(__vector_table = .;
表示获取当前地址的值,也就是说,如果前面的部分占用8kB,则__vector_table
将包含下一个地址)。
是的,假设SCB_VTOR
中的0x00002000
部分在interrupts
中加注,0x00002000
包含地址<Route path={YOURPATH} render={(props) => <YourComp {...props} keyProp={id} key={id}/>} />
,根据链接描述文件,第一件事就是获取地址。
请记住,某些CPU / MCU具有固定的向量表,并且它从特定的寄存器开始。