MKD AC5升级到AC6 --c99错误解决方法

发布于 2020-02-14 03:22:19
    本帖最后由 Rses_001 于 2020-2-14 03:34 编辑


[p=30, 2, left]先说句题外话,使用KEIL这个工具有那么些年份了,算得上是我电脑上使用频率最高的软件了,没有之一,然后就是浏览器了。最近总感觉得这玩意编译越来越慢了。有的时候更新一下全局头文件,尤其是用了RTT之后,重新--target一下就得重新编译,倒杯水上个厕所转一圈回来这货还在疯狂编译中!!!!按网上的说法是要从ARMCC-v5 升级到ARMCC-v6。修改使用编译器配置后,别说,那速度,简直是坐上了火箭堪比GCC(开玩笑的~~)。反正就是舒服,没体验过好的东西之前没觉得怎么,自从体验了这快的,再也接受不了之前那慢吞吞的感觉了(RTThread也是一样,没用之前感觉啥内核都能用,用了她之后,已经不想动别的内核了:lol),遂决定之后的工程都改用AC6。[/p][p=30, 2, left]问题来了,使用官方BSP,scons --dist构建的STM32L432工程样板开始配置AC6是没问题的,之后添加了SFUD组件之后出现了异常!![/p][p=30, 2, left]AC6.png[/p][p=30, 2, left]尝试检索"c99"关键字无果后尝试检查了Sconscript文件,发现在[/p][p=30, 2, left]微信截图_20200214020735.png[/p][p=30, 2, left]这里有这个万恶的“--c99”选项,解决办法就是删掉这一判断赋值语句,或者改成“-std=c99”,使用scons重新构建工程即可。难怪检索不到。这个是写到keil工程文件里的[/p][p=30, 2, left]微信截图_20200214024822.png[/p]
[p=30, 2, left]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------[/p][p=30, 2, left]再阐述另外一个问题,添加了fal组件无法找到“fal_cfg.h”文件的问题。不重新开帖是因为我也不太清楚这个问题是作者故意这样设计的,要我们参照例程文件夹下的代码自己写一个出来还是说这个是一个错误再或者是我的用法不对。就没有必要为了这个小问题再开一帖了。[/p][p=30, 2, left]微信截图_20200214022110.png[/p][p=30, 2, left]无法找到这个头文件。还是Sconscript文件的锅~,没有把“fal_cfg.h”的路径加入CPPPATH。解决办法就是仿照上面的写法添加路径[/p][p=30, 2, left]微信截图_20200214025754.png[/p][p=30, 2, left]这只是我的处理方法,不一定规范,如果错了还请大家指正~~[/p]
[p=30, 2, left]前段时间使用RTThread-Studio完成了一个项目,整体来说这个东西真的很好用,代码关系跳转补全什么的比keil,IAR要好太多了,编译速度也快。再加上这个精心为RTThread设计的配置界面以及丰富的软件包,项目开发从未如此轻松。但是有一点缺陷让我很难接受,就是调试是动态变量内存显示。这个用MDK调试过程序的都知道,我就不多说了。这个RTThread-Studio就不行,非要叫停目标才可以读出变量,寄存器,内存的值。感觉这对调试一些硬件很不方便。尝试过修改RTThread-Studio的调试选项,没有解决。后来又使用STM32CubeIDE,这个也是基于Eclipse的IDE测试了一下,虽然有一个“动态变量”界面可以动态显示,但是不能修改,不好用,不如MDK那样的内核寄存器,外设寄存器,全局变量,可访问内存,这些都可以动态的显示出来。对于RTThread-Studio这点不清楚是没有优化好还是Eclipse没办法实现这种动态查看编辑。这也直接导致了接下来的项目只能又回归MDK,就像开始说的那样没体验过好的东西之前没觉得怎么,自从体验了这好的,再也接受不了MDK那种一根筋的跳转了。但是又脱离不了MDK,只好用VS code做编辑器,mdk管理编译调试,苦啊~~~~[/p][p=30, 2, left]这个问题我猜测会不会是不管RTThread-Studio还是STM32CubeIDE,都是使用GDB,连接调试器的GDBServer,使用这种CS结构来调试目标板。而MDK是使用API直接访问仿真器,跳过了这个服务器客户端层面,才能实现动态显示编辑这种高级功能。这个仅仅是我的猜测,如果是这样的话那短期很难更新出RTThread-Studio的动态显示了,太可惜了~~~[/p][p=30, 2, left]还有RTThread-Studio调试的时候寄存器列表里没有Cortex内核寄存器,比如说SCB这样的,有些时候要查看一下很不方便,我的目标板是STM32F745,没试过F103,有没有。[/p][p=30, 2, left]感谢RTThread,感谢RTThread团队,感谢所有推动RTThread向完美迈进的人。[/p]




查看更多

关注者
0
被浏览
307
2 个回答
rcp
rcp 认证专家 2020-02-14
感谢大佬详细经验和体验分享, studio后面会陆续完善提到的问题,持续关注哦!
armink
armink 2020-02-14
AC6 的问题可以提交个 pr 把 LOCAL_CCFLAGS 的 += 修改给删除掉吧

自动刷新变量的功能已经在 Studio 计划内了,尽情期待哈
早起鸟
早起鸟 2020-06-23
哥们,我跟你一样改了,但是发现错误更多了。
jerry2cool
jerry2cool 2020-06-23
感谢分享,我也试试ARMCC-v6去
bernard
bernard 2020-06-23
感觉是,RT-Thread Studio是否可以支持AC6,一下迈入下个阶段~~

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友