gpt4 book ai didi

c++ - 让软件中断在裸机 Beaglebone Black 中工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:37 25 4
gpt4 key购买 nike

我正在使用 CCS 5.5 对 Beaglebone Black 进行编程。我可以使用 JTAG 成功启动和运行。

我现在正尝试开始闪烁 LED。为此,我需要配置 GPIO1。在尝试配置此端口时,我发现 TI 的 C 运行时立即进入用户模式(启动后的 4 条指令)。当我尝试读取或写入控制内存位置时,我收到一个错误,我们认为这是由于未处于主管模式而导致的。

为了进入管理员模式,我正在尝试编写一个软件中断处理程序,然后从那里进行必要的配置。我可以编写处理程序,并且可以让 main() 调用软件中断,但我正在努力让我的中断处理程序实际工作。

#pragma SWI_ALIAS(7);
int function(int i);

#pragma INTERRUPT(SWI);
int function(int i)
{
return i + 1;
}

int main(void) {
int i = function(5);
while(1);
}

如我所料,调用 function 在反汇编中生成 SWI 7,但从未调用过 function。我写了一个 intvecs.asm 文件,但这没有帮助。

    .global _c_int00
.global _Z8functioni

.retain ".intvecs"
.sect ".intvecs"
B _c_int00 ; reset interrupt
.word 0 ; undefined instruction interrupt
B _Z8functioni ; software interrupt
.word 0 ; abort (prefetch) interrupt
.word 0 ; abort (data) interrupt
.word 0 ; reserved
.word 0 ; IRQ interrupt
.word 0 ; FIQ interrupt

我将不胜感激任何关于如何让它工作的建议。


看起来 CCS 5.5 附带的 .gel 文件实际上不允许写入 0x00000000,据我所知,这是中断 vector 的位置。所以 JTAG 适配器没有更新中断 vector 。

最佳答案

如果您正在进行简单的编程,那么您可以重写 asm 启动代码以不进入用户模式并保持在 SVC 模式。

关于c++ - 让软件中断在裸机 Beaglebone Black 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717608/

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