DA1458x SDK Software Layout 随笔

本文详细介绍了Dialog DA1458x SDK5.0.4版本中的软件分层架构,特别是针对BLE_stack、kernel、Profile和Application等关键部分。文中列举了各种Profile任务及其优先级,并解释了Profile和Application之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

DA1458x软件平台开发手册 DA1458x software platform Reference 3.2如何使用此文档 本文档的重点是作为参考,即开发人员不需要通读整个文档;读者的关键是熟悉本文中描述的概念,以便在开发过程中能够使用软件开发人员的指南,以获得所需的结果。 嵌入式,是新的和/或芯片对话框的da1458x系统软件开发平台(SOC)建议审查的内容,然后通过阅读从3.1节到4.8节,然后11节熟悉开发环境的支持。然后建议阅读和使用文档[ 15 ]。如果有人需要更好的理解,并且想深入研究某个特定的主题,他/她可以回到这个文档中,在这个引用中涉及这个主题的特定章节。为了更深入的分析,这个参考文件指向附录或其他文档中更深入的技术说明。 更详细地叙述具体的主题。 这个参考文档不打算提供对蓝牙低能耗的透彻理解,它既不包括内部数据的组织方式,也不涉及蓝牙设备如何相互通信以及设计支持的设计和应用时可能需要的关键设计决策和权衡。 它打算但是提供给软件开发商足够的理解对话的da1458x平台高级API的方法为BLE及其外围设备以及信心如何使发展更快、更好的应用程序时,使用da1458x SoC。蓝牙低能耗技术(2010)是蓝牙专用兴趣小组(SIG)发布的蓝牙4版核心规范的一部分。从4版本开始,蓝牙标准支持两种不同的无线技术系统:蓝牙低能量和基本利率(BR),通常被称为基本速率/增强数据率(BR / EDR)。 在蓝牙低功耗设计的早期阶段,SIG致力于以最小的功耗开发低复杂度的无线标准,并提供低带宽。 优化,从而使低成本应用。在这种情况下,蓝牙低能量被设计用来每次传输非常小的数据包,而消耗的功率明显少于 类似的BR / EDR设备。此外,它的设计还支持高效率的实现,具有严格的能源和硅预算,促进应用程序使用一个单一的硬币电池延长了一段时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值