Vector table offset register 向量表偏移寄存器
构成:FLASH基地址 | 偏移大小.
基于FLASH基地址偏移的words数,对于32位MCU来说,words的值为16bit.
对于向量表偏移寄存器来说,最小可以设置为128 ,因为寄存器的0-7位保留,意思是说基于FLASH基地址偏移128words.
在设置TBLOFF时,必须将偏移量与向量表中的异常条目数量对齐。最小对齐是32个words(也就是322=64B),足够16个中断(每个中断占用4个字节,总共是164 = 64B)。对于更多中断,通过舍入到2的下一个幂(二进制左移一位是2的几次方,只能通过左移来增加值,所以2的下一次幂应该是6(64))来调整对齐。例如,如果需要21个中断,则对齐必须在64个words的边界上,因为所需的表大小是37个word(这里的原文表述有误,应该是42个words),2的下一个幂是64。
Cortex-M4
它包含从内存地址Ox00000000到表基的偏移量的位[29:9]。在设置TBLOFF时,必须将偏移量与向量表中的异常条目数量对齐。最小对齐长度为128个words。
总结:
对齐的操作一般是在系统运行中需要重定向中断向量表,而在系统复位上电后,中断向量表默认是在FLASH的起始地址上往后排布,如果之后设置的偏移量小于向量的数目,就会造成执行到错误的中断函数,所以设置的偏移量必须大于或者等于向量数量。
如果偏移量为0x80,中断向量表在flash 中排版