将SVC处理程序放置在Arm Cortex M0中的SVC向量中

时间:2017-01-17 14:56:11

标签: arm cortex-m3 cortex-m

我有一个我想要放入SVC异常向量的函数,但我似乎无法找到将函数的地址放入该向量所需的语法。任何人都可以建议一个资源来帮忙吗?

3 个答案:

答案 0 :(得分:1)

假设您有一个名为your_function_name的符号,以下代码将分支到它。

SVC_Handler
    EXTERN your_function_name
    ldr r0,=your_function_name
    bx r0

虽然处理程序通常是弱链接的,但是函数void SVC_Handler(void)应该最终链接而不是启动文件中定义的处理程序。

答案 1 :(得分:1)

valvers编写了一个很好的教程,用于裸机覆盆子pi编程。 尽管CPU不一样,但异常的基本概念是一样的。你一定要看看那里。

我的一位前同事为Cortex M4写了一个HAL。在其中,他在C中设置中断处理程序,没有任何程序集调用,只使用符号的位置。您还应该查看RFLPC

答案 2 :(得分:0)

这是非常模糊的,这是非常具体的代码,并且有很多方法来实现cortex-m向量表并使用GNU工具,所以你没有提供足够的信息,并且在为我们找到这些信息时它应该变得明显,你的桌子在哪里。您可以从拆分二进制文件的精灵版本开始,在向量表区域中找到标签名称,然后为这些名称grep您的代码库。 如果你骑在一堆别人的库等之上,处理它可能会更麻烦,可能有用于注册处理程序的函数调用等运行时。

有一百万种方法可以解决这个问题,所有方法都可以使用,你使用哪一种?