mdk arm开启FPU报错问题

2023-05-16

问题描述:

mdk使用arm complier v6 开启FPU报错问题。

1

问题分析:

如果是使用arm v5版本编译器,按照下述步骤进行配置,然后编译是没有问题的:

在C/C++选项卡中添加下列宏定义:

__FPU_PRESENT=1, __TARGET_FPU_VFP, ARM_MATH_CM4, __CC_ARM,并使用英文符逗号隔开

解释如下:
- __FPU_PRESENT=1 //打开FPU

- __TARGET_FPU_VFP //要求编译出的文件使用FPU功能

- ARM_MATH_CM4 //没有”ARM_MATH_CM4”符号,在编译时将会提示找不到”armcm4.h”文件

- __CC_ARM //__CC_ARM是不同编译器的编译配置宏定义,__CC_ARM就是代表MDK开发环境

现在换成arm v6编译器,编译会报错,为什么呢?

因为v5版本使用的是armcc编译器,而v6版本使用的是armclang编译器,你定义的宏是__CC_ARM,自然就会出错。

解决方案

以cortex-M4内核为例,查看core_cm4.h文件,如下图:
1

显然,如果使用了v6版本的arm编译器,我们需要在C/C++选项卡添加以下宏定义:

ARM_MATH_CM4,
__FPU_PRESENT=1,
__ARM_FP,
__CLANG_ARM
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mdk arm开启FPU报错问题 的相关文章

  • 双倍的 Pow 实现

    我正在开发一个用于运动控制的代码 但我遇到了 pow 函数的问题 我使用VS2010作为IDE 这是我的问题 我有 double p 100 0000 double d 1000 0000 t1 pow p 8 0000 d 1 00 4
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • DSP 库 - RFFT - 奇怪的结果

    最近我一直在尝试在我的STM32F4 Discovery评估板上进行FFT计算 然后将其发送到PC 我已经调查了我的问题 我认为我对制造商提供的 FFT 函数做错了 我正在使用 CMSIS DSP 库 现在我一直在用代码生成样本 如果工作正
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • ARM + gcc:不要使用一大块 .rodata 部分

    我想使用 gcc 编译一个程序 并针对 ARM 处理器进行链接时间优化 当我在没有 LTO 的情况下编译时 系统会被编译 当我启用 LTO 时 使用 flto 我收到以下汇编错误 错误 无效的文字常量 池需要更近 环顾网络 我发现这与我系统
  • 分析 Cortex-M7 (stm32f7) 上的 memcpy 性能

    简洁版本 从 GNU ARM 工具链中提取的 memcpy 的性能指标在 ARM Cortex M7 上对于不同的副本大小似乎差异很大 即使复制数据的代码始终保持不变 这可能是什么原因造成的 长版 我是使用 GNU Arm 工具链 11 2
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • 什么是遗留中断?

    我正在开发一个项目 试图弄清楚 ARM 架构的全局中断控制器中如何处理中断 我正在使用 pl390 中断控制器 我看到有一条线被称为传统中断 它绕过了分配器逻辑 假设有 2 个中断可以被编程为传统中断 任何人都可以帮助解释一下什么是遗留中断
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • 让 TensorFlow 在 ARM Mac 上使用 GPU

    我已经安装了TensorFlow在 M1 上 ARM Mac 根据这些说明 https github com apple tensorflow macos issues 153 一切正常 然而 模型训练正在进行CPU 如何将培训切换到GPU
  • 为什么前向引用 ADR 指令在 Thumb 代码中以偶数偏移进行汇编?

    To bx对于 Thumb 函数 需要设置地址的最低有效位 GNU 作为文档states https sourceware org binutils docs as ARM Opcodes html当地址是从一个生成时这是如何工作的adr伪
  • ARM 汇编:从 STDIN 获取字符串

    我目前正在学习 CS 课程 我们刚刚开始在 Raspberry Pi 上使用 ARM Assembly 事实证明这相当困难 想知道是否有人可以提供帮助 我当前的任务是从 stdin 获取一个字符串 使用 scanf 并计算其中的字符数 然后
  • ARM、VFP、浮点、惰性上下文切换

    我正在为 ARM 处理器 Cortex A9 编写操作系统 我正在尝试实现浮点寄存器的延迟上下文切换 这背后的想法是 浮点扩展最初对线程禁用 因此不需要在任务切换上保存浮点上下文 当线程尝试使用浮点指令时 会触发异常 然后 操作系统启用浮点
  • 当我尝试在 Armv8 程序集中分配数组时,执行冻结

    所以我正在用汇编语言进行编程 这只是一个简单的代码 这样我就可以学习如何分配数组 以便稍后在 NEON 编程中使用它们 ASM FUNC FPE data balign 8 array skip 80 array1 word 10 20 3
  • 支持 ARM 上的 Windows 10 桌面应用程序 - MFC 和 COM 以及 OPOS 可以工作吗?

    我试图了解将在 x86 Windows 10 上运行的 C MFC 应用程序移植到具有 Qualcomm Snapdragon 处理器的 ARM Windows 10 设备的障碍 32位应用程序具有以下特点 MFC 与 C 用于用户界面 C
  • 在 ARM Cortex-M3 中使用 newlib 的 malloc

    我正在为 ARM Cortex M3 NXP 的 LCP17xx 创建代码 到目前为止我一直在使用静态内存 一切都运行良好 我尝试添加动态内存支持 但是一旦调用 malloc 系统就会卡住 我正在使用 gcc 为 Arm Bare Meta
  • 如何在数据部分(RAM)中保留一定范围的内存并防止同一应用程序使用该内存的堆/堆栈?

    我想在 RAM 中保留 分配一定范围的内存 并且同一应用程序不应覆盖或使用该范围的内存进行堆 堆栈存储 如何在内存中分配一定范围的内存以防止堆栈 堆覆盖 我考虑过向应用程序本身添加 或分配 一个数组并保留内存 但它被编译器优化了 因为它在应

随机推荐

  • 使用putty软件通过SSH方式登录华为设备时出现“Signature from server‘s host key is invalid”错误的解决方法

    问题现象 使用putty软件 xff08 0 71及之后的版本 xff09 通过SSH方式登录时可能会出现 Signature from server s host key is invalid 错误提示 xff1a 解决方法 方法1 xf
  • diy 企业级路由器(route os )

    Mikrotik Router Os 来自拉托维亚 xff0c 一个不起眼的欧洲小国家 xff0c 但是它的功能却是很强大 今天我就用口碑比较好的 ROS2 9 6 版进行讲解了 主要功能 xff1a IP 路由 支持无线热区 PPPoE
  • 双系统Ubuntu 18.04 + ROS Melodic + openvins +VINS-mono + Realsense L515 环境配置

    Ubuntu 18 04 准备工作 电脑图标右键 管理 磁盘管理 xff0c 选择空闲空间的D或E盘右键 压缩卷 压缩102400 xff08 100G xff09 下载ubuntu 18 04 6 desktop amd64 iso ht
  • C++语法复习笔记-9.C++STl、Boost库、多线程编程(进行中)

    文章目录 1 STL1 概览2 容器2 1 序列式容器vector list deque初始化遍历 for each函数 2 2 适配器stack queue priority queue初始化访问方式 2 3 关联型容器map set插入
  • SSD与HDD如何混合组raid并永久挂载硬盘?

    前言 xff1a 服务器上同时装有SSD和HDD硬盘 xff0c 如果想把系统装在SSD上 xff0c HDD用来存数据 xff0c 那么服务器应该如何组raid xff1f 又如何设置HDD硬盘永久挂载 xff1f 下面将以装有1个SSD
  • Golang 报错 | 操作mysql提示busy buffer

    背景说明 在使用github com go sql driver mysql 驱动操作数据库 xff0c 获取信息时报错 代码块 span class token keyword func span span class token fun
  • Python | 打印进度条的三种方法

    不使用模块 xff0c 手动打印进度条 span class token keyword def span span class token function Run span span class token punctuation sp
  • Nginx配置禁止IP访问

    时间背景 使用Nginx代理服务 xff0c 请求先到前端的代理服务器 xff0c 然后由代理服务器的nginx转发请求到后端的服务器 开始默认没有对IP访问做限制 xff0c 现在要求禁止IP访问 xff0c 大概是一个这样的架构 xff
  • git如何使用tag

    简介 我们可以创建一个tag来指向软件开发中的一个关键时期 xff0c 比如版本号更新的时候可以建一个 v2 0 v3 1 之类的标签 xff0c 这样在以后回顾的时候会比较方便 tag的使用很简单 xff0c 主要操作有 xff1a 查看
  • linux服务器最大支持连接数

    当我们被问到一台linux服务器最多可以支持多少连接时 xff0c 很多人第一反应是65535个 xff0c 因为端口是65535个 xff0c 还有人说受到TCP连接里四元组的空间大小限制 xff0c 那么到底是多少 xff1f 首先解释
  • Linux提示空间已满,找不到大文件

    当我们发现磁盘快满了 xff0c 然后删除某些服务的日志文件 xff0c 删除后发现磁盘空间仍然被占用 xff0c 但我们使用 du sh 命令 xff0c 发现目录下没有大文件 xff0c 这时我们应该考虑 xff0c 删除日志文件时 x
  • passwd修改用户密码报错

    故障现象 xff1a 1 修改密码时报错 passwd Authentication token manipulation error 2 添加用户报错 xff1a unable to lock password file 分析问题 xff
  • /etc/bashrc、/etc/profile、.bashrc、.bash_profile这几个文件的关系是什么呢?

    我们平时在配置一些环境变量的时候 xff0c 经常会遇到这几个文件的修改 xff0c 有的文档是修改 etc bashrc xff0c 而有的文档则是要求修改 bashrc xff0c 那么这几个文件到底有什么关系呢 xff1f 首先说一下
  • RouterOS系统安装和简单配置

    1 安装RouterOS系统 VMware虚拟机 xff0c 新建一个其他系统的虚拟机 xff0c 类似安装Linux系统 xff0c 挂载系统镜像 xff0c 根据提示一步步完成安装 选择安装的功能包 选择安装的功能包后 xff0c pr
  • nginx-upload-module模块使用

    Nginx是没有该模块的 xff0c 需要重新编译Nginx xff0c 添加nginx upload module模块 下载nginx upload module模块 xff1a https github com fdintino ngi
  • SecureCRT Mac版安装并激活

    先下载SecureCRT和破解文件 默认下载到了当前用户的 下载 目录中 在 Finder 中 打开 scrt 7 3 0 657 osx x64 dmg 并将 SecureCRT复制到 应用程序 中 这时SecureCRT的路径是 App
  • Python 报错 | 导入celery模块报错

    环境 xff1a Python3 7 celery4 1 0 进入python交互环境 xff0c 导入celery模块正常 xff0c 引用Celery的方法报错 xff1a liangkai vm span class token pu
  • yy欢聚时代软件测试笔试题

    1 xff0c 10111001对应的八进制 xff0c 十六进制和十进制 2 xff0c 常见的数据库有那些 xff1f 3 xff0c 常见的协议有哪些 xff1f 4 xff0c 代码运行结果 xff0c c 43 43 题目 xff
  • linux之conntrack连接跟踪

    linux之conntrack连接跟踪 conntrack连接跟踪 连接跟踪 xff08 CONNTRACK xff09 xff0c 顾名思义 xff0c 就是跟踪并且记录连接状态 Linux为每一个经过网络堆栈的数据包 xff0c 生成一
  • mdk arm开启FPU报错问题

    问题描述 xff1a mdk使用arm complier v6 开启FPU报错问题 问题分析 xff1a 如果是使用arm v5版本编译器 xff0c 按照下述步骤进行配置 xff0c 然后编译是没有问题的 xff1a 在C C 43 43