RT-Thread 基于 Scons 的包管理非常方便让我们使用 RT-Thread 进行开发,但在实际工程中将应用代码写到 RT-Thread 官方提供的 bsp 目录下面会非常不便于使用,无法使用自己 git 工具进行代码管理。 解决方式,可以是 fork 出一个基于特定版本的 RT-Thread,然后基于该版本上开发,这样能够有代码管理,但是后续需要更新 RT-Thread 内核源码就会非常不方便。 如果可以将 RT-Thread 以 submodule 的方式包含进工程,那么就可以实现即能够进行包管理,也能与官方同步升级 RT-Thread 版本。
本篇将以下面步骤进行操作,流程如下:
在 gitee 上创建如下仓库:仓库创建
git clone 到本地,随后输入 git submodule add https://gitee.com/rtthread/rt-thread.git 将 RT-Thread 主仓库添加到子模块里: 下载成功后,会在目录里面生成 .gitmodules 文件,该文件里面记录了子模块信息,虽然提交工程: 此时远端仓库就会包含 rt-thread 主分支内容,后续 rt-thread 需要更新的话,可以通过 git 更新。
git clone
git submodule add https://gitee.com/rtthread/rt-thread.git
应用目录以基于 bsp/stm32/stm32h743-amfly-v7 : 提交工程
很显然目前 Kconfig 和 Scons 脚本是不能正常使用的,先修改 Kconfig 文件: 先修改根目录下的:Kconfig
mainmenu "RT-Thread Configuration" config MCU_MANUFACTURER string option env="MCU_MANUFACTURER" default "stm32" config BSP_DIR string option env="BSP_ROOT" default "." config RTT_DIR string option env="RTT_ROOT" default "rt-thread" config PKGS_DIR string option env="PKGS_ROOT" default "packages" source "$RTT_DIR/Kconfig" source "$PKGS_DIR/Kconfig" source "$RTT_DIR/bsp/$MCU_MANUFACTURER/libraries/Kconfig" source "board/Kconfig"
前后对比如下: 修改board目录的:board\Kconfig
menu "Hardware Drivers Config" config SOC_STM32H743XI bool select SOC_SERIES_STM32H7 select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y menu "Onboard Peripheral Drivers" endmenu menu "On-chip Peripheral Drivers" config BSP_USING_GPIO bool "Enable GPIO" select RT_USING_PIN default y menuconfig BSP_USING_UART bool "Enable UART" default y select RT_USING_SERIAL if BSP_USING_UART config BSP_USING_UART1 bool "Enable UART1" default y endif source "$RTT_DIR/bsp/$MCU_MANUFACTURER/libraries/HAL_Drivers/Kconfig" endmenu menu "Board extended module Drivers" endmenu endmenu
前后对比如下: 成功后可以 menuconfig 正常显示出 Kconfig 菜单
menuconfig
先修改 rtconfig.py 文件 修改 Sconstruct 文件 大家可以通过 gitee 中修改项的对比, 详细看我修改了什么 修改项对比
使用 Vscode 在 RT-Thread 中查找经常会查找到其它板卡中,导致很多无效查询,解决办法屏蔽掉不需要的目录: Shift + Ctrl + P 输入 setting.json 选择 workspace settings,该选项只会在本工程生效,不会影响其它工程: 输入 search.exclude ,true 属性表示查询不生效,false 表示查询生效。 可以通过多选目录,然后复制相对路径: 通过 Alt + Shift 一次性操作多行 结尾的修改,通过 Alt + shift 然后鼠标拉倒最后可以选中所有行的末尾: 即可一次操作全部板卡的隐藏: 然后把我们需要的板卡改成 false 即可: 由于 stm32 目录下还有不同芯片的板卡,上面方式如法炮制即可 这时候再进行查找就不会冒出一大堆没用的信息了:
Shift + Ctrl + P
setting.json
search.exclude
本篇的仓库位于 gitee 仓库 每个步骤都标识成一个标签了。