2.9. 添加应用¶
2.9.1. 添加源码¶
以 GT911 电容屏测试程序为例,与之相关的源文件及结构如下:
bsp$ tree
.
├── Kconfig                     # 编译配置文件
...
├── SConscript                  # 固定模板
└── test
    ├── SConscript              # 固定模板
    ...
    ├── test-touch
    │   ├── gt911_sample.c      # 源代码
    │   └── SConscript          # 源码结构文件
    ...
2.9.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.9.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.9.1.3. 源码¶
2.9.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 运行。
Luban-lite 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.9.2. 编译¶
2.9.2.1. 配置¶
通过 scons --menuconfig (OneStep命令为 me),进入配置界面,选择
Drivers options  --->
    Drivers examples  --->
        [*] Enable touch panel driver test command
保存,退出
2.9.2.2. 编译¶
运行 scons (OneStep命令为 m),开始编译,编译结束后,生成 image 镜像。
2.9.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 命令已在列表中
...