嵌入式项目生成器,了解一下!

实际开发中,不同的人习惯用不同的开发工具。比如,对于STM32开发来说,可以用Keil、IAR、VSCode+GCC等。比如安富莱开发板的例程中,常常都会提供有Keil及IAR的工程:

有没有这样子的一个工具:可以同时生成多种开发环境的工程?偶然间发现的一个工具——project_generator,就是干这事的。

什么是project_generator?

project_generator是一个嵌入式项目生成器,简称progen。我们可以编写一个特定语法的YAML文件用于管理我们的项目,并根据记录中定义的规则来生成IDE项目文件。

progen官网:

https://pypi.org/project/project-generator/

progen项目生成器目前支持生成以下工具(IDE、Makefile等)的项目:

  • uVision4 和 uVision5
  • IAR
  • 生成文件 (GCC ARM)
  • 生成文件 (ARMCC)
  • Cmake (GCC ARM)
  • CoIDE (GCC ARM)
  • Eclipse(带有 GCC ARM 的 Makefile)
  • Sublime(带有 GCC ARM 的 Makefile)
  • Visual Studio(带有 GCC ARM 的 Makefile)

安装project_generator

progen依赖于Python环境,所以需要首先搭建Python环境。可以安装Python2.7.x的,也可以安装Python3.x.x的,大家可以自行安装。安装好Python环境之后,使用pip工具安装project-generator:

pip install project-generator

安装后得到:

project_generator实践

官方给我们提供了一个 baremetal blinky examples例子,我们基于这个例子实操一遍。

下载baremetal blinky examples得到:

projects.yaml就是管理我们工程的yaml文件,这个是总的yaml文件,其会引用到records中的的子yaml文件。通过projects.yaml引用的子yaml文件可以同时管理多个工程,如本例的projects.yaml内容如:

projects:
  gpio_demo_frdmk64f:
    - records/frdm_k64f.yaml
  gpio_demo_frdmkl25z:
    - records/frdm_kl25z.yaml
  gpio_demo_frdmkl46z:
    - records/frdm_kl46z.yaml
    

这里同时管理着gpio_demo_frdmk64f、gpio_demo_frdmkl25z、gpio_demo_frdmkl46z三个工程,records下对应有三个yaml文件:

下面通过progen工具来生成工程,因为progen工具是存放在Python/Scrips路径下,并且已经加入到环境变量中,所以progen工具全局有效。我们在baremetal blinky examples工程目录下执行对应命令可生成工程。

「1、生成gpio_demo_frdmk64f项目的Keil工程:」

progen generate -f projects.yaml -p gpio_demo_frdmk64f -t uvision

-p参数指定工程名;-t参数指定生成的工程。

「2、生成gpio_demo_frdmk64f项目的IAR工程:」

progen generate -f projects.yaml -p gpio_demo_frdmk64f -t iar_arm

「3、生成gpio_demo_frdmk64f项目的gcc_arm工程:」

progen generate -f projects.yaml -p gpio_demo_frdmk64f -t iar_arm

我们知道,keil等工具起初支持的芯片都比较有限,比如需要安装一些芯片支持包进行扩展,同样的,progen也是一样的,支持的开发板及芯片有限,我们可自行添加目标支持。路径如:

C:\Python27\Lib\site-packages\project_generator_definitions\target

以上就是本次关于progen项目生成器的简要分享。这个工具也是我偶然间知道的,简单了解并实践了一下,顺道分享给大家,并且也是很浅的实践分享。

关于yaml里面的内容本文并未提到,大家感兴趣的可以自行去了解学习:

https://github.com/project-generator/project_generator/wiki/Home

(0)

相关推荐

  • EEDrone开源四旋翼从零开始(3)--软件框架的讨论

    软件的框架是整个系统的基础,也同时决定了系统的广度和深度,这次我们主要讨论:操作系统,开发环境,开发步骤. 操作系统: 经过一番的讨论与摸索,最开始有这么几个方案可以选择:"NUTTX&qu ...

  • 一文了解串口打印

    之前的文章<STM32 串口详解>介绍了串口驱动,串口在嵌入式领域不仅是一个通讯接口,还是一种调试工具,其好用程度不亚于硬件仿真.有些环境不方便连接Jlink进行硬件仿真,或者并不是必现的 ...

  • httprunner 3.x学习1 - 环境安装与准备

    前言 httprunner 3.x最大的改变是执行用例用的是 python 的 pytest 框架,支持3种格式的用例:YAML/JSON/pytest 代码 对比 httprunner 2.x 以前 ...

  • 手把手教你在STM32F4上跑freeRTOS

    之前挖了图解freeRTOS的坑,挖了坑就得填.今天就从使用开始,先把freeRTOS用起来.先聊一聊在STM32F407上的如何电灯,如果只用freeRTOS点灯,无疑有点杀鸡用牛刀的感觉.但是想用 ...

  • EEDrone开源四旋翼从零开始(4)--DEMO开发

    本贴来详细介绍下Demo工程的开发过程,Demo是完整功能的基础,也可以用来做测试.这里以UART功能DEMO为例,可以从零开始自己编写,也可以参考官方例程,也可以使用cubemx生成. 打开Cube ...

  • 一个嵌入式项目从0开始开发的大致流程

    从0开始做一个嵌入式开发项目的大致流程如下: 了解需求 和客户对接了解需求,形成需求文档,双方签字,并注明后续是否可以增加需求或者方案调整. 召集人员汇聚资源 根据需求文档召集项目组,项目组一般需要硬 ...

  • 嵌入式项目中,各种包含头文件区别及利弊

    好的编程习惯,会直接影响代码的质量,在嵌入式C/C++中,头文件的引用方式和方法有多种,同时一些细节也会影响你代码质量和编译效率. 下面就来说说与头文件有关的知识: 嵌入式专栏 1 引号"& ...

  • C语言、嵌入式项目中一些常用知识及技巧:第一弹

    大家好,我是ZhengN.本次给大家分享一些C语言.嵌入式项目中的常用知识. 1.使用宏给结构体初始化 如果频繁使用一个结构体的话,使用使用宏来给结构体进行赋值是很方便的一种做法. 例子: 左右滑动查 ...

  • 深度:规范的嵌入式项目要在设计时考虑缺陷

    一个规范的嵌入式项目,在设计之处就要考虑软件缺陷的问题,那么,你有从哪些方面考虑软件缺陷呢? 概述 在高质量.高安全性的产品中,软件占据了越来越重的比例,从需求分析阶段,到软件研制,各级测试过程中,都 ...

  • 分享GitHub上一些嵌入式相关的高星开源项目

    Avem 项目链接: https://github.com/avem-labs/Avem 项目简介: 这是一个轻量级无人机飞控项目. Awesome-Embedded 项目链接: https://gi ...

  • 嵌入式相关开源项目、库、资料

    学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资料库. ...

  • 这个社区嵌入式养老项目为何成为经典?(案例详解+嵌入式养老项目商业模式总结)

    编者:万仁涛.本文采纳了周燕珉工作室.克尔瑞养老地产.上海申养官网.同济大学新闻网等自媒体及网站资料,在此一并表示感谢.全文约约3500字,建议阅读8分钟 今天我们分享一个案例,是关于社区嵌入式养老的 ...

  • 【精品博文】嵌入式3G机器人项目实战----第三方软件移植

    在系统构建中会使用一些第三方的软件,我们先把这些软件移植到我们的系统中去. 1 boa服务器移植 boa服务器是一个web服务器,在嵌入式系统中使用比较广泛. 1)         源码下载 boa下 ...

  • 【精品博文】嵌入式3G机器人项目实战——工具链的编译

    工具的获得有多种途径,第一种方法也是最简单的一种方法是在下面这个网站下载 http://www.codesourcery.com/sgpp/lite/arm/portal/release1600在这个 ...