当前位置:网站首页>RT-Thread 项目工程搭建和配置--(Env Kconfig)

RT-Thread 项目工程搭建和配置--(Env Kconfig)

2022-06-25 23:17:00 L_17

获取rtt源码

下载 - RT-Thread物联网操作系统

这里推荐用gitee,下载速度会快很多,在bsp目录内,有相关参考demo工程

git clone https://gitee.com/rtthread/rt-thread.git

请添加图片描述

文件夹内容具体如下:

名称描述
BSPBoard Support Package(板级支持包)基于各种开发板的移植,可参考demo
componentsRT-Thread 的各个组件代码,例如 finsh,gui 等。
documentation相关文档,如编码规范等
examples相关示例代码
includeRT-Thread 内核的头文件。
libcpu各类芯片的移植代码。
srcRT-Thread 内核的源文件。
toolsRT-Thread 命令构建工具的脚本文件。

获取RT-Thread Env工具

RT-Thread Env 工具包括配置器和包管理器,用来对内核和组件的功能进行配置,对组件进行自由裁剪,对线上软件包进行管理,使得系统以搭积木的方式进行构建,简单方便。

配置链接参考官网:Env 用户手册 (rt-thread.org)

Kconfig 文件(同linux)

Kconfig 具体介绍:Kconfig Language — The Linux Kernel documentation

rtt官网介绍:Kconfig (rt-thread.org)

rtt Kconfig类似Linux Kconfig方式的menuconfig

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

  • Kconfig文件中的配置项会映射至rtconfig.h
  • Kconfig文件可以随源码分散至各级子目录,便于灵活修改。
我们需要了解Kconfig如下基本语法:
mainmenu语句
menu/endmenu语句
config语句
source语句
if/endif语句
choice/endchoice语句
comment语句
用imxrt1060-nxp-evk工程举例,进入工程跟目录。Env在根目录下执行menuconfig命令后,会递归解析各级Kconfig文件,然后显示如下配置界面:

请添加图片描述
请添加图片描述

根目录菜单Kconfig内容一般如下,mainmenu “RT-Thread Configuration” 也是窗口标题,那窗口中,五个子菜单是怎么显示的呢?这里我们需要观察,source “xx”中的路劲是怎么递归下去的。

请添加图片描述

…/…/…/ 退三级目录,如下Kconfig

请添加图片描述

src/kconfig 如下内容:menu “RT-Thread Kernel” 找到一个子菜单

请添加图片描述
按照上述方法,递归查询source路径,可以找到相关菜单和具体配置信息。

如何修改Kconfig(首先需要知道那几个语法,然后照猫画虎,慢慢就懂该含义)

这里说修改Kconfig文件,基本是需要修改:Hardware Drivers Config(其他是官方内核和组件相关,我们不用管),Hardware Drivers Config内容是针对某个项目的具体硬件,如果我们新增了设备驱动,也可以通过修改它的Kconfig,使驱动出现在menuconfig窗口中

RT-Thread Kernel
RT-Thread Components
RT-Thread Utestcases
RT-Thread online packages
Hardware Drivers Config

找到 Hardware Drivers Config 内容的Kconfig

menu "Hardware Drivers Config"

config SOC_MIMXRT1052DVL6B
    bool
    select SOC_MIMXRT1052_SERIES
    select BSP_USING_8MFLASH
    select RT_USING_COMPONENTS_INIT
    select RT_USING_USER_MAIN
    default y

menu "On-chip Peripheral Drivers"

    config BSP_USING_GPIO
        bool "Enable GPIO"
        select RT_USING_PIN
        default y

    menuconfig BSP_USING_LPUART
        bool "Enable UART"
        select RT_USING_SERIAL
        default y
        if BSP_USING_LPUART
            config BSP_USING_LPUART1
                bool "Enable LPUART1"
                default y
            config BSP_USING_LPUART2
                bool "Enable LPUART2"
                default n
            config BSP_USING_LPUART3
                bool "Enable LPUART3"
                default n
            config BSP_USING_LPUART4
                bool "Enable LPUART4"
                default n
            config BSP_USING_LPUART5
                bool "Enable LPUART5"
                default n
            config BSP_USING_LPUART6
                bool "Enable LPUART6"
                default n
            config BSP_USING_LPUART7
                bool "Enable LPUART7"
                default n
            config BSP_USING_LPUART8
                bool "Enable LPUART8"
                default n
        endif

    config BSP_USING_DMA
        bool "Enable DMA"
        default n

    config BSP_USING_WDT
        bool "Enable WDT"
        select RT_USING_WDOG
        default y
        if BSP_USING_WDT
            config BSP_USING_WDT1
                bool "Enable WDT1"
                default y
            config BSP_USING_WDT3
                bool "Enable WDT3"
                default n
        endif                

    config BSP_USING_PXP
        bool "Enable PXP"
        default n

    config BSP_USING_CACHE
        bool "Enable CACHE"
        default n

    menuconfig BSP_USING_LCD
        bool "Enable LCD"
        default n
        if BSP_USING_LCD
            config LCD_WIDTH
                int "width"
                default 480
            
            config LCD_HEIGHT
                int "height"
                default 272

            config LCD_HFP
                int "HFP"
                default 4
            config LCD_VFP
                int "VFP"
                default 4
            config LCD_HBP
                int "HBP"
                default 8
            config LCD_VBP
                int "VBP"
                default 2
            config LCD_HSW
                int "HSW"
                default 40
            config LCD_VSW
                int "VSW"
                default 10
            config LCD_BL_PIN
                int "Backlight ctrl pin"
                default 63
            config LCD_RST_PIN
                int "Reset pin"
                default 2
        endif
        
endmenu

menu "Onboard Peripheral Drivers"
    
    config BSP_USING_SDRAM
        bool "Enable SDRAM"
        default n

    config BSP_USING_LVGL
        bool "Enable LVGL for LCD"
        select BSP_USING_LCD
        select PKG_USING_LVGL
        select PKG_USING_LV_MUSIC_DEMO
        select BSP_USING_PXP
        select BSP_USING_CACHE
        default n

endmenu

menu "Board extended module Drivers"

endmenu

endmenu

请添加图片描述

裁剪搭建自己工程(用nxp rt系列举例):

笔者不太习惯让项目工程过于臃肿(过多无效或不使用的文件),所以会做一些裁剪。裁剪结果如下:

名称描述
board板级支持包,基于具体项目,该芯片基本IO时钟等配置
libraries芯片厂商sdk,基于该芯片开发好的hal库(适用于rtt)
packages在线软件包(配置好后,执行命令:pkgs --update 更新即可)
rt-threadrtt内核、组件源码等

请添加图片描述

rt-thread-rt1052-keil工程

原网站

版权声明
本文为[L_17]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_38426553/article/details/125435887