前言
RT-Thread支持软件包定制,可以很好的将软件模块的功能高效复用,移植性很强
1 已有应用
模块、应用的驱动自己搞定,能跑起来,之前移植过一个TFT LCD的驱动,时间仓促并没有把它的代码整理好
2 packages仓库
仓库地址:https://github.com/RT-Thread/packages.git,软件包存放在peripherals
目录下,先把原仓库fork下来,然后修改描述你这个软件包的配置文件
Kconfig
# Kconfig file for package gc9a01
menuconfig PKG_USING_GC9A01
bool "gc9a01: OLEDs based on GC9A01, SH1106, SH1107 and SSD1309 driver"
default n
if PKG_USING_GC9A01
config PKG_GC9A01_PATH
string
default "/packages/peripherals/gc9a01"
config PKG_USING_GC9A01_DEBUG
bool "Enable debug log output"
default n
config PKG_USING_GC9A01_SPI_BUS_NAME
string "SPI bus name"
default "spi0"
config PKG_USING_GC9A01_DC_PIN
int "DC PIN for example : 3*32+1"
default "97"
config PKG_USING_GC9A01_RES_PIN
int "RES PIN for example : 3*32+30"
default "126"
config PKG_USING_GC9A01_CS_PIN
int "CS PIN for example : 1*32+3"
default "35"
config PKG_USING_GC9A01_SAMPLE
bool "Enable gc9a01 sample"
default n
choice
prompt "Version"
default PKG_USING_GC9A01_LATEST_VERSION
help
Select the package version
config PKG_USING_GC9A01_V100
bool "v1.0.0"
config PKG_USING_GC9A01_LATEST_VERSION
bool "latest"
endchoice
config PKG_GC9A01_VER
string
default "v1.0.0" if PKG_USING_GC9A01_V100
default "latest" if PKG_USING_GC9A01_LATEST_VERSION
endif
package.json
{
"name": "gc9a01",
"description": "gc9a01: RT-Thread package for working with OLED based on SPI.",
"description_zh": "基于gc9a01的 OLED 驱动,支持SPI",
"enable": "PKG_USING_GC9A01",
"keywords": [
"gc9a01",
"oled"
],
"category": "peripherals",
"author": {
"name": "hywing",
"email": "hywing@aliyum.com",
"github": "hywing"
},
"license": "Apache-2.0",
"repository": "https://github.com/hywing/tft-gc9a01",
"icon": "unknown",
"homepage": "https://github.com/hywing/tft-gc9a01",
"doc": "unknown",
"site": [
{
"version": "v1.0.0",
"URL": "https://github.com/hywing/tft-gc9a01/archive/v1.0.0.zip",
"filename": "gc9a01-1.0.0.zip"
},
{
"version": "latest",
"URL": "https://github.com/hywing/tft-gc9a01.git",
"filename": "gc9a01-latest.zip",
"VER_SHA": "main"
}
]
}
顶层Kconfig
source "$PKGS_DIR/packages/peripherals/gc9a01/Kconfig"
注意
为了验证可行性,可以将以上代码文件放到env-windows工具的安装目录下:C:\env-windows\packages\packages\peripherals
3 开放你的GitHub仓库
软件包需要public权限,需要有READ文档、inc、src、examples等目录,代码要格式化
添加描述软件包的README.md文档,以下为参考格式
# rtt-gc9a01
RT-Thread package for working with TFT LCD based on SPI inspired by [GC9A01](https://gitee.com/meta-mcu/gc9a01-tft)
## 1、介绍
GC9A01是一款1.28寸的圆形TFT显示屏模块,分辨率为240x240,支持三种颜色格式:RGB444、RGB565、RGB666
### 1.1 目录结构
| 名称 | 说明 |
| -------- | ---------- |
| examples | 例子目录 |
| inc | 头文件目录 |
| src | 源代码目录 |
### 1.2 许可证
gc9a01软件包遵循 MIT 许可,详见 `LICENSE` 文件
## 2、获取rtt-gc9a01 软件包
使用这个软件包的前提是你得有成功移植的RT-Thread spi驱动和数量足够的GPIO,请先用menuconfig工具使能spi驱动
```
Hardware Drivers Config --->
On-chip Peripheral Drivers --->
[*] Enable SPI
[*] Enable SPI0
```
使用 gc9a01 package 需要在 RT-Thread 的包管理器中选择它,具体路径如下
```
RT-Thread online packages --->
peripheral libraries and drivers --->
[*] gc9a01: TFT LCD based on GC9A01 IC driver --->
```
GPIO及SPI接口设置
```
(spi0) SPI bus name
(97) DC PIN number for example in frdm-mcxa153 board P3_1 -> 3*32+1
(126) RES PIN number for example in frdm-mcxa153 board P3_30 -> 3*32+30
(35) CS PIN number for example in frdm-mcxa153 board P1_3 -> 1*32+3
[*] Enable gc9a01 example
Version (latest) --->
```
然后使用 `pkgs --update` 命令更新包到 BSP 中
```bash
pkgs --update
scons --target=mdk5
```
## 3、API 说明
## 4、联系方式
- 维护:hywing@aliyum.com
- 主页:<https://github.com/hywing/rtt-gc9a01.git>
## 5、说明
这个软件包在frdm-mcxa153开发板上面测试通过
4 功能验证
menuconfig
通过env工具来验证,打开menuconfig.exe
使能spi
使能GC9A01
导出Keil工程
使用CMD命令行拉取软件包并更新Keil工程配置文件
pkgs --update
scons --target=mdk5
最后打开Keil工程,可以看到spi驱动以及GC9A01软件包已经被添加进来了
5 提交PR到packages仓库
这个是最后一步,通过之后你的模块就可以成为认证的软件包了,开源项目的GitHub操作流程可以参考文章