RT-Thread (基础篇_1) | 开发环境搭建及介绍

说在前面:

前面写了一些文章都是有关单片机的,也就是裸机。那么接下里这个专题的文章主要是学习记录 RTOS 实时系统的专栏,专栏针对的是有裸机基础的同学。实时系统为什么选择RT-Thread(后面都简称 “RTT”)呢?一是支持国产,更多的是RTT的确做得问好,对接裸机跳跃到系统是很完美的。而且RTOS基本上都是想通的,只要认真弄懂一个操作系统入门,那么后面就是水到渠成的。

正文:

由于RTT的开发环境有很多,这里所指的开发环境搭建主要是基于MDK_5 和ENV工具。如果习惯别的开发环境那么可以自行上官网了解更多。对于自学学生党最好的就是不用开发板也可以自如的免费仿真学习系统。详细内容

 

准备工具:

  1. Keil_MDK5(这里介绍一个嵌入式大牛博客对MDK写的很详细);
  2. ENV工具(本文重点讲解):

 

Env 安装及用户手册

在学习内核项目工程移植的时候我们会需要配置一些头文件或者参数,手动配置效率低还容易出错,所以RTT官方给出了这个配置工具。Env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其中其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。

主要特性

  • menuconfig 图形化配置界面,交互性好,操作逻辑强;
  • 丰富的文字帮助说明,配置无需查阅文档;
  • 使用灵活,自动处理依赖,功能开关彻底;
  • 自动生成 rtconfig.h,无需手动修改;
  • 使用 scons 工具生成工程,提供编译环境,操作简单;
  • 提供多种软件包,模块化软件包耦合关联少,可维护性好;
  • 软件包可在线下载,软件包持续集成,包可靠性高;

准备工作

Env 工具包含了 RT-Thread 源代码开发编译环境和软件包管理系统。

  • 从 RT-Thread 官网下载 Env 工具。
  • 在电脑上装好 git,软件包管理功能需要 git 的支持。git 的下载地址为,根据向导正确安装 git,并将 git 添加到系统环境变量。
  • 注意在工作环境中,所有的路径都不可以有中文字符或者空格。

Env 的使用方法

打开 Env 控制台

RT-Thread 软件包环境主要以命令行控制台为主,同时以字符型界面来进行辅助,使得尽量减少修改配置文件的方式即可搭建好 RT-Thread 开发环境的方式。 打开 Env 控制台有两种方式:

方法一:点击 Env 目录下可执行文件

进入 Env 目录,可以运行本目录下的 env.exe,如果打开失败可以尝试使用 env.bat

方法二:在文件夹中通过右键菜单打开 Env 控制台

Env 目录下有一张 Add_Env_To_Right-click_Menu.png(添加 Env 至右键菜单.png) 的图片,如下:

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第1张图片

根据图片上的步骤操作,就可以在任意文件夹下通过右键菜单来启动 Env 控制台。效果如下:

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第2张图片

注意事项

因为需要设置 Env 进程的环境变量,第一次启动可能会出现杀毒软件误报的情况,如果遇到了 杀毒软件误报 ,允许 Env 相关程序运行,然后将相关程序添加至白名单即可。

Env 工具配置

  • 新版本的 Env 工具中加入了自动更新软件包和自动生成 mdk/iar 工程的选项,默认是不开启的。可以使用 menuconfig -s/--setting 命令来进行配置。

  • 使用 menuconfig -s 命令进入 Env 配置界面

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第3张图片

按下回车进入配置菜单,里面共有 3 个配置选项

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第4张图片

3 个选项分别为:

  • 软件包自动更新功能:在退出 menuconfig 功能后,会自动使用pkgs --update命令来下载并安装软件包,同时删除旧的软件包。本功能在下载在线软件包时使用。

  • 自动创建 MDK 或 IAR 工程功能:当修改 menuconfig 配置后 ,必须输入 scons --target=xxx 来重新生成工程。开启此功能,就会在退出 menuconfig 时,自动重新生成工程,无需再手动输入 scons 命令来重新生成工程。

  • 使用镜像服务器下载软件包:由于大部分软件包目前均存放在 GitHub 上,所以在国内的特殊环境下,下载体验非常差。开启此功能,可以通过 国内镜像服务器 下载软件包,大幅提高软件包的下载速度和稳定性,减少更新软件包和 submodule 时的等待时间,提升下载体验。

Env 工具使用注意事项

注意事项

  • 第一次使用 Env 推荐去官网下载最新版本的 Env 工具,新版本的 Env 会有更好的兼容性,也支持自动更新的命令。
  • 可以使用 Env 内置命令 pkgs --upgrade 来更新软件包列表和 Env 的功能代码,这样可以最大程度避免遇到已经修复的问题。
  • Env 所在路径不要有中文或者空格存在。
  • BSP 工程所在的路径不要有中文或者空格存在。

到此我们的环境就搭建好了。下面是使用工具来编程配置BSP软件包方法方法

编译 BSP

scons 是 RT-Thread 使用的编译构建工具,可以使用 scons 相关命令来编译 RT-Thread 。

第一步:切换到 BSP 根目录

  • 打开控制台后,可以在命令行模式下使用 cd 命令切换到你想要配置的 BSP 根目录中。

例如工程目录为: rt-thread\bsp\stm32f429-apollo :

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第5张图片

第二步:bsp 的编译

  • Env 中携带了 Python & scons 环境,只需在 rt-thread\bsp\stm32f429-apollo 目录中运行 scons 命令即可使用默认的 ARM_GCC 工具链编译 bsp。

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第6张图片

编译成功:

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第7张图片

如果使用 mdk/iar 来进行项目开发,可以直接使用 BSP 中的工程文件或者使用以下命令中的其中一种,重新生成工程,再进行编译下载。

scons --target=iar
scons --target=mdk4
scons --target=mdk5

更多 scons 教程,请参考 《Scons 构建工具》

BSP 配置:menuconfig

menuconfig 是一种图形化配置工具,RT-Thread 使用其对整个系统进行配置、裁剪。

快捷键介绍

进入 BSP 根目录,输入 menuconfig 命令后即可打开其界面。 menuconfig 常用快捷键如图所示:

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第8张图片

修改配置

menuconfig 有多种类型的配置项,修改方法也有所不同,常见类型如下:

  • 开/关 型:使用空格键来选中或者关闭
  • 数值、字符串型:按下回车键后会出现对话框,在对话框中对配置项进行修改

保存配置

选择好配置项之后按 ESC 键退出,选择保存修改即可自动生成 rtconfig.h 文件。此时再次使用 scons 命令就会根据新的 rtconfig.h 文件重新编译工程了。

软件包管理:package

RT-Thread 提供一个软件包管理平台,这里存放了官方提供或开发者提供的软件包。该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。

点击这里 可以查看到 RT-Thread 官方的提供的软件包,绝大多数软件包都有详细的说明文档及使用示例。

提示

截止到 2018-03-13 ,当前软件包数量达到 40+

package 工具作为 Env 的组成部分,为开发者提供了软件包的下载、更新、删除等管理功能。

Env 命令行输入 pkgs 可以看到命令简介:

> pkgs
usage: env.py package [-h] [--update] [--list] [--wizard] [--upgrade]
                      [--printenv]

optional arguments:
  -h, --help  show this help message and exit
  --update    update packages, install or remove the packages as you set in
              menuconfig
  --list      list target packages
  --wizard    create a package with wizard
  --upgrade   update local packages list from git repo
  --printenv  print environmental variables to check

下载、更新、删除软件包

在下载、更新软件包前,需要先在 menuconfig 中 开启 你想要操作的软件包

这些软件包位于 RT-Thread online packages 菜单下,进入该菜单后,则可以看如下软件包分类:

RT-Thread (基础篇_1) | 开发环境搭建及介绍_第9张图片

找到你需要的软件包然后选中开启,保存并退出 menuconfig 。此时软件包已被标记选中,但是还没有下载到本地,所以还无法使用。

  • 下载 :如果软件包在本地已被选中,但是未下载,此时输入:pkgs --update ,该软件包自动下载;
  • 更新 :如果选中的软件包在服务器端有更新,并且版本号选择的是 latest 。此时输入: pkgs --update ,该软件包将会在本地进行更新;
  • 删除 :某个软件包如果无需使用,需要先在 menuconfig 中取消其的选中状态,然后再执行: pkgs --update 。此时本地已下载但未被选中的软件包将会被删除。

升级本地软件包信息

随着 package 系统的不断壮大,会有越来越多的软件包加入进来,所以本地看到 menuconfig 中的软件包列表可能会与服务器 不同步 。使用 pkgs --upgrade 命令即可解决该问题,这个命令不仅会对本地的包信息进行更新同步,还会对 Env 的功能脚本进行升级,建议定期使用。

到此就讲完了如何下载得到源码;安装软件包管理工具;配置管理。下一篇讲解如何建立移植RTT到开发板。

你可能感兴趣的:(#,RTOS,之行)