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

    浏览量

    7558
  • MDK5
    +关注

    关注

    0

    文章

    10

    浏览量

    5956
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    5 GHz 802.11ac WLAN 前端模块 skyworksinc

    电子发烧友网为你提供()5 GHz 802.11ac WLAN 前端模块相关产品参数、数据手册,更有5 GHz 802.11ac WLAN 前端模块的引脚图、接线图、封装手册、中文资料
    发表于 06-18 18:33
    <b class='flag-5'>5</b> GHz 802.11<b class='flag-5'>ac</b> WLAN 前端模块 skyworksinc

    5 GHz,802.11n/ac 前端模块 skyworksinc

    电子发烧友网为你提供()5 GHz,802.11n/ac 前端模块相关产品参数、数据手册,更有5 GHz,802.11n/ac 前端模块的引脚图、接线图、封装手册、中文资料、英文资料,
    发表于 06-05 18:29
    <b class='flag-5'>5</b> GHz,802.11n/<b class='flag-5'>ac</b> 前端模块 skyworksinc

    使用STM32CubeMX生成FreeRTOS的MDK工程,选择AC6编译器有很多错误,为什么?

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

    STM32H750VBT6程序只有在调试时可以运行,为什么?

    最近在调试 STM32H750VBT6 时遇到程序只有在调试时可以运行,虽然勾选了 rest and run ,但下载完任然不运行。检查了 boot 和 reset 电压均正常。最后,是用了 AC5 编译一遍后下载,就解决了问题
    发表于 03-07 06:19

    什么样的代码会被编译器优化

    现在的编译器有多智能,可能你辛辛苦苦写的代码,在编译器看来就是几句废话,直接被删除掉。
    的头像 发表于 01-16 16:38 ?688次阅读

    Triton编译器与GPU编程的结合应用

    Triton编译器简介 Triton编译器是一种针对并行计算优化的编译器,它能够自动将高级语言代码转换为针对特定硬件优化的低级代码。Triton编译器的核心优势在于其能够识别并行模式,
    的头像 发表于 12-25 09:13 ?968次阅读

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

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

    Triton编译器在高性能计算中的应用

    高性能计算(High-Performance Computing,HPC)是现代科学研究和工程计算中不可或缺的一部分。随着计算需求的不断增长,对计算资源的要求也越来越高。Triton编译器作为一种
    的头像 发表于 12-25 09:11 ?1107次阅读

    Triton编译器的优化技巧

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

    Triton编译器的优势与劣势分析

    Triton编译器作为一种新兴的深度学习编译器,具有一系列显著的优势,同时也存在一些潜在的劣势。以下是对Triton编译器优势与劣势的分析: 优势 高效性能优化 : Triton编译器
    的头像 发表于 12-25 09:07 ?1371次阅读

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

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

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过Python接口提供了对Triton语言和编译器的访问,使得用户可以在Python环境中
    的头像 发表于 12-24 17:33 ?1074次阅读

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

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

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

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

    分享关于编译器的科普

    源代码分析工具和IDE集成。GCC被构建成一个单一的静态编译器,这使得它非常难以被作为API并集成到其他工具中。 GCC比Clang支
    的头像 发表于 12-09 09:49 ?651次阅读