天天看點

[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

繼續閱讀