2.6. 添加应用

2.6.1. 添加源码

以 GT911 电容屏测试程序为例,与之相关的源文件及结构如下:

bsp$ tree
.

├── Kconfig                     # 编译配置文件
...
├── SConscript                  # 固定模板
└── test
    ├── SConscript              # 固定模板
    ...
    ├── test-touch
    │   ├── gt911_sample.c      # 源代码
    │   └── SConscript          # 源码结构文件
    ...

2.6.1.1. Kconfig

配置文件中,添加如下内容:

...
config AIC_TP_DRV_TEST
    bool "Enable touch panel driver test command"
    default n
    depends on AIC_TOUCH_PANEL_GT911

endmenu

endmenu

2.6.1.2. SConscript

SConscript 文件决定参与编译的文件、目录等相关信息,具体语法请参考 2.4.4. SConstruct,本例程 SConscript 源码如下:

Import('AIC_ROOT')
Import('PRJ_KERNEL')
from building import *

cwd = GetCurrentDir()
CPPPATH = []
src = []
if GetDepend('AIC_TP_DRV_TEST'):
    src = Glob('*.c')

group = DefineGroup('test-touch', src, depend = [''], CPPPATH = CPPPATH)

Return('group')

2.6.1.3. 源码

2.6.1.3.1. 初始化应用

$(SDK)/bsp/test/test-touch/gt911_sample.c

...
static void gt911_sample(void *parameter)
{
...
}

MSH_CMD_EXPORT(gt911_sample, gt911 sample);

值得关注的是文件最后的导出命令 MSH_CMD_EXPORT,在系统启动之后,通过命令 gt911_sample 运行。

zx-rtt SDK 添加应用推荐使用 RT-Thread 宏定义导入应用程序。RT-Thread 有一套启动优先级设置的宏,根据不同的软件模块分类进行启动优先级的设置,应用程序通常选择最后两种,具体接口及描述如下:

宏接口

描述

INIT_BOARD_EXPORT(fn)

非常早期的初始化,此时调度器还未启动; 使用该宏后,fn 将属于 “board init functions”

INIT_PREV_EXPORT(fn)

主要是用于纯软件的初始化、没有太多依赖的函数;使用该宏后,fn 将属于 “pre-initialization functions”

INIT_DEVICE_EXPORT(fn)

外设驱动初始化相关,比如网卡设备;使用该宏后,fn 将属于 “device init functions”

INIT_COMPONENT_EXPORT(fn)

组件初始化,比如文件系统或者 LWIP;使用该宏后,fn 将属于 “components init functions”

INIT_ENV_EXPORT(fn)

系统环境初始化,比如挂载文件系统;使用该宏后,fn 将属于 “enviroment init functions”

INIT_APP_EXPORT(fn)

应用初始化,比如 GUI 应用使用该宏后,fn 将属于 “application init functions”

MSH_CMD_EXPORT(fn)

将应用程序导出为 Msh 命令;通过手动方式运行;

2.6.2. 编译

2.6.2.1. 配置

通过 scons --menuconfig (OneStep命令为 me),进入配置界面,选择

Drivers options  --->
    Drivers examples  --->
        [*] Enable touch panel driver test command

保存,退出

2.6.2.2. 编译

运行 scons (OneStep命令为 m),开始编译,编译结束后,生成 image 镜像。

2.6.3. 验证

烧录,运行系统,使用 Tab 键查看命令是否添加成功

Startup reason: Power-On-Reset
Startup time: 0.601 sec (from Power-On-Reset)
os  : system memory alloc 320 bytes
flsh: UFFS consume spare data size 36
os  : system memory alloc 84480 bytes
os  : system memory alloc 53200 bytes
os  : system memory alloc 7168 bytes
tree: DIR 1, FILE 1, DATA 22
info.bits_per_pixel: 32
info.width: 1024, info.height: 600
lv_draw_aic_ctx_init:1024, 600
id = GT911
range_x = 1024
range_y = 600
point_num = 1
aic />
aic /> <tab>                    # 单击 Tab 键,系统罗列出可用命令列表,
RT-Thread shell commands:
...
test_gt911     - test gt911 sample      # 添加的 test_gt911 命令已在列表中
...