添加源码
以 GT911
电容屏测试程序为例,与之相关的源文件及结构如下:
bsp$ tree . ├── Kconfig # 编译配置文件 ... ├── SConscript # 固定模板 └── examples ├── SConscript # 固定模板 ... ├── test-ctp │ ├── test_gt911.c # 源代码 │ └── SConscript # 源码结构文件 ...
Kconfig
配置文件中,添加如下内容:
...
config AIC_TP_DRV_TEST
bool "Enable touch panel driver test command"
default n
depends on AIC_TOUCH_PANEL_GT911
endmenu
endmenu
SConscript
SConscript 文件决定参与编译的文件、目录等相关信息,具体语法请参考
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')
源码
- 初始化应用在
$(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 命令;通过手动方式运行;