天天看点

[Telink][TLSR8251] [泰凌微][SDK3.4] 上手第二步 框架介绍

软件组织架构

该 BLE SDK 软件架构包括 APP 应⽤层和 BLE stack 协议栈部分。

在 IDE 中导⼊ sdk ⼯程后,显⽰的⽂件组织结构如下图所⽰。

[Telink][TLSR8251] [泰凌微][SDK3.4] 上手第二步 框架介绍

顶层⽂件夹有 8 个:

  • [algorithm] 提供加密算法相关的函数
  • [application] 提供⼀些通⽤的应⽤处理程序,如 print、keyboard、audio 等。
  • [boot] 提供芯⽚的 software bootloader,即 MCU 上电启动或 deepsleep 唤醒后的汇编处理过程,为后⾯ C 语⾔程序的运⾏搭建好环境。
  • [common] 提供⼀些通⽤的跨平台的处理函数,如内存处理函数、字符串处理函数等。
  • [drivers] 提供与 MCU 紧密相关的硬件设置和外设驱动程序,如 clock、flash、i2c、usb、gpio、uart 等。
  • [proj_lib] 存放 SDK 运⾏所必需的库⽂件(如 liblt_825x.a)。BLE 协议栈、RF 驱动、PM 驱动等⽂件,被封装在库⽂件⾥,⽤⼾⽆法看到源⽂件。
  • [stack] 存放 BLE 协议栈相关的头⽂件。源⽂件被编译到库⽂件⾥⾯,对于⽤⼾是不可⻅的。
  • [vendor] ⽤于存放⽤⼾应⽤层代码

main.c

包括 main 函数⼊⼝,系统初始化的相关函数,以及⽆限循环 while(1) 的写法,建议不要对此⽂件进⾏任何修改,直接使⽤固有写法。

_attribute_ram_code_ int main(void) // must run in ramcode
{
    DBG_CHN0_LOW; // debug
    blc_pm_select_internal_32k_crystal();
#if (MCU_CORE_TYPE == MCU_CORE_825x)
    cpu_wakeup_init();
#elif (MCU_CORE_TYPE == MCU_CORE_827x)
    cpu_wakeup_init(LDO_MODE, EXTERNAL_XTAL_24M);
#endif
    int deepRetWakeUp = pm_is_MCU_deepRetentionWakeup(); // MCU deep retention wakeUp
    rf_drv_init(RF_MODE_BLE_1M);
    gpio_init(!deepRetWakeUp); // analog resistance will keep available in deepSleep mode, so
    no need initialize again ↪ clock_init(SYS_CLK_TYPE);
    if (!deepRetWakeUp)
    { // read flash size
        blc_readFlashSize_autoConfigCustomFlashSector();
    }
    blc_app_loadCustomizedParameters(); // load customized freq_offset cap value
    if (deepRetWakeUp)
    {
        user_init_deepRetn();
    }
    else
    {
        user_init_normal();
    }
    irq_enable();
    while (1)
    {
#if (MODULE_WATCHDOG_ENABLE)
        wd_clear(); // clear watch dog
#endif
        main_loop();
    }
}      

app_config.h

⽤⼾配置⽂件,⽤于对整个系统的相关参数进⾏配置,包括 BLE 相关参数、GPIO 的配置、PM 低功耗管理的相关配置等。

后⾯介绍各个模块时会对 app_config.h 中的各个参数的含义进⾏详细说明。

application file

  • app.c:⽤⼾主⽂件,⽤于完成 BLE 协议栈初始化、数据处理、低功耗处理等。
  • BLE slave ⼯程的 app_att.c:service 和 profile 的配置⽂件,有 Telink 定义的 Attribute 结构,根据该结构,已提供 GATT、标准 HID 和私有的 OTA、MIC 等相关 Attribute,⽤⼾可以参考这些添加⾃⼰的 service和 profile。
  • 其他 UI ⽂件:如 IR(红外)、battery detect(电池检测)等⽤⼾任务的处理⽂件。

BLE stack entry

Telink BLE SDK 中 BLE stack 部分 code 的⼊⼝函数有两个:

(1) main.c ⽂件 irq_handler 函数中 BLE 相关中断的处理⼊⼝ irq_blt_sdk_handler。

__attribute_ram_code_ void rf_irq_handler(void)
{
    irq_blt_sdk_handler();
}      

(2) application file main_loop 中 BLE 逻辑和数据处理的函数⼊⼝ blt_sdk_main_loop。

void main_loop(void)
{
    / BLE entry 
    blt_sdk_main_loop();
    // UI entry 
    // PM process 
}      

IC型号 flash和sram大小

适⽤如下⼏种 IC 型号,它们属于 B85m 系列,均为同⼀内核,其中 8251/8253/8258,8271/8273/8278 硬件模块基本⼀致,只是在 SRAM size 与 flash ⽅⾯略有差异。具体如下表所⽰。

IC Flash size SRAM size
8251 512 kB 32 kB
8253 512 kB 32 kB
8258 1 MB 64 kB
8271 512 kB 32 kB
8273 512 kB 48 kB
8278 1 MB

继续阅读