使用Milander控制器示例在QtCreator中对微控制器进行编程的QBS模板

不久前,他帮助开发了一家名不见经传的公司Milander的微控制器。 官方的Keil开发环境。 我不喜欢它,但是处理器基于另一家鲜为人知的ARM公司的体系结构,这意味着有一个gcc编译器。 在有gcc的地方,QtCreator也可以用作IDE。

金属陶瓷盒很漂亮

引言


最初,任务非常简单。 查找构建项目所需的文件。 接受一个在stm32f407下已经完成的项目,并使用一个文件对其进行处理。 但是,在实施这样一个简单的计划期间,人们希望进行比最初想像的项目更有趣的项目。

准备工作


首先,您需要下载基于Cortex-M系列内核的微控制器的编译器和调试器。 最新版本在这里[1] 。 您还将需要QtCreator,非懒惰的可以从源代码编译,懒惰的可以到达此处[2] 。 我们还需要openocd来刷新和调试微控制器。 [3] ARM站点上针对Cortex-M的GCC编译器[9]

安装指定的软件以及所有必要的依赖项。 然后,我们开始设置环境。

在图片中设置QtCreator'a
如果未启用,请在“帮助”->“关于模块”中启用裸机支持
添加编译器

克++



海湾合作委员会



添加gdb调试器



我们创建一个openocd调试配置文件,这不是一个大问题。 配置文件的路径必须指定为绝对路径。 每个微控制器的文件是不同的,这带来了某些不便。



设置裸机



并将其放在一个集合中



微控制器库


在Milander网站上进行的粗略搜索并未产生用于与外设和微控制器内核一起使用的库的正式汇编。 该程序集支持gcc,位于github [4]上 。 组装非常容易地完成了stm32f407的项目,并且将其固定在几个地方之后,已经很高兴地渴望刷新微控制器。 编辑openocd配置文件,现在一切都在闪烁。 锁匠的工作和调试工作已经开始。 看来就这些了-轻松的胜利。 但是库支持多个微控制器。 不同内核上的微控制器也使用不同的外设库。 立刻想到创建一个项目的想法,以便您可以轻松选择所需的微控制器,环境本身将选择必要的核心库和外围设备。 当我掌握了stm32f407时,这个主意就出现了。 不能错过实现这样一个相当有趣的想法的机会。

在图书馆和qbs [5]进行的两晚选拔活动中获得了积极的结果。 可以为以下微控制器配置编译:MDR1901VC1T(19011),MDR1986VE1T(1986 BE1T),MDR1986VE3(1986 BE3),MDR1986BE4(1986 BE4x),MDR1986VE8T(1986 BE8x),MDR1986VE9x(1986 BE)。 尽管源库的描述不支持MDR1986VE8T,但是核心库和外围库文件中有一部分。 在ARM存储库中找到的一些头文件丢失了[6]

最终项目


结果是一个相当适度的模板,使您可以为多个微控制器编写项目。 将模板放在github [7]上 。 源库进行了许多修饰。 尽管我想保持与原始项目的兼容性,但我不得不分叉[8]并失去兼容性,但这是多功能性的代价。 您可以按以下方式下载项目。

git clone https://github.com/WicRus/emdr1986x-std-per-lib-qbs.git --recursive 

您还可以通过指定存储库地址并递归地打勾,直接从QtCreator克隆项目。

育种


主要结果是通用模板,该模板支持具有不同内核和外围设备库的多个微控制器。 但是,应注意以下几点:

  • 只能在MDR1986VE1T上检查固件和调试。
  • 仅针对MDR1986VE1T和MDR1986VE9x找到了目标openocd配置文件。 对于其余的控制器,您需要自己携带或书写。
  • MDR1986VE8T的库在编译时并未对此问题有太多的了解。 必须检查正确的操作。
  • 源库已发生重大变化。 可能的合并问题。
  • 为MDR1901VC1T,MDR1986BE4,MDR1986VE9x进行构建时,会发出有关过时的内核库的警告。 有必要类似MDR1986VE8T更新内核库,然后检查正确的操作。
  • 创建openocd配置的功能。 对于每种单独的微控制器类型,您可能需要在QtCreator中使用单独的构建套件。

参考文献

注意,链接将在此窗口中打开。

0. KDPV网站Milander的依据
1. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
2. https://www.qt.io/download-qt-installer
3. http://openocd.org
4. https://github.com/eldarkg/emdr1986x-std-per-lib
5. https://doc.qt.io/qbs/
6. https://github.com/ARM-software/CMSIS_5
7. https://github.com/WicRus/emdr1986x-std-per-lib-qbs
8. https://github.com/WicRus/emdr1986x-std-per-lib
9. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
编辑历史。
19/09/17添加了指向GNU Arm嵌入式工具链的链接。

Source: https://habr.com/ru/post/zh-CN467455/


All Articles