对于学习嵌入式实时操作系统,首先第一步要进行的是搭建好对应的开发环境,只有对应的环境搭建好了,才能进行下一步的开发工作。
RT-Thread为了方便广大开发者进行入门或者深入使用,其官网提供了十分丰富的参考文档,官网的文档中心链接:
https://www.rt-thread.org/document/site/
RT-Thread的文档中心提供了入门学习,进阶学习,应用开发这三个层次的文档,开发者可以根据自己的实际情况进行选择。然而,对于一些没有基础的入门级开发者,面对如此复杂繁多的文档,难免会不知道如何下手,不知道先看哪一篇文档比较好
在上完Sean老师的课程后,我进行了一些关于搭建开发环境的总结,主要是关于ENV配置工具和BSP包的使用。
RT-Thread课程列表
在开发环境搭建之前,要先下载好ENV配置工具和RT-Thread相关源码,ENV配置工具的下载链接如下:
https://www.rt-thread.org/page/download.html
注意:在安装ENV工具之前,需要确保电脑已经正确安装了Git管理工具并配置到系统的环境变量当中,Git管理工具可以从以下链接进行下载,具体安装方式可自行上网查询。
https://git-scm.com/downloads
ENV工具的安装路径不能包含中文和空格,应该使用全英文路径。
RT-Thread的相关源码,下载链接:
https://gitee.com/rtthread/rt-thread?_from=gitee_search
下载完成后,解压出来的文件夹如下图所示。
关于ENV工具的使用
ENV是RT-Thread提供的一个辅助开发工具,使用ENV可以很方便地构建出RT-Thread的工程项目。ENV提供了IAR、MDK、GCC工程的构建,集成了menuconfig配置裁剪工具,软件包管理功能,等等。
其中,menuconfig管理工具,沿用的是Linux kernel的Kconfig机制,当RT-Thread内核需要增加或减少某个功能时,可以使用menuconfig方便地进行配置,而不用从源码端一步步进行移植,提供了开发者的开发效率。
关于ENV工具的使用方法,可以参考RT-Thread的官方文档里面关于ENV的章节,有详细的介绍。
https://www.rt-thread.org/document/site/programming-manual/env/env/#
关于BSP包的使用
RT-Thread针对不同的芯片平台,提供了一些已经构建好的BSP(Board Support Package)板级支持包,开发者可以直接使用这些BSP包进行扩展开发,目前RT-Thread提供的BSP包如下图所示。
由于介子开发板使用的主控芯片是AT32F407,所以,开发板是可以基于at32这个BSP包进行开发的。进入bsp/at32/at32f407-start目录,可以看到BSP包的主要构成包括:工程模板,通过scons构建的工程,rtconfig.py构建脚本等,如下图所示。
在安装和配置好ENV工具后,在at32f407-start目录里面,右键打开ENV工具命令行终端,如下图所示。
RT-Thread是使用scons命令来进行工程构建的,如果是使用IAR或MDK来进行工程开发,可以使用以下命令构建对应的工程。构建IAR工程:scons --target=iar。构建MDK工程:scons --target=mdk5或scons --target=mdk4
menuconfig是一种图形化配置工具,,开发者可以使用menuconfig工具对RT-Thread内核进行配置和裁剪,关于menuconfig的快捷键介绍,如下图所示。
注意,每次使用menuconfig对BSP进行配置后,都需要使用scons命令对相应的工程进行重新生成,以便配置能生效。
细心的开发者会发现,对于at32f407开发板,其BSP包里面的工程,需要依赖整个RT-Thread源码才能被正确编译,然而整个RT-Thread源码里面又包含了其他跟AT32不相关的BSP包,这样会导致整个工程很庞大和臃肿。
为了让BSP包生成跟AT32芯片相关的工程项目,移除其他不相关的芯片BSP包,可以使用以下命令:scons --dist,命令执行后,会在BSP包目录里面生成dist目录,这个目录里面包含了整个AT32的工程,可以把这个工程复制到任何目录下使用,如下图所示。
要使用一个BSP包进行开发,一般会经过以下步骤:
1、使用menuconfig命令,对RT-Thread的内核和组件进行配置。
2、配置完成后,根据自己的编译器情况,使用scons --target=xxx生成对应的工程。
3、打开对应的工程,即可进行代码编写开发。
4、可以使用scons --dist命令,移除不相关的芯片,把工程单独抽离出来。
通俗地总结一下,ENV是一个工具包,这个工具包里面集成了一些命令,我们只需要在ENV的命令行窗口输入指定的命令就可以进行对应的操作。
menuconfig是工具包里面其中一个命令,这个命令可以调用一个图形化配置界面,可以让开发者方便地对RT-Thread内核进行配置和修改。
scons也是工具包里面其中个一个命令,这个命令是用来构建我们常用的IAR或MDK工程的,使用scons命令,就可以很方便地生成IAR或MDK工程,这样就不用手动地往工程里面添加源文件和头文件。