大家好,程序员,硬件和所有对此表示同情的人。 我想简要介绍一下Qt Creator IDE的功能以及有关微控制器编程的QBS构建系统。 这个主题对谁感兴趣,欢迎关注。
就在前几天,
Qt Creator 4.10版本悄无声息地发布了,它为使用微控制器(在普通人中称为“裸机”设备)增加了一些改进。 此版本的Qt Creator集成了
QBS 1.14构建系统,该系统也有新的改进。 其中一些改进将在下面讨论。
Qt Creator的改进
所有这些改进仅在启用BareMetal插件时可用,该插件通过菜单“帮助->关于插件->设备支持-> BareMetal”激活。
- 现在支持三种新的编译器,有关其的基本信息在下表中给出:
注意:值得注意的是,IAR EW和KEIL提供的针对不同体系结构的产品由单独的软件包提供,这些软件包必须独立安装。 与此不同的是,SDCC编译器可同时支持多种架构。
- 现在,在“工具->选项->套件->编译器->自动检测”选项卡上自动检测到这些新的编译器。
例如,对我来说,它看起来像这样:

注意:如您所见,对于C ++,没有用于MCS51的KEIL编译器,这是正确的,因为 此编译器仅支持C。此外,出于相同的原因,此处也将缺少SDCC编译器。
- 也可以通过菜单“工具->选项->套件->编译器->添加”来手动添加这些新的编译器:

- 对于编译器,将自动确定其ABI(体系结构,格式和字宽)。 只需单击编译器即可查看有关此信息。
例如,对于我的IAR EW和体系结构8051(MCS51),它看起来像这样:

注意:在这种情况下,选择了自动检测到的编译器,因此此处的ABI字段处于非活动状态。 但是,当手动添加编译器时,如果由于某种原因而确定错误,则用户可以选择正确的ABI。
- 对于编译器,将自动检测其所有宏。 因此,它们将在代码编辑器中正确突出显示。
注意:只有某些编译器的关键字(例如8051体系结构)的关键字例外,该关键字将以警告突出显示。 但这是另一个故事。
- 对于编译器,将自动检测带有其头文件的目录。 因此,它们将在代码编辑器中正确突出显示。
- 实现了这些新编译器的错误和警告解析器,这些解析器显示在“问题”面板中。
QBS的改进
QBS将是此审查的组成部分,因此有必要谈论其改进:
- 新增了对这些新编译器的支持(自1.13版以来,其中的一些编译器)。
- 实现了自动检测已安装的编译器和创建配置文件的功能。 什么是qbs-setup-toolchains实用程序。
就我而言,它看起来像这样:
c:\Qt-meta\Tools\QtCreator\bin>qbs-setup-toolchains.exe --detect ... Trying to detect IAR toolchains... Profile 'iar-arm' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3/arm/bin/iccarm.exe'. Profile 'iar-mcs51' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/8051/bin/icc8051.exe'. Profile 'iar-avr' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/avr/bin/iccavr.exe'. Trying to detect KEIL toolchains... Profile 'keil-mcs51' created for 'C:/Keil_v5/C51/BIN/c51.exe'. Profile 'keil-arm' created for 'C:/Keil_v5/ARM/ARMCC/bin/armcc.exe'. Trying to detect SDCC toolchains... No SDCC toolchains found. ...
要查看在那里发现的内容,可以使用qbs-config-ui GUI实用程序。
就我而言,它看起来像这样:

创建项目的功能
重要的是要有一个想法,并能够正确地为
cpp和
qbs模块填写项目属性。
让我们集中讨论其中最重要的部分,并更详细地考虑它们:
要为链接器指定脚本文件,必须使用特殊标记“ linkerscript”,例如:
Group { name: "Linker Scripts" fileTags: ["linkerscript"] files: ["cfg3soim.xcl", "cfgcan128.xcl"] }
注意:原因是对于不同的编译器,有不同的选项来命名这些文件。 对于相同的GCC,它可以是带有* .ld,*。x,*。xn,*。xbn等扩展名的文件(对于其他编译器可以说什么……)。 因此,决定不再费心标记特定编译器的所有可能文件扩展名,而只是将linkerscript标记用于其预期的目的和情况。为了了解其工作原理,QBS提供了一组简单的
示例 ,这些
示例仅“猛拉”一条腿并使LED闪烁。
什么是调试
不幸的是,调试情况令人遗憾。 产品(IDE)IAR EW和KEIL使用其调试器,但由于 由于这些产品是专有产品,因此不可能在某处获得有关这些调试器协议操作的描述。 唯一的选择是尝试对Eclipse的插件进行反向工程(例如,IAR EW提供了这些插件),但这需要认真的动力。
但是如果我说对于ARM体系结构可以使用GDB调试器,我会有些高兴。 至少对IAR EW来说,它对我有用(但是,KEIL无法解决问题,也许应该向那里的链接器指示一些其他标志)。
接下来是什么
在这里,我有点讨人喜欢,我会说在下一个版本(我不知道是哪个版本)中,应该添加STM8和MSP430体系结构,并且QBS生成器将在本机IAR EW和KEIL项目中实现(这将使例如调试项目成为可能)。
在此结束我的故事,谢谢所有关注此评论的人。