我想在LPC1768的SRAM中有一个中断例程。我使用的GCC工具链类似于Yagarto。目前我可以从C语言中执行以下操作:
NVIC_SetVector(TIMER0_IRQn, interruptTest);
字符串
...然后在我的组合档中:
.text
/* .section .fastcode */
.global interruptTest
.func interruptTest
.thumb_func
interruptTest:
ldr r0,=(LPC_TIM0 + IR) /* point to Timer 0's Interrupt Register */
mov r1,#(1 << 0) /* Interrupt Pending bit for MR0 int */
str r1,[r0] /* Clear it */
bx lr
.size interruptTest, . - interruptTest
.endfunc
型
现在,这个函数运行得很好,指向'interruptTest'函数的指针是odd。但是,当我启用'.section .fastcode'位时,指向中断的指针变成了even,而不是odd。
我的问题是:如何正确地使中断例程被识别为thumb函数?
1条答案
按热度按时间f8rj6qna1#
我知道了!
插入'.type interruptTest,%function'使其工作。
所以最终的源应该是:
字符串
重要提示:.section指令中添加了“ax”,%progbits,因为否则该部分有时会被忽略。