首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从ARM 5迁移到ARM 6编译器: ARM CMSIS文件中的未知类型名称'__STATIC_INLINE‘

从ARM 5迁移到ARM 6编译器时,遇到ARM CMSIS文件中的未知类型名称'__STATIC_INLINE'的错误。这个错误通常是由于编译器版本升级导致的,ARM 6编译器对于静态内联函数的定义方式发生了变化。

静态内联函数是一种在编译时将函数体嵌入到调用处的优化技术,可以提高代码执行效率。在ARM 5编译器中,静态内联函数的定义方式是使用关键字'__STATIC_INLINE'来修饰函数声明。但是在ARM 6编译器中,这种定义方式已经被废弃。

要解决这个问题,可以按照以下步骤进行:

  1. 检查编译器版本:确认使用的是ARM 6编译器,可以通过编译器的版本信息或者命令行参数进行确认。
  2. 更新CMSIS文件:下载最新版本的CMSIS文件,确保使用的是与ARM 6编译器兼容的版本。可以从ARM官方网站或者其他可靠的资源获取最新的CMSIS文件。
  3. 修改静态内联函数的定义方式:在CMSIS文件中,找到使用'__STATIC_INLINE'修饰的函数声明,并将其修改为ARM 6编译器支持的方式。ARM 6编译器通常使用关键字'inline'来修饰静态内联函数。
  4. 重新编译项目:使用ARM 6编译器重新编译项目,确保修改后的CMSIS文件能够成功编译通过。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和项目要求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实用技能分享,充分利用内联函数,内联汇编,内部函数和嵌入式汇编提升代码执行效率和便捷性(2021-12-17)

因为这样才能发挥内联优势: LL库这里用关键字是__STATIC_INLINE,这个是ARMCMSIS软件包专门做定义方式,对MDK,IAR和GCC都做了适配,通用。...cmsis_armcc.h :对应MDK AC5文件 cmsis_gcc.h : 对应各种基于GCC编译器文件 cmsis_clang.h : 对应MDK AC6文件 cmsis_iccarm.h...: 对应IAR头文件 比如我们常用函数__set_MSP设置主堆栈指针,实现如下: 又比如32bit变量赋值原子操作,由于要用到互斥指令ldrex和strex,通过内联汇编,就可以方便在各种编译器里实现...内部函数编译为内联代码,作为单个指令或作为一小段指令序列,一般用双下划线 (__) 标记 针对内部函数,ARMCMSIS软件包也是做了一大批,主要分两类: 1、一类是CPU使用内部函数,部分截图...2、另一类是SIMD指令,这个在CMSIS-DSP库里面被大量应用,主要使用操作加速,下面是部分截图: 四、嵌入式汇编: 现在xxxx.S启动文件和各种RTOSPort移植,都是采用汇编文件(或者内联汇编

1.2K30

__disable_irq() 和 __enable_irq()定义在哪?

直接在工程里搜索,确实只能在cmsis_armcc.h文件里看到下面的两处注释说明,并没有这俩函数具体定义。 可是如果直接去调用这俩函数的话,编译又不会报错,那么这俩函数定义到底在哪呢?...__disable_irq() 和 __enable_irq() 是所谓intrinsic函数,编译器自动识别并替换为相关指令,它们其实是编译器一部分,实际定义位于arm_compat.h 文件...defined(__ARM_ARCH_PROFILE) || __ARM_ARCH_PROFILE != 'M' || // __ARM_ARCH != 6) && !...(void) { #if __ARM_ARCH >= 6 __asm__ __volatile__("cpsie f"); #else /* __ARM_ARCH < 6 */ unsigned...如果想真正禁止中断产生的话,还得源头上配置相关外设寄存器关掉中断才行。

15510

【STM32F429DSP教程】第6ARM DSP源码和库移植方法(MDK5AC5和AC6

mod=viewthread&tid=94547 第6章   ARM DSP源码和库移植方法(MDK5AC5和AC6) 本期教程主要讲解ARM官方DSP源码和库移植以及一些相关知识介绍。...6.1 初学者重要提示 6.2 DSP库下载和说明 6.3 DSP库版本区别 6.4 DSP库几个重要预定义宏含义 6.5 使用MDKAC6编译器优势 6.6 DSP库在MDK上移植(AC5...鉴于MDKAC6ARM Compiler 6.X)编译器在浮点处理上强劲性能,每个例子将必做一个AC6版,而且ARM编译好DSP库也开始直接采用AC6。  ...打开固件库里面的CMSIS文件,可以看到如下几个文件: 其中DSP文件夹是我们需要: Examples文件文件如下,主要是提供了一些例子: Include文件夹里面是DSP库文件: Lib文件夹里面是...但AC5和AC6工程上有三处区别,这里着重指出下:   第1处,采用AC6编译器   第2处,警告类型选择AC5-lik   第3处,MDKAC6工程代码如果有源文件是GBK编码,而且使用汉字,MDK

1.1K20

【STM32H7DSP教程】第6ARM DSP源码和库移植方法(MDK5AC5和AC6

mod=viewthread&tid=94547 第6章   ARM DSP源码和库移植方法(MDK5AC5和AC6) 本期教程主要讲解ARM官方DSP源码和库移植以及一些相关知识介绍。...6.1 初学者重要提示 6.2 DSP库下载和说明 6.3 DSP库版本区别 6.4 DSP库几个重要预定义宏含义 6.5 使用MDKAC6编译器优势 6.6 DSP库在MDK上移植(AC5...鉴于MDKAC6ARM Compiler 6.X)编译器在浮点处理上强劲性能,每个例子将必做一个AC6版,而且ARM编译好DSP库也开始直接采用AC6。  ...打开固件库里面的CMSIS文件,可以看到如下几个文件: 其中DSP文件夹是我们需要: Examples文件文件如下,主要是提供了一些例子: Include文件夹里面是DSP库文件: Lib文件夹里面是...但AC5和AC6工程上有三处区别,这里着重指出下:   第1处,采用AC6编译器:   第2处,警告类型选择AC5-like:   第3处,MDKAC6工程代码如果有源文件是GBK编码,而且使用汉字,

1.5K10

【STM32F407DSP教程】第6ARM DSP源码和库移植方法(MDK5AC5和AC6

mod=viewthread&tid=94547 第6章   ARM DSP源码和库移植方法(MDK5AC5和AC6) 本期教程主要讲解ARM官方DSP源码和库移植以及一些相关知识介绍。...6.1 初学者重要提示 6.2 DSP库下载和说明 6.3 DSP库版本区别 6.4 DSP库几个重要预定义宏含义 6.5 使用MDKAC6编译器优势 6.6 DSP库在MDK上移植(AC5...鉴于MDKAC6ARM Compiler 6.X)编译器在浮点处理上强劲性能,每个例子将必做一个AC6版,而且ARM编译好DSP库也开始直接采用AC6。...打开固件库里面的CMSIS文件,可以看到如下几个文件: 其中DSP文件夹是我们需要: Examples文件文件如下,主要是提供了一些例子: Include文件夹里面是DSP库文件: Lib文件夹里面是...但AC5和AC6工程上有三处区别,这里着重指出下:   第1处,采用AC6编译器:   第2处,警告类型选择AC5-like:   第3处,MDKAC6工程代码如果有源文件是GBK编码,而且使用汉字,

78530

【教程】如何用GCC“零汇编”白嫖MDK

虽然这三个编译器都是由Arm所维护和提供,但前两者算是彼此兼容编译器: 使用共同 armlink 使用相同方式来描述地址空间布局(分散加载脚本 scatter script) Arm Compiler...---- 值得注意是:有时候,某些芯片会提供面向Arm Compiler 5或者Arm Compiler 6system_xxxx.c,其实我们完全可以拷贝出来直接替换掉这里 system_ARMCM7...选项卡中选择对应芯片,这样MDK会自动将目标芯片头文件路径加入编译器文件搜索列表。...目标芯片没有针对MDKCMSIS-Pack,而只提供了目标芯片文件(包含了寄存器定义等等) 此时,我们需要将目标芯片文件拷贝到工程目录下,并收工将对应路径添加到编译器文件搜索列表。...在Github上最新版本,优化了gcc部署体验——也能像Arm Compiler 5以及Arm Compiler 6那样简单拖放lib即可完成部署: 具体步骤如下: 1、通过下面连接获取最新版本

1.7K10

i.MX RT1062 嵌套中断向量控制器NVIC

类型为 IRQn_Type,在头文件MIMXRT1062.h定义,代码如下: typedef enum IRQn { /* Auxiliary constants */ NotAvail_IRQn...CMSIS-Core 是ARM为了屏蔽不同厂商之间操作内核差异,提供了一层抽象层,只要是ARM Cortex-M内核都可以调用CMSIS-CoreAPI去操作,其核心就是一个头文件core_cm7...)IRQn) & 0x1FUL)); __DSB(); __ISB(); } } 细心同学不难发现,这两个API传入参数,刚好是在MIMXRT1062.h头文件中断号枚举类型...IRQn_Type,所以,你应该知道如何使用了吧~ 在 NXP 提供 FSL固件库fsl_common.h,对CMSIS-Core提供API再次进行了封装: /*!...代码分析 该实验核心逻辑都在 source 文件 gpio_input_interrupt.c 文件。 4.1.

81930

TencentOS tiny 内核移植参考指南(IAR版)

; port_s.S 文件是TencentOS tiny任务调度汇编代码,主要做弹栈压栈等处理,port_c.c适配systick等,这两个文件 每个IP核和编译器都是不一样,如果您芯片是ARM...Cortex M核,我们都已经适配好,比如现在我们移植芯片是STM32L073RZ,是ARM Cortex M0+核,使用编译器是IAR,所以我们选择arch\arm\arm-v7m\cortex-m0...+\iccarm下适配代码,如果你开发板是STM32F429IG,M4核,编译器是GCC,则可以选择arch\arm\arm-v7m\cortex-m4\gcc目录下适配文件。...添加cmsis os源码 cmsis os是TencentOS tiny为了兼容cmsis标准而适配OS抽象层,可以简化大家将业务其他RTOS迁移到TencentOS tiny工作量,我们在IAR...文件; TencentOS tiny所有要添加文件目录如下: [ce46270ddd79961cf98c5e740cb894ea.png] 6.

1.9K60

TencentOS tiny 内核移植参考指南(Keil版)

2.准备编译器环境 本移植指南针对是Keil编译器,所以我们移植内核前需要先安装Keil编译器,能编译ARM Cortex M核Keil编译器现在也叫MDK,最新版本5.28a,下载地址为:https...代码仓直接拷贝过来即可,而board目录下则放入我们前面生成裸机工程代码,我们移植开发板取名叫NUCLEO_L073RZ,裸机代码全部拷贝到下面即可,如下图所示: [b8bd75a9baec5d5f11a3505014f9ba46...,port_c.c适配systick等,这两个文件 每个IP核和编译器都是不一样,如果您芯片是ARM Cortex M核,我们都已经适配好,比如现在我们移植芯片是STM32L073RZ,是ARM...Cortex M0+核,使用编译器是KEIL,所以我们选择arch\arm\arm-v7m\cortex-m0+\armcc下适配代码,如果你开发板是STM32F429IG,M4核,编译器是GCC...添加cmsis os源码 cmsis os是TencentOS tiny为了兼容cmsis标准而适配OS抽象层,可以简化大家将业务其他RTOS迁移到TencentOS tiny工作量。

3.5K60

TencentOS tiny 内核移植参考指南(GCC版)

2.准备编译器环境 本移植指南针对是GCC编译器,所以我们移植内核前需要先安装GCC编译器,能编译ARM Cortex M核GCC编译器下载地址为:https://developer.arm.com....png] 如上图所示,下载windows exe版本gcc编译器(Linux下也可以下载linux版本编译器),下载完成在windows环境下按照提示安装,如下图, [af5ef27546cb033cc925929a42f6d989...任务调度汇编代码,主要做弹栈压栈等处理,port_c.c适配systick等,这两个文件 每个IP核和编译器都是不一样,如果您芯片是ARM Cortex M核,我们都已经适配好,比如现在我们移植芯片是...,M4核,编译器是keil,则可以选择arch\arm\arm-v7m\cortex-m4\armcc目录下适配文件。...添加cmsis os源码 cmsis os是TencentOS tiny为了兼容cmsis标准而适配OS抽象层,可以简化大家将业务其他RTOS迁移到TencentOS tiny工作量。

2K31

【教程更新】Arm-2D公开课你错过了么?

本身占用RAM极小; 支持最高优化等级(-O3,-Os,-Oz,-Ofast,-Omax,-Omin) 支持Arm Compiler 5Arm Compiler 6、GCC和LLVM(理论上也支持IAR...: 2、将Arm-2D添加到MDK工程 在工程管理器中新建一个名为“Arm-2D”分组,并将文件夹“Arm-2D/Library”下“Include”和“Source”中所有内容都添加到分组: 为了获取...具体步骤如下: 1、通过git工具将最新版本CMSIShttps://github.com/ARM-software/CMSIS_5 develop 分支下载到本地。...在工程管理器,找到CMSIS,在右键弹出菜单中选择“Options for Component Class 'CMSIS'”: 在弹出窗口中选中DSP,并切换到 C/C++选项卡,如果你使用Arm...END_IMPL_ARM_2D_REGION_LIST() 这里,“列表名称”实际上就是列表变量名,而“列表变量修饰” 则是大家熟悉类型修饰符,比如 static、const 一类——正确使用修饰符既可以节省

68120

【喂到嘴边了模块】准备徒手撸GUI?用Arm-2D三分钟就够了

2021年3月31日在Github上公开算起,Arm-2D已经青涩逐渐成熟(0.9.x版本一路进化到 1.0.0-preview)、寄人篱下到自立门户(拥有了不久即将公开独立仓库 https...步骤四:添加代码 在 main() 函数所在源代码文件包含头文件: #include "arm_2d.h" 并在 main()函数完成对 arm-2d 初始化: int main(void)...END_IMPL_ARM_2D_REGION_LIST() 这里,“列表名称”实际上就是列表变量名,而“列表变量修饰” 则是大家熟悉类型修饰符,比如 static、const 一类——正确使用修饰符既可以节省...问题二:编译时报告与 ARM_PRIVATE() 相关错误 这类问题是由于你 MDK 工程存在独立 CMSIS,且该 CMSIS 与 RTE中所添加 CMSIS 存在冲突(工程 CMSIS...此外,要检查你是否正确开启了 GNU 扩展和对应C标准(Arm Compiler 5要开启 C99,Arm Compiler 6要开启 gnu99) 问题三:提示找不到__aeabi_assert

1.7K30

【STM32F407开发板用户手册】第1章 初学STM32F407准备工作

2、  调试器使用JLINK,CMSIS-DAP,ULINK或者STLINK均可。 3、  配套开发板是安富莱:STM32-V5开发板,MCU是STM32F407IGT6。...F407GPIO最高翻转速度为90MHz,F1最大翻转速度只有18MHz。   F1最多可提供5个UART串口,F407最多可以提供6个UART串口。  ...针对我们这个教程来说,当前还用不到这些东西,主要用到CMSIS软件包里面的如下头文件即可(不同版本,截图中文件可能不同,这个软件包是一直在更新,下面的截图版本是V5.5.1): 这个软件包可以在三个地方获取...通过GitHub获取也比较方便,地址:https://github.com/ARM-software/CMSIS_5 。点击右上角就可以下载CMSIS软件包了。...对芯片外设、存储器等进行了详细描述,编译器要用到这个文件,不同系列芯片有不同SVD文件。以STM32F407为例,在MDKoption选项里面可以看到以svd为后缀文件被调用。

5.8K25

【教程更新】一网打尽Arm-2D资料和傻瓜部署教程

作为一个资料综合贴,本文希望能够帮您解决以下问题: Arm-2D公开课和对应资料贴哪里找 Arm-2D傻瓜图文部署教程 Arm-2D依赖哪个版本CMSIS?...本身占用RAM极小; 支持最高优化等级(-O3,-Os,-Oz,-Ofast,-Omax,-Omin) 支持Arm Compiler 5Arm Compiler 6、GCC和LLVM(理论上也支持IAR...: 2、将Arm-2D添加到MDK工程 在工程管理器中新建一个名为“Arm-2D”分组,并将文件夹“Arm-2D/Library”下“Include”和“Source”中所有内容都添加到分组:...具体步骤如下: 1、通过git工具将最新版本CMSIShttps://github.com/ARM-software/CMSIS_5 develop 分支下载到本地。...END_IMPL_ARM_2D_REGION_LIST() 这里,“列表名称”实际上就是列表变量名,而“列表变量修饰” 则是大家熟悉类型修饰符,比如 static、const 一类——正确使用修饰符既可以节省

2.1K60

【安富莱STM32H7教程】第1章 初学STM32H7准备工作

针对我们这个教程来说,当前还用不到这些东西,主要用到CMSIS软件包里面的如下头文件即可(不同版本,截图中文件可能不同,这个软件包是一直在更新,下面的截图版本是V5.3.0): ?...通过GitHub获取也比较方便,地址:https://github.com/ARM-software/CMSIS_5 。点击右上角就可以下载CMSIS软件包了。 ?...当然,也可以在ARM官网下载,只是这两年ARM官网升级得非常频繁,通过检索功能找资料非常麻烦。所以不推荐大家到ARM官网下载资料了。 下面为大家简单介绍下CMSIS软件包里面这几个文件夹: ?...对芯片外设、存储器等进行了详细描述,编译器要用到这个文件,不同系列芯片有不同SVD文件。以STM32H7为例,在MDKoption选项里面可以看到以svd为后缀文件被调用。 ?...1.8   STM32H7调试方法 STM32H7调试方法主要分为两大类: 1、MDK和IAR编译器自带调试     MDK调试方法在第5章进行了详细讲解。

1.7K40

【STM32F429DSP教程】第7章 ARM DSP源码和库移植方法(IAR8)

通过GitHub获取也比较方便,地址:https://github.com/ARM-software/CMSIS_5 。点击右上角就可以下载CMSIS软件包了。...打开固件库里面的CMSIS文件,可以看到如下几个文件: 其中DSP文件夹是我们需要: Examples文件文件如下,主要是提供了一些例子: Include文件夹里面是DSP库文件: Lib文件夹里面是...MDK(ARM),IAR和CGG版库文件: Projects文件夹里面的文件如下,提供了三个版本工程模板,每个模板里面都是把所有源码文件添加了进来: Source文件文件如下,这个是DSP源码文件...7.5.1  第一步:建立IAR工程并添加DSP库 为了方便起见,我们这里不再专门建立一个MDK工程了,直接以V6开发板例子:V6-001_跑马灯例程为模板(注意,要使用我们HAL版本例子)进行添加即可...: 7.5.2  第二步:添加头文件路径 添加DSP所需文件路径,这个头文件路径是已经在模板工程添加好,这里只是跟大家强调一下: 这里要注意一点,为什么直接添加路径Libraries\CMSIS

82420

【STM32F407DSP教程】第7章 ARM DSP源码和库移植方法(IAR8)

通过GitHub获取也比较方便,地址:https://github.com/ARM-software/CMSIS_5 。点击右上角就可以下载CMSIS软件包了。...打开固件库里面的CMSIS文件,可以看到如下几个文件: 其中DSP文件夹是我们需要: Examples文件文件如下,主要是提供了一些例子: Include文件夹里面是DSP库文件: Lib文件夹里面是...MDK(ARM),IAR和CGG版库文件: Projects文件夹里面的文件如下,提供了三个版本工程模板,每个模板里面都是把所有源码文件添加了进来: Source文件文件如下,这个是DSP源码文件...7.5.1  第一步:建立IAR工程并添加DSP库 为了方便起见,我们这里不再专门建立一个MDK工程了,直接以V6开发板例子:V7-001_跑马灯例程为模板(注意,要使用我们HAL版本例子)进行添加即可...: 7.5.2  第二步:添加头文件路径 添加DSP所需文件路径,这个头文件路径是已经在模板工程添加好,这里只是跟大家强调一下: 这里要注意一点,为什么直接添加路径Libraries\CMSIS

1.2K20

移动和嵌入式设备上也能直接玩机器学习?

训练目前通常在服务器或类似设备上发生,而推理则更多地转移到网络边缘,这正是新版本 Arm NN 重点所在。 ?...软件开发人员面临可能是很多不同平台,这就带来一个现实问题:CPU 通常包含多个内核(在 Arm DynamIQ big.LITTLE,甚至还有多种内核类型),还要考虑 GPU,以及许多其他类型专用处理器...Arm 对 Google NNAPI 支持概览 CMSIS-NN CMSIS-NN 是一系列高效神经网络内核集合,其开发目的是最大程度地提升神经网络性能,减少神经网络在面向智能物联网边缘设备...借助基于 CMSIS-NN 内核神经网络推理,运行时/吞吐量和能效可提升大约 5 倍(下篇文章会对 CMSIS-NN 进行介绍)。 ?...Arm NN 未来发展 这只是 Arm NN 第一步:我们还计划添加其他高级神经网络作为输入,对 Arm NN 调试程序执行进一步图形级别优化,覆盖其他类型处理器或加速器……请密切关注今年发展

1.8K90

内联函数 c-实用技能分享,充分利用内联函数,内联汇编

因为这样才能发挥内联优势:   LL库这里用关键字是,这个是ARMCMSIS软件包专门做定义方式,对MDK,IAR和GCC都做了适配,通用。   ...二、内联汇编Inline :   内联汇编可以将汇编程序指令直接插入到 C 或 C++ 函数。通常,如果需要访问在 C 不可访问硬件资源或者编写时间关键代码序列,使用内联汇编非常方便。   ....h :对应MDK AC5文件   .h: 对应各种基于GCC编译器文件   .h : 对应MDK AC6文件   .h : 对应IAR头文件   比如我们常用函数设置主堆栈指针,实现如下:...内部函数编译为内联代码,作为单个指令或作为一小段指令序列,一般用双下划线 (__) 标记   针对内部函数,ARMCMSIS软件包也是做了一大批,主要分两类:   1、一类是CPU使用内部函数,部分截图...2、另一类是SIMD指令,这个在CMSIS-DSP库里面被大量应用,主要使用操作加速,下面是部分截图:   四、嵌入式汇编:   现在xxxx.S启动文件和各种RTOSPort移植,都是采用汇编文件

74440
领券