当前位置:网站首页>RT-Thread 项目工程搭建和配置--(Env Kconfig)
RT-Thread 项目工程搭建和配置--(Env Kconfig)
2022-06-25 23:17:00 【L_17】
获取rtt源码
这里推荐用gitee,下载速度会快很多,在bsp目录内,有相关参考demo工程
git clone https://gitee.com/rtthread/rt-thread.git
文件夹内容具体如下:
名称 | 描述 |
---|---|
BSP | Board Support Package(板级支持包)基于各种开发板的移植,可参考demo |
components | RT-Thread 的各个组件代码,例如 finsh,gui 等。 |
documentation | 相关文档,如编码规范等 |
examples | 相关示例代码 |
include | RT-Thread 内核的头文件。 |
libcpu | 各类芯片的移植代码。 |
src | RT-Thread 内核的源文件。 |
tools | RT-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-thread | rtt内核、组件源码等 |
边栏推荐
猜你喜欢
Nacos registry
.net使用Access 2010数据库
. Net using access 2010 database
Download and install flume
JS逆向案例:破解登录密码
Chapter V exercises (124, 678, 15, 19, 22) [microcomputer principles] [exercises]
在线小工具分享(不定时更新,当前数量:2)
Chapter VI exercises (678) [microcomputer principles] [exercises]
ciscn_ 2019_ en_ two
多接口调用,使用Promise.all、Promise.race和Promise.any
随机推荐
Dgus new upgrade: fully support digital video playback function
Zhihuijia - full furniture function
[system architecture] - what are MDA architecture, ADL and DSSA
C another new class is ICO? And app Use of config
C IO stream (II) extension class_ Packer
Px4 system terminal for pixhawk
C#线程池控制Semaphore
What training brings happiness
Final review [machine learning]
经典面试题之老鼠试药与汉明码
Web信息收集,互联网上的裸奔者
新库上线 | CnOpenData农产品批发价格数据
C # operate with MySQL
DGUS新升级:全面支持数字视频播放功能
react + router 框架下的路由跳转后缓存页面存初始参数
Chapter VI exercises (678) [microcomputer principles] [exercises]
mongodb
New library launched | cnopendata wholesale price data of agricultural products
Implementation notes of least square fitting conic in stm32
简单 deepclone