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


    获取rtt源码

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

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

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

    请添加图片描述

    文件夹内容具体如下:

    名称描述
    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语句
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    用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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    找到 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135

    请添加图片描述

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

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

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

    请添加图片描述

    rt-thread-rt1052-keil工程

  • 相关阅读:
    git submodule的使用
    Netty源码解析一——线程池模型之线程池NioEventLoopGroup
    冲量在线入选北京市2022年第一批国家高新技术企业认定名单
    SQL Server 防病毒软件配置
    服务器数据库三级等保的一些修改步骤
    MongoDB——文档增删改查命令使用
    C#.Net筑基-模式匹配汇总
    windows redis安装与开机自启动
    为什么2023年一定要用OKR?
    最新版两款不同版SEO超级外链工具PHP源码
  • 原文地址:https://blog.csdn.net/weixin_38426553/article/details/125435887