我有一个我想要放入SVC异常向量的函数,但我似乎无法找到将函数的地址放入该向量所需的语法。任何人都可以建议一个资源来帮忙吗?
答案 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您的代码库。 如果你骑在一堆别人的库等之上,处理它可能会更麻烦,可能有用于注册处理程序的函数调用等运行时。
有一百万种方法可以解决这个问题,所有方法都可以使用,你使用哪一种?