0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MDK编译器AC5与AC6切换的问题

冬至子 来源:梅江松子 作者:梅江松子 2023-10-16 14:16 次阅读

1.jpg

如上图所示,作者将一个工程从AC5切换到AC6后,出现编译报错。

原因是在AC5环境下,部分源文件 #include "cmsis_armcc.h"头文件,此头文件是AC5编译器下使用的。

在AC6编译器环境下,需替换成 #include "cmsis_armclang.h"文件

同时宏 __CC_ARM __ARMCC_VERSION 分别是使用AC5和AC6编译器时,MDK定义的两个全局宏

#if defined(__ARMCC_VERSION)
#include "cmsis_armclang.h"
#elif defined(__ARMCC_VERSION)
#include "cmsis_armcc.h"
#endif

即可通过这两个宏控制头文件包含

在官方的BSP board.h 文件中也有对这两个宏的引用

#if defined(__CC_ARM) || defined(__ARMCC_VERSION)
extern int Image
RW_IRAM1
Limit;
#define HEAP_BEGIN ((void *)&Image

RW_IRAM1

Limit)
#elif ICCARM
#pragma section = "CSTACK"
#define HEAP_BEGIN (__segment_end("CSTACK"))
#else
extern int __bss_end;
#define HEAP_BEGIN ((void *)&__bss_end)
#endif
#define HEAP_END STM32_SRAM_END

补充:

使用scons —target=mdk5 创建MDK5工程 是基于 BSP目录下template工程建立的,在template工程中设置编译器版本为AC6

1.jpg

2.jpg

生成的MDK工程也会是AC6,但是有一个问题就是编译后进行debug,程序无法进入

#ifdef __ARMCC_VERSION
extern int Super$main(void);
/* re-define main function */
int Sub$main(void)
{
rtthread_startup();
return 0;
}

必须先手动改成AC5,然后再改回AC6,才行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM技术
    +关注

    关注

    0

    文章

    22

    浏览量

    7382
  • MDK5
    +关注

    关注

    0

    文章

    10

    浏览量

    5780
收藏 人收藏

    相关推荐

    Triton编译器如何提升编程效率

    在现代软件开发中,编译器扮演着至关重要的角色。它们不仅将高级语言代码转换为机器可执行的代码,还通过各种优化技术提升程序的性能。Triton 编译器作为一种先进的编译器,通过多种方式提升编程效率,使得
    的头像 发表于 12-25 09:12 394次阅读

    Triton编译器的优化技巧

    在现代计算环境中,编译器的性能对于软件的运行效率至关重要。Triton 编译器作为一个先进的编译器框架,提供了一系列的优化技术,以确保生成的代码既高效又适应不同的硬件架构。 1. 指令选择
    的头像 发表于 12-25 09:09 398次阅读

    Triton编译器在机器学习中的应用

    1. Triton编译器概述 Triton编译器是NVIDIA Triton推理服务平台的一部分,它负责将深度学习模型转换为优化的格式,以便在NVIDIA GPU上高效运行。Triton编译器支持
    的头像 发表于 12-24 18:13 583次阅读

    Triton编译器与其他编译器的比较

    Triton编译器与其他编译器的比较主要体现在以下几个方面: 一、定位与目标 Triton编译器 : 定位:专注于深度学习中最核心、最耗时的张量运算的优化。 目标:提供一个高度抽象、灵活、高效
    的头像 发表于 12-24 17:25 568次阅读

    Triton编译器功能介绍 Triton编译器使用教程

    Triton 是一个开源的编译器前端,它支持多种编程语言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一个可扩展和可定制的编译器框架,允许开发者添加新的编程语言特性和优化技术
    的头像 发表于 12-24 17:23 862次阅读

    示波器ac和dc怎么切换使用

    示波器是一种用于观察和测量电信号波形的电子测量仪器,广泛应用于电子、通信、电力等领域。示波器的输入方式有AC(交流)和DC(直流)两种,根据测量信号的类型和需求,需要在AC和DC之间进行切换。 一
    的头像 发表于 08-09 15:01 2526次阅读

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如将高级语言编写的源代码转换为机器可执行的代码,还融入了人工智能技术
    的头像 发表于 07-17 18:28 1887次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 2246次阅读

    使用mdk编译时,提示警告的原因?

    在使用mdk编译时,提示警告..MiddlewarescJSONcJSON.c(2001): warning:#2803-D: unrecognized GCC pragma 我使用的是v5
    发表于 05-27 07:02

    stm32wb55cgu6用BLE_HeartRate例程,连接一会就自动断开的原因?

    沁恒的蓝牙调试助手和st的st ble toolbox都是这样 断开时间不固定,但都没几分钟肯定会断开。。 并且断开后功耗也会增加两个ma,过30秒会恢复待机状态,这边做的最小系统板, 还有另外一个问题,蓝牙栈兼容ac6吗,我使用keil,默认是ac5,使用
    发表于 05-24 08:29

    AC-AC转换的工作原理与主要类型

    AC-AC转换,即交流-交流转换,是一种将一种交流电转换为另一种交流电的电子设备。在现代电子系统中,AC-AC转换扮演着至关重要的角色
    的头像 发表于 05-23 17:09 6639次阅读

    请问TouchGFX如何用AC6编译器呢?

    最近几天 研究了下AC6编译器 ,想使用AC6 编译TouchGFX, 用ArmV5 编译 工程
    发表于 04-11 07:36

    使用mdkac6编译器一直报错是怎么回事?

    使用mdkac6编译器一直报错
    发表于 04-10 06:01

    printf在keil5AC6编译器下运行进入死循环的原因?

    Initialization ...n\");把信息显示在屏幕上,用AC5编译时运行正常,但是编译速度太慢;而用AC6编译时,速度快,但运
    发表于 04-07 06:46

    STM32CubeMX生成FreeRTOS的MDK工程不支持AC6编译器吗?

    使用STM32CubeMX生成FreeRTOS的MDK工程,选择AC5编译器可以编译成功,选择AC6编译
    发表于 03-06 08:24