【Clion CubeMX开发STM32】(四)RTOS篇:使用ENV工具创建RT Thread项目

【Clion+CubeMX开发STM32】(四)RTOS篇 创建RT Thread项目工程(ENV工具)

  • 前言
  • 准备
  • 下载RT Thread源码
  • 创建BSP工程模版
  • 移植模版工程
  • 修改模版工程
  • 测试
  • menuconfig添加软件包
  • 添加用户代码文件夹
  • 总结
  • 前言

    前面几篇文章已经讲解了如何通过clion平台结合openOCD进行单片机开发,不过裸机开发并不能应对所有的开发场景,在复杂系统和高时效性的开发需求下,RTOS实时操作系统是单片机开发中必不可少的一环。
    在cubeMX中可以很方便的添加freertos或者rt thread等实时操作系统内核到你的项目工程中,随用随加,以freertos为例,添加freertos到你的项目工程中去,只需在cubemx中勾选上freertos即可,甚至可以不修改时钟源,使用嘀嗒定时器也能运行。

    不过,本篇文章主要介绍的是基于国产实时操作系统RT Thread及RT Thread软件包快速开发单片机项目。
    RT Thread这里不过多讲解,感兴趣的朋友可以去看看RT Thread官网,本文主要讲解如何使用RT Thread中的BSP源码通过ENV工具快速创建基于clion开发的项目工程,并通过env工具添加RT Thread在线软件包快速开发单片机项目。

    准备

    1. clion嵌入式开发环境(clion cubemx git)
    2. RT Thread源码
    3. env工具
    4. 单片机
      clion的嵌入式开发环境前面几篇文章已经讲解完了,开始本篇之前,需要你的clion能够开发裸机项目。
      git在本篇是必要选项
      单片机我使用的是stm32f103RC,这个可以使用任意型号,只要是RT Thread支持的单片机包括且不限于stm32 gd32 apm32等,具体支持名单可以在BSP中查看或去官网查看。

    下载RT Thread源码

    打开RT Thread官网

    在资源选项找到下载,随后在下载页面找到RT Thread源代码
    RT Thread提供多种下载方式,这里推荐选择gitee,点击gitee下载链接

    选择标签,找到自己需要的RT Thread版本,我选择的是4.1.0版本,不建议大家选择最新版本或者低于4.0的版本

    切换到4.1.0版本后,点击克隆,推荐git克隆,下载的zip压缩包文件可能会损坏或文件不全
    复制克隆命令后,在电脑内创建新文件夹,将源代码克隆到本地


    创建BSP工程模版

    克隆完成后,关闭git,打开克隆到本地的源代码文件夹,找到BSP文件
    在bsp文件夹下可以看到rt thread具体支持的单片机,以stm32为例,找到stm32文件夹

    ps:下载到本地的源代码,除了BSP文件,其他文件会参与到后续的scons编译,尽量不要乱删,如果下载的代码损坏了,可以重新在gitee上下载

    选择需要你的单片机型号,比如我使用的单片机为stm32f103rc,选择任意stm32f103的bsp即可,这里以战舰为例,选择warshipv3

    在该文件路径下打开env工具

    输入命令,创建工程目录

    scons --dist
    


    可以看到输入命令后,bsp文件夹内多了dist文件夹,打开后找到project

    移植模版工程

    project文件夹就是我们基于bsp创建的项目工程,将其复制到clion工程存放的文件夹内,并修改名称

    我这里将名称修改为rt_thread_env,修改后打开文件夹,并打开env工具
    输入指令

    scons --target=cmake
    

    创建cmake工程

    这一步可以在复制project文件夹前,在bsp目录下进行,然后将创建好cmake工程的文件夹复制过来,这样以后使用的时候可以省略这一步


    完成后会发现工程中多了一个cmakelist

    打开clion,打开该项目

    配置工具链
    工具链其实就是clion的嵌入式开发环境,前面的文章内有介绍

    打开后点击右上角的小锤子进行构建

    将编译用的cfg文件复制到工程目录中

    stlink使用的cfg文件,前文有介绍

    然后在clion中添加openocd


    添加好后,即可使用stlink烧录工程到单片机上

    修改模版工程

    将工程移植完毕后,还需要修改一下芯片cubemx文件,因为战舰使用的是stm32f103ze,我这里使用的是stm32f103rc
    打开board文件夹和CubeMX_Config文件夹,打开cubemx文件,这个路径很重要。

    打开后查看project manager,记住这几个参数,等会儿修改完芯片后,新的工程需要添加这几个参数,一定要一致才能覆盖掉旧的工程


    点击左上角修改芯片

    这里需要开启一个串口,因为rt thread工程默认开启一个串口用于finsh组件,不开启串口的话,等会儿会报错
    可以根据自己的板子打开led的gpio口,等会儿可以用于测试

    在rt thread软件包内有seeger rtt软件包,使用后,可以将finsh组件以及打印通过jlink rtt显示

    然后填写project manager,一定要和原来的参数移一致

    路径一定要仔细查看,很容易出错

    这里可以不用勾选,原来的bsp工程是没有勾选的,我个人习惯也建议大家勾选上,后面使用的时候会比较方便调用初始化函数


    右上角点击生成,会提示有一个存在的工程,询问是否覆盖,选择是

    完成后点击close,回到clion中

    如果正确覆盖的话,工程文件内会出现gpio.c等相关外设源文件
    在board文件夹下找到SConscript文件

    如果没有勾选生成外设.c .h文件的话,可以跳过该步骤


    打开SConscript,找到src路径,将外设gpio.c usart.c等添加进去

    打开cmakelist.txt将外设文件路径添加进去,并点击右上角重新加载cmake

    在上面的SConscript内添加好后,可以不用手动在cmakelist.txt中添加
    可以通过env工具,再次scons生成一遍cmake工程即可
    后续添加自己的代码文件夹时,会详细讲解这里的机制

    打开cubemx生成的main,c文件,将其中引用的头文件和初始化函数复制到rt thread的main.c中


    将cubemx中的main,c内的main函数和时钟函数,添加__weak修饰
    如果不添加的话,会报错,时钟函数在board.c中已经包含有

    完成后点击右上角的编译

    测试

    在main.c中添加LED闪烁代码

    编译下载后,实现两个LED灯闪烁

    menuconfig添加软件包

    上面已经移植创建完成我们需要的工程了,但是如果只是这样开发的话,那就没有必要这样移植创建rt thread工程了,之所以要这么麻烦的从BSP移植工程,就是为了能够通过env工具添加rt thread的在线软件包。
    而且通过env工具可以更加方便我们管理工程中的RT Thread,可以从容的裁切、管理rt thread
    这里对于env工具不做过多介绍,仅测试添加在线软件包。
    在项目工程下打开env工具,输入

    menuconfig
    


    随后会跳出menuconfig

    选择第三项RT-Thread online packages


    在这里可以找到所有的在线软件包,添加一个软件包测试一下,以seeger rtt为例

    选中之后,按esc退出

    选择yes保存
    然后在env中输入

    pkgs --update
    

    输入后,env便会下载软件包到工程中

    每次通过menuconfig添加或修改工程后,都需要重新生成一次cmake,这样才能更新cmakelist文件,否则编译时不会编译修改的内容

    回到clion

    找到seeger rtt中的帮助文档

    这里可以看到该软件包的使用详情

    根据readme.md中的提示完成配置
    然后编译烧录程序
    打开jlink rtt查看finsh组件是否正常显示

    添加用户代码文件夹

    当项目开发逐渐复杂之后,我们需要在项目中添加自己的用户代码,在工程内创建.c源文件和.h头文件后,将其添加到cmakelist.txt中才能使其参加编译。我们的rt thread工程的cmakelist,txt,文件是通过env工具由scons编译生成的。
    如果我们手动添加到cmakelist中的话,在下一次scons编译后,手动添加的部分会全部被删除。

    所以我们需要编写SConscript文件来管理我们的用户代码文件夹,以便进行scons编译时,能将用户代码添加到cmakelist中参加cmake编译构建。

    方法很简单,在rt thread的官方文档中,有如何编写SConscript的说明
    官方文档说明

    大家可以参照官方文档来编写SConscript,也可以直接复制main.c所在文件夹内的SConsript文件。

    总结

    一 下载BSP源码 scons –dist创建工程模版
    二 scons –target=cmake创建cmake工程
    三 修改cubemx并修改SConscript
    四 修改cmakelist
    五 menuconfig修改RT Thread
    六 pkgs –update scons –target=cmake

    作者:注意沈题!

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Clion CubeMX开发STM32】(四)RTOS篇:使用ENV工具创建RT Thread项目

    发表回复