RT-Thread的构建与配置系统

RT-Thread的构建与配置系统_第1张图片

  • Kconfig:kernel config配置文件(提供系统的配置裁剪功能)
  • Scons:构建工具
  • env工具:主要提供构建系统所需的各种环境变量以及软件包的管理

Env

Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。

其内置的menuconfig提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。

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

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

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

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

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

BSP配置:menuconfig

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

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

RT-Thread的构建与配置系统_第2张图片

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

KConfig在RT-Thread中的工作机制

C语言项目的裁剪配置本质上是通过条件编译和宏的展开来实现的。
RT-Thread借助KConfig这套机制更方便的实现了这一功能。
当前以Windows下Env工具中的使用为例,简述Kconfig在RT-Thread的工作机制。

Kconfig机制包括了Kconfig文件和配置UI界面(如menuconfig,pyconfig等)。

  • Kconfig文件中的配置项会映射至rtconfig.h中。
  • Kconfig文件可以随源码分散至各级子目录,便于灵活修改。
# .config片段
CONFIG_RT_USING_TIMER_SOFT=y
CONFIG_RT_TIMER_THREAD_PRIO=4
CONFIG_RT_TIMER_THREAD_STACK_SIZE=512
CONFIG_RT_DEBUG=y
//相对应的rtconfig.h片段
#define RT_USING_TIMER_SOFT
#define RT_TIMER_THREAD_PRIO 4
#define RT_TIMER_THREAD_STACK_SIZE 512
#define RT_DEBUG

在这里插入图片描述
Kconfig文件在源码中呈现树形结构,需要在工程的根目录下存在一份顶级Kconfig文件,顶级Kconfig文件在文件中通过source语句显示地调用各子目录下的Kconfig文件。
Env在根目录下执行menuconfig命令后会递归解析各级Kconfig文件,然后提供如下配置界面,完成相应的配置后并保存,根目录下会存在一份.config文件保存当前选择的配置项,并将.config文件转为RT-Thread的系统配置文件rtconfig.h。

Kconfig源于Linux内核的配置构建系统。

config语句

以下为RT-Thread系统中config语句的示例

config BSP_USING_GPIO
    bool "Enable GPIO"
    select RT_USING_PIN
    default y
    help
    config gpio

config表示一个配置选项的开始,紧跟着的BSP_USING_GPIO是配置选项的名称,
bool表示选项的类型
select是反向依赖关系的意思,即当前配置选项被选中,则RT_USING_PIN就会被选中。
default表示配置选项的默认值
help帮助信息
RT-Thread的构建与配置系统_第3张图片
RT-Thread的构建与配置系统_第4张图片
通过env选中以上配置界面的选项后,最终可在rtconfig.h文件中生成如下两个宏:

#define RT_USING_PIN
#define BSP_USING_GPIO

menu/endmenu语句

menu语句用于生成菜单。

menu "Hardware Drivers Config"
    config BSP_USING_COM2
        bool "Enable COM2 (uart2 pin conflict with Ethernet and PWM)"
        select BSP_USING_UART
        select BSP_USING_UART2
        default n
    config BSP_USING_COM3
        bool "Enable COM3 (uart3 pin conflict with Ethernet)"
        select BSP_USING_UART3
        default n
endmenu

你可能感兴趣的:(RT-Thread,RT-Thread)