在尝试阅读了文档并阅读了Internet上的其他示例之后,我着手为嵌入式CMake指定以下变量。

set(CMAKE_SYSTEM_NAME Generic)
#set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_PROCESSOR cortex-m3)

我已经尝试将armcortex-m3用作提供给CMAKE_SYSTEM_PROCESSOR的值,但是我仍然必须使用以下标志手动标识要编译的体系结构。
add_compile_options(
    -mcpu=cortex-m3
    -mthumb
)

我希望这些看似显而易见的标志会被CMake抽象化,并通过指定CMAKE_SYSTEM_PROCESSOR的值来拾取。

我是否弄乱了明显的东西,还是应该在CMake工具链文件中利用不同的变量?

最佳答案

您的假设是错误的。所有 ARM 处理器都不同。

如以下示例所示, ARM 内核可能具有一些硬件选项:

  • Thumb-1指令
  • Thumb-2指令
  • 硬件相乘(32/32/32和32/32/64)
  • 划分
  • dsp
  • 单精度浮点硬件
  • double 浮点硬件
  • 信任区
  • copprocessors
  • 和更多...

  • 因此,不存在单臂内核,更不用说M3了,每个硬件制造商的实现方式都不同。

    因此,您必须为arm内核指定编译器选项。

    10-08 01:11