gpt4 book ai didi

c - ARM ASM : Bad Instruction end

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:49 26 4
gpt4 key购买 nike

在我当前的项目中,我们使用 Segger embOS 作为 RTOS。目标系统是ARM Cortex-M MCU

RTOS 有一些用汇编语言编写的代码。但是 ASM 代码会产生错误:

RTOS.s:69:错误:错误指令“结束”

根据 ARM 汇编程序引用指南 http://infocenter.arm.com/help/topic/com.arm.doc.dui0489f/DUI0489F_arm_assembler_reference.pdf

(第6.8.5章)指令“END”存在(我不确定汇编程序是否区分大小写)尽管这条指令存在,但程序集不会编译。

每个包含文件都以.end(注意“.”和小写字母)

文件 RTOS.s


#define OS_RTOS_S_INCLUDED

/*******************************************************************
*
* Code section includes selected code
*
********************************************************************
*/
#if (defined __ARM_ARCH_6M__) || (defined __ARM_ARCH_8M_BASE__)
//
// Cortex-M0
//
#include "RTOS_CM0.S"

#elif (defined (__VFP_FP__) && defined (__SOFTFP__))
//
// Cortex-M3 or Cortex-M4 without VFP
//
#include "RTOS_CM3.S"

#elif (defined (__VFP_FP__) && !defined (__SOFTFP__))
//
// Cortex-M4 with VFP
//
#include "RTOS_CM4F.S"

#else
#error "No RTOS.S for selected CPU available, check configuration"
#endif

/********************************************************************/

END//Line 69

/***** End of file ************************************************/

将 END 切换为 .end 接缝以解决编译错误。然而,链接器找不到汇编程序脚本中定义的函数(尽管这可能是不同的问题)

所以我的问题是:为什么指令 END 是错误的指令?

最佳答案

END directive是 armasm 指令,而不是 ARM 汇编指令。也就是说,它是在代码的构建 期间对汇编器 的指令,而不是对处理器的指令。 .end是 GNU 作为(GNU 汇编器)的等价物。

不同的工具链使用不同的汇编指令和语法。您正在尝试使用不兼容的 gas(GNU 汇编程序)构建 armasm 源代码。您肯定会遇到除此之外的其他问题,这些问题会阻止您使用 GNU 工具链构建特定于 ARM 工具链的源代码/对象 - 尤其重要的是,除了技术问题外,还有法律问题 embOS licences是特定于工具链的。

每个 Segger embOS 许可证都是为特定的工具链提供的。如果你想使用不同的工具链,你将需要一个新的许可证和不同的工具链特定代码/库——即使你有源代码许可证;这不仅是一个法律问题,而且是一个技术问题——Segger 不提供所有工具链的代码和单个工具链的许可证。如果您只有一个目标代码许可证,如果使用与构建目标代码不同的工具链(或者在某些情况下甚至不同的工具链版本),它可能无法链接。

您需要检查一下,但很可能您拥有 Keil ARM MDK 工具链(包括 armcc/armasm 等)的许可证。不管怎样,它都不是免费工具,您需要为 GNU 购买 embOS 许可证,或者获得您拥有 embOS 许可证的工具链的许可证。

在任何情况下,您都可以更新您的 Segger 支持和维护许可证,这样您就可以获得他们的技术支持。

关于c - ARM ASM : Bad Instruction end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57821937/

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