zoukankan      html  css  js  c++  java
  • keil编译器从ac5迁移到ac6

    今天在安富莱的论坛上ac6的使用方法,所以,就小试牛刀玩了玩,终于ok了。
    使用keil5.25+stm32+hal库,5.23开始才支持ac6,因此keil版本不能太低。

    可以参考:https://blog.csdn.net/ybhuangfugui/article/details/99826708

    https://blog.csdn.net/ybhuangfugui/article/details/89369067

    http://www.armbbs.cn/forum.php?m ... 5736&fromuid=58
    论坛上面有总结:
    ///////////////////////////////////////////
    编译器升级注意事项总结
    1:CMSIS、HAL,直接使用,CMSIS使用5.6稳妥
    2:使用FreeRTOS需要更改port.c,AC5使用RVDS下的,AC6使用GCC的
    3:C/C++下,见图1,使用GNC99和GNC++11
    4:AC6下中文的C文件需要更换成UTF-8,AC5如果继续使用此文件,需要在misc control下添加--locale=english
    5:养成良好习惯,可以在使用不同编译器时添加不同编译器定义
    defined ( __CC_ARM )

    #elif defined(__GNUC__)
    6:AC5/AC6相关的定义区别如图2
    7:为养成良好习惯,list、output生成的文件建议区分成AC5(AC6)
    8:  AC6定义相关指定地址,请使用section(“”name“”),或者__attribute__((section(".ARM.__at_0xxx")))
    ///////////////////////////////////////////////

    自己有一个bootloader的工程,里面使用了asm汇编,__weak 

    选择ac6之后,编译会出现很多错误,因为ac5和ac6使用不同的编译体系,因此很多嵌入式里面的扩展的关键字是不同的,如果是纯c语言,是没问题的。

    举个例子:

    error: expected identifier or '('
    __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue)

    这个时候,难道就是修改hal库吗?

    这里要是使用了新版本的keil(5.29),改关键字已经不用改了。直接编译通过。如果是低版本,需要添加../Drivers/CMSIS/Include这个path,试试看

    当然不用,一个方法可以解决这个错误。把hal库编译成lib库文件,添加到工程,这也是我刚刚发现的新方法,不用修改hal库了。(我博客中有这个编译的方法,写过文档的,)然后禁止了hal源文件就可以解决,

    硬汉的方法:当前HAL库使用AC6编译的警告有点多,可以选择使用AC5的警告临时屏蔽,提供的测试例子是采用的这种方式。

    接下去,asm编译报错,这个时候,keil有文档

    截图如下:

     

     这个时候,就需要将很多关键字迁移,我这里有asm关键字,

    迁移如下:

     

     再次编译就没有问题了,当然,还有很多关键字是需要修改的,如果你程序中使用了的话。没有使用, 就不用修改的。

    !!还有就是,如果带freertos系统,你需要修改的地方更多了,如果是裸机,基本上改动的地方不多。!!

  • 相关阅读:
    shell & awk 变量传递
    ubuntu下SVN服务器安装配置
    zabbix客户端配置
    python操作Excel读写--使用xlrd
    Zabbix Agent-Windows平台配置指导
    centos6.5下Zabbix系列之Zabbix安装搭建及汉化
    Centos 下安装Zabbix Linux 客户端
    zabbix监控mysql主从复制
    Zabbix利用msmtp+mutt发送邮件报警
    vue props传数组爬坑
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12034471.html
Copyright © 2011-2022 走看看