DA1458x SDK Software Layout 随笔

来源:互联网 发布:微邦软件下载 编辑:程序博客网 时间:2024/06/13 23:41

DA1458x SDK 5.0.4

分层

Dialog在DA14580分层主要分为BLE_stack、kernel、Profile和Application。
其中BLE_stack和kernel使我们不可见的,Profile和Application是我们可见的。
下面是官方的Software Layout

software_layout

这个图中关于Profile和Application的排布我感觉并排的感觉并不是十分合适。
从内核的角度来开,profile和Application都是依赖于RW内核来创建任务来调度的。在kernel上同一层没错。
但是Profile的TASK等级比Application的等级高。
下图为Dialog RW kernel的任务类型

/// Tasks types definitionenum KE_TASK_TYPE{    TASK_NONE           = 0xFF,    // Link Layer Tasks    TASK_LLM            = 0   ,    TASK_LLC            = 1   ,    TASK_LLD            = 2   ,    TASK_DBG            = 3   ,    TASK_L2CM           = 4   ,    TASK_L2CC           = 5   ,    TASK_SMPM           = 6   ,    TASK_SMPC           = 7   ,    TASK_ATTM           = 8   ,   // Attribute Protocol Manager Task    TASK_ATTC           = 9   ,   // Attribute Protocol Client Task    TASK_ATTS           = 10  ,   // Attribute Protocol Server Task    TASK_GATTM          = 11  ,   // Generic Attribute Profile Manager Task    TASK_GATTC          = 12  ,   // Generic Attribute Profile Controller Task    TASK_GAPM           = 13  ,   // Generic Access Profile Manager    TASK_GAPC           = 14  ,   // Generic Access Profile Controller    TASK_PROXM          = 15  ,   // Proximity Monitor Task    TASK_PROXR          = 16  ,   // Proximity Reporter Task    TASK_FINDL          = 17  ,   // Find Me Locator Task    TASK_FINDT          = 18  ,   // Find Me Target Task    TASK_HTPC           = 19  ,   // Health Thermometer Collector Task    TASK_HTPT           = 20  ,   // Health Thermometer Sensor Task    TASK_ACCEL          = 21  ,   // Accelerometer Sensor Task    TASK_BLPS           = 22  ,   // Blood Pressure Sensor Task    TASK_BLPC           = 23  ,   // Blood Pressure Collector Task    TASK_HRPS           = 24  ,   // Heart Rate Sensor Task    TASK_HRPC           = 25  ,   // Heart Rate Collector Task    TASK_TIPS           = 26  ,   // Time Server Task    TASK_TIPC           = 27  ,   // Time Client Task    TASK_DISS           = 28  ,   // Device Information Service Server Task    TASK_DISC           = 29  ,   // Device Information Service Client Task    TASK_SCPPS          = 30  ,   // Scan Parameter Profile Server Task    TASK_SCPPC          = 31  ,   // Scan Parameter Profile Client Task    TASK_BASS           = 32  ,   // Battery Service Server Task    TASK_BASC           = 33  ,   // Battery Service Client Task    TASK_HOGPD          = 34  ,   // HID Device Task    TASK_HOGPBH         = 35  ,   // HID Boot Host Task    TASK_HOGPRH         = 36  ,   // HID Report Host Task    TASK_GLPS           = 37  ,   // Glucose Profile Sensor Task    TASK_GLPC           = 38  ,   // Glucose Profile Collector Task    TASK_NBPS           = 39  ,   // Nebulizer Profile Server Task    TASK_NBPC           = 40  ,   // Nebulizer Profile Client Task    TASK_RSCPS          = 41  ,   // Running Speed and Cadence Profile Server Task    TASK_RSCPC          = 42  ,   // Running Speed and Cadence Profile Collector Task    TASK_CSCPS          = 43  ,   // Cycling Speed and Cadence Profile Server Task    TASK_CSCPC          = 44  ,   // Cycling Speed and Cadence Profile Client Task    TASK_ANPS           = 45  ,   // Alert Notification Profile Server Task    TASK_ANPC           = 46  ,   // Alert Notification Profile Client Task    TASK_PASPS          = 47  ,   // Phone Alert Status Profile Server Task    TASK_PASPC          = 48  ,   // Phone Alert Status Profile Client Task    TASK_LANS           = 49  ,   // Location and Navigation Profile Server Task    TASK_APP            = 50  ,   // Do not Alter.     TASK_LANC           = 51  ,   // Location and Navigation Profile Client Task    TASK_CPPS           = 52  ,   // Cycling Power Profile Server Task    TASK_CPPC           = 53  ,   // Cycling Power Profile Client Task    // Start of conditionally assigned task types    #if (BLE_BM_SERVER)    TASK_BMSS           ,   // BMSS Task    #endif    #if (BLE_BM_CLIENT)    TASK_BMSC         ,   // BMSC Task    #endif    #if BLE_SPOTA_RECEIVER    TASK_SPOTAR         ,   // SPOTA Receiver task    #endif    #if BLE_STREAMDATA_DEVICE    TASK_STREAMDATAD    ,   // Stream Data Device Server task    #endif    #if BLE_STREAMDATA_HOST    TASK_STREAMDATAH    ,   // Stream Data Device Server task    #endif    #if BLE_ANC_CLIENT    TASK_ANCC           ,   // ANCS Client Task    #endif    #if BLE_WPT_CLIENT    TASK_WPTC           ,   // A4WP Wireless Power Transfer Client Profile Task    #endif    #if BLE_WPTS    TASK_WPTS           ,   // A4WP Wireless Power Transfer Server Profile Task    #endif    #if BLE_APP_PTU     TASK_APP_PTU       ,   // A4WP Wireless Power Transfer Client App Task    #endif    #if BLE_IEU    TASK_IEU            ,   // Integrated Environmantal Unit Task    #endif    #if BLE_MPU    TASK_MPU            ,   // Motion Processing Unit Task    #endif    #if BLE_WSS_SERVER    TASK_WSSS           ,   // Weight Scale Server Task    #endif    #if BLE_WSS_COLLECTOR    TASK_WSSC           ,   // Weight Scale Collector Task    #endif    #if BLE_UDS_SERVER    TASK_UDSS           ,   // User Data Server Task    #endif    #if BLE_UDS_CLIENT    TASK_UDSC           ,   // User Data Server Task    #endif    #if BLE_SPS_SERVER    TASK_SPS_SERVER     ,   // Serial Proert Service Server Task    #endif    #if BLE_SPS_CLIENT    TASK_SPS_CLIENT     ,   // Serial Proert Service Server Task    #endif    #if BLE_ADC_NOTIFY    TASK_ADC_NOTIFY     ,   // Serial Proert Service Server Task    #endif    #if BLE_DEVICE_CONFIG    TASK_DEVICE_CONFIG  ,   // Serial Proert Service Server Task    #endif    #if (BLE_BCS_SERVER)    TASK_BCSS          ,   // Body Composition Server Task    #endif    #if (BLE_BCS_CLIENT)    TASK_BCSC          ,   // Body Composition Client Task    #endif    #if (BLE_CTS_SERVER)    TASK_CTSS          ,   // Current Time Server Task    #endif    #if (BLE_CTS_CLIENT)    TASK_CTSC          ,   // Current Time Client Task    #endif    #if BLE_CUSTOM2_SERVER    TASK_CUSTS2         ,   // 2nd Custom profile server    #endif    #if BLE_CUSTOM1_SERVER    TASK_CUSTS1         ,   // 1st Custom profile server    #endif    // End of conditionally assigned task types    TASK_HCI            = 60  ,    TASK_HCIH           = 61  ,    TASK_GTL            = 63  ,    #if USE_AES    TASK_AES            = 62  ,   // Task for asynchronous AES API    #endif        TASK_MAX            = 64,  //MAX is 64. Do  not exceed. };

可见做多任务数为64个,Profile的任务高于TASK_APP。
实际代码中,Dialog在5.0.4版本的SDK中(其它版本没看过),将所有的Application放在TASK_APP中。
并且专门准备了cust1和cust2给用户开发使用。
这些Application都是基于TASK_APP提供的一些API和服务以及系统原有的底层调用来运行的。
官方5.0.4 SDK PDF说明文档里的这个图会清晰一点。但是实际逻辑还是要看过代码才能理清楚。

DA1458X_SDK_BLE_ARCH

DA1458X_SDK_APP_ARCH

原创粉丝点击