Edit online

添加源码

以 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')

源码

  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 命令;通过手动方式运行;