DA1458x SDK Software Layout 随笔

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 definition
enum 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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值