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 命令已在列表中
...