From 1173106a20b64b6285efa64570ea237e0bd4642a Mon Sep 17 00:00:00 2001 From: Tian Hao Date: Fri, 25 Nov 2016 23:37:46 +0800 Subject: [PATCH] component/bt : change task to decease dram(heap) 1. decrease the task size(HCI cannot < 1024, btu cannot < 4096) 2. btc task can config by menuconfig(default 2048) --- components/bt/Kconfig | 11 ++++++++-- .../bt/bluedroid/btc/include/btc_task.h | 6 +----- components/bt/bluedroid/hci/hci_hal_h4.c | 4 ++-- components/bt/bluedroid/hci/hci_layer.c | 4 ++-- components/bt/bluedroid/osi/include/thread.h | 20 +++++++++++++++++++ components/bt/bluedroid/stack/btu/btu_init.c | 2 +- 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/components/bt/Kconfig b/components/bt/Kconfig index e2f7d97340..4e8e317927 100644 --- a/components/bt/Kconfig +++ b/components/bt/Kconfig @@ -8,11 +8,11 @@ config BT_ENABLED help This compiles in the low-level BT stack. -menu "BT_UTIL" +menu "BT UTILITY OPTION" visible if BT_ENABLED config BT_USE_ETS_PRINT - bool "BT USE ETS_PRINT" + bool "BT use print which has lock" default y depends on BT_ENABLED help @@ -20,6 +20,13 @@ config BT_USE_ETS_PRINT endmenu #menu +config BTC_TASK_STACK_SIZE + int "BT event (callback to application) task stack size" + default 2048 + depends on BT_ENABLED + help + This select btc task stack size + #config BT_BTLE # bool "Enable BTLE" # depends on BT_ENABLED diff --git a/components/bt/bluedroid/btc/include/btc_task.h b/components/bt/bluedroid/btc/include/btc_task.h index 923b8b84e5..1574dae2f3 100644 --- a/components/bt/bluedroid/btc/include/btc_task.h +++ b/components/bt/bluedroid/btc/include/btc_task.h @@ -17,11 +17,7 @@ #include #include "bt_defs.h" - -#define BTC_TASK_QUEUE_NUM 20 -#define BTC_TASK_STACK_SIZE 4096 -#define BTC_TASK_NAME "btcT" -#define BTC_TASK_PRIO (configMAX_PRIORITIES - 5) +#include "thread.h" typedef struct btc_msg { uint8_t sig; //event signal diff --git a/components/bt/bluedroid/hci/hci_hal_h4.c b/components/bt/bluedroid/hci/hci_hal_h4.c index 8665dd284e..922ee6ecc0 100644 --- a/components/bt/bluedroid/hci/hci_hal_h4.c +++ b/components/bt/bluedroid/hci/hci_hal_h4.c @@ -101,8 +101,8 @@ static bool hal_open(const hci_hal_callbacks_t *upper_callbacks) hci_hal_env_init(HCI_HAL_SERIAL_BUFFER_SIZE, SIZE_MAX); - xHciH4Queue = xQueueCreate(60, sizeof(BtTaskEvt_t)); - xTaskCreate(hci_hal_h4_rx_handler, "HciH4T", 4096 + 2048, NULL, configMAX_PRIORITIES - 3, &xHciH4TaskHandle); + xHciH4Queue = xQueueCreate(HCI_H4_QUEUE_NUM, sizeof(BtTaskEvt_t)); + xTaskCreate(hci_hal_h4_rx_handler, HCI_H4_TASK_NAME, HCI_H4_TASK_STACK_SIZE, NULL, HCI_H4_TASK_PRIO, &xHciH4TaskHandle); //register vhci host cb API_vhci_host_register_callback(&vhci_host_cb); diff --git a/components/bt/bluedroid/hci/hci_layer.c b/components/bt/bluedroid/hci/hci_layer.c index 4627268977..045b0c359e 100644 --- a/components/bt/bluedroid/hci/hci_layer.c +++ b/components/bt/bluedroid/hci/hci_layer.c @@ -113,8 +113,8 @@ int hci_start_up(void) goto error; } - xHciHostQueue = xQueueCreate(60, sizeof(BtTaskEvt_t)); - xTaskCreate(hci_host_thread_handler, "HciHostT", (4096 + 2048), NULL, configMAX_PRIORITIES - 3, &xHciHostTaskHandle); + xHciHostQueue = xQueueCreate(HCI_HOST_QUEUE_NUM, sizeof(BtTaskEvt_t)); + xTaskCreate(hci_host_thread_handler, HCI_HOST_TASK_NAME, HCI_HOST_TASK_STACK_SIZE, NULL, HCI_HOST_TASK_PRIO, &xHciHostTaskHandle); packet_fragmenter->init(&packet_fragmenter_callbacks); hal->open(&hal_callbacks); diff --git a/components/bt/bluedroid/osi/include/thread.h b/components/bt/bluedroid/osi/include/thread.h index f760ec0b27..11bf0f5850 100644 --- a/components/bt/bluedroid/osi/include/thread.h +++ b/components/bt/bluedroid/osi/include/thread.h @@ -43,6 +43,26 @@ enum { SIG_BTIF_WORK = 0xff }; +#define HCI_HOST_TASK_STACK_SIZE 1024 +#define HCI_HOST_TASK_PRIO (configMAX_PRIORITIES - 3) +#define HCI_HOST_TASK_NAME "hciHostT" +#define HCI_HOST_QUEUE_NUM 30 + +#define HCI_H4_TASK_STACK_SIZE 1024 +#define HCI_H4_TASK_PRIO (configMAX_PRIORITIES - 3) +#define HCI_H4_TASK_NAME "hciH4T" +#define HCI_H4_QUEUE_NUM 30 + +#define BTU_TASK_STACK_SIZE 4096 +#define BTU_TASK_PRIO (configMAX_PRIORITIES - 1) +#define BTU_TASK_NAME "btuT" +#define BTU_QUEUE_NUM 30 + +#define BTC_TASK_QUEUE_NUM 20 +#define BTC_TASK_STACK_SIZE CONFIG_BTC_TASK_STACK_SIZE //by menuconfig +#define BTC_TASK_NAME "btcT" +#define BTC_TASK_PRIO (configMAX_PRIORITIES - 5) + void btu_task_post(uint32_t sig); void hci_host_task_post(void); void hci_hal_h4_task_post(void); diff --git a/components/bt/bluedroid/stack/btu/btu_init.c b/components/bt/bluedroid/stack/btu/btu_init.c index 4c59d6f75b..b4309f42c4 100644 --- a/components/bt/bluedroid/stack/btu/btu_init.c +++ b/components/bt/bluedroid/stack/btu/btu_init.c @@ -201,7 +201,7 @@ void BTU_StartUp(void) } xBtuQueue = xQueueCreate(60, sizeof(BtTaskEvt_t)); - xTaskCreate(btu_task_thread_handler, "BtuT", 8192, NULL, configMAX_PRIORITIES - 1, &xBtuTaskHandle); + xTaskCreate(btu_task_thread_handler, BTU_TASK_NAME, BTU_TASK_STACK_SIZE, NULL, BTU_TASK_PRIO, &xBtuTaskHandle); btu_task_post(SIG_BTU_START_UP); /* // Continue startup on bt workqueue thread. -- 2.40.0