首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重新定位手臂异常向量?

重新定位手臂异常向量?
EN

Stack Overflow用户
提问于 2012-01-23 09:55:40
回答 4查看 7K关注 0票数 2

如何重新定位ARM异常向量

基本上,我需要能够以一种方式重新映射它们,所以当ARM核心尝试执行向量时,它应该执行自定义的异常向量,该异常向量存储在内核的RAM位中,而不是存储在位于0x0 ROM中。这有可能吗?还是我打算将中断从ROM路由到内核?

从本质上讲,是否有一种方法告诉ARM核心,“这里是向量table"?的新地址,我知道您可以在高向量模式下启动CPU,但这不是我要找的。”我需要能够动态地将向量基设置为自定义地址。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-23 11:54:31

这在很大程度上取决于你正在工作的核心。

皮质-M3芯片可以使用系统控制块中的向量表偏移寄存器(VTOR)改变基址。有些实现可能限制可能的地址。

在“传统”芯片(ARM7 7/9,Cortex-A/R)中,我认为没有一个芯片允许你指定任意的基座,尽管它们中的大多数可以在00000000和FFFF0000之间切换,少数允许使用“RAM的开始”地址。

但是,如果芯片有MMU,通常可以在FFFF0000上映射RAM页面并在那里复制处理程序。我相信Linux就是这么做的。

票数 6
EN

Stack Overflow用户

发布于 2014-03-26 03:19:33

此外,如果您的处理器有安全扩展,您可以使用VBAR(向量基本地址寄存器)。

MCR p15, 0, <Rt>, c12, c0, 0

参见ARM架构参考手册中的B4.1.156。

票数 1
EN

Stack Overflow用户

发布于 2016-10-26 10:34:50

对于皮层-A9处理器,这可以通过使用Cp15协处理器寄存器中的VBAR寄存器来完成。寄存器的用途是保存Monitor异常向量的基址。

代码语言:javascript
运行
复制
 MRC p15, 0, <Rd>, c12, c0, 0    ; Read Secure or Non-secure Vector Base Address Register
 MCR p15, 0, <Rd>, c12, c0, 0    ; Write Secure or Non-secure Vector Base Address Register
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8969792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档