英飞凌
直播中

生龙活虎3

8年用户 784经验值
擅长:光电显示
私信 关注

在c文件中添加__asm(\"ldr pc, =0x10040020\") 时,IAR编译错误 \"error in inline assembly\"是怎么回事?

在 c 文件中添加 __asm("ldr pc, =0x10040020") 时,IAR 编译错误 "error in inline assembly" ,执行什么程序才能跳转、
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/TRAVEO-T2G/traveo-ii-bootloader-jump-to-app/td-p/713461

回帖(1)

张亮

2024-5-21 17:12:07
IAR编译器在处理内联汇编时遇到了错误,这可能是由于语法错误或不支持的指令导致的。在这种情况下,错误信息是 "error in inline assembly"。要解决这个问题,请尝试以下步骤:

1. 确保您的IAR编译器支持内联汇编。请查阅IAR编译器的文档以确认支持情况。

2. 检查您的内联汇编语法是否正确。在IAR中,内联汇编的正确语法是使用双下划线(__)而不是单下划线(_)。因此,您应该将代码更改为:

```c
__asm("ldr pc, =0x10040020");
```

3. 确保您的指令是正确的。在ARM汇编中,ldr指令用于加载寄存器。请确保您的指令是正确的,并且适用于您的目标硬件。

4. 如果问题仍然存在,请尝试将汇编代码移动到单独的汇编文件中,而不是在C文件中使用内联汇编。这将使您能够更清楚地看到错误,并可能更容易地解决问题。

5. 如果您仍然遇到问题,请查阅IAR编译器的官方文档和支持论坛,以获取更多关于如何解决此错误的信息。

关于执行什么程序才能跳转,您可以尝试以下步骤:

1. 确保您的目标硬件支持从指定地址跳转。

2. 在汇编文件中,使用适当的跳转指令(如b、bl等)将程序跳转到指定地址。例如:

```assembly
b 0x10040020
```

3. 如果您使用的是C语言,您可以使用内联汇编或外部汇编文件来实现跳转。

4. 确保您的程序已经正确地链接到目标硬件,并在适当的内存地址上运行。

5. 如果您仍然无法实现跳转,请查阅目标硬件的文档和支持论坛,以获取更多关于如何实现跳转的信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分