gpt4 book ai didi

gcc - 自定义 SRAM 部分中的 Thumb 汇编器中断

转载 作者:行者123 更新时间:2023-12-04 04:59:10 30 4
gpt4 key购买 nike

我想在 LPC1768 上的 SRAM 中有一个中断例程。
我正在使用类似于 Yagarto 的 GCC 工具链。
目前我可以从 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”函数的指针是 奇数 .
但是,当我启用“.section .fastcode”位时,指向中断的指针变为 而不是 奇数 .

我的问题是:如何正确地使中断例程被识别为拇指函数?

最佳答案

明白了!

插入 '.type interruptTest,%function' 使其工作。

所以最终的来源应该是:

    .section    .fastcode,"ax",%progbits
.global interruptTest
.func interruptTest
.type interruptTest,%function
.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

重要提示: "ax",%progbits 被添加到 .section 指令中,否则该部分有时会被忽略。

关于gcc - 自定义 SRAM 部分中的 Thumb 汇编器中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353372/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com