蓝牙芯片自主接入

更新时间:2024-04-17 07:13:01下载pdf

本文介绍如何自主接入蓝牙芯片。以下步骤描述以 nRF52832 为例。

流程概述

关于如何自主接入蓝牙芯片,流程如下所示:

开发者(您)涂鸦提供申请信息准备 SDK 和测试用例提供 SDK 和测试用例移植 SDK 并完成自测提供测试结果进行产品开发归档测试结果开发者(您)涂鸦

步骤 1:您提供申请信息

如果您想使用 TuyaOS 开发框架进行产品开发,但是 TuyaOS 不支持您使用的芯片平台,此时可以通过 TuyaOS 移植的方式,向 TuyaOS 开发者团队申请。审批通过后,即可获取适用于期望芯片平台的 TuyaOS SDK 模式的开发框架,然后自主地进行 TuyaOS Kernel 接口的适配、调试和验证。移植完成之后,即可进行产品的开发。

准备工作

移植之前,要完成一些准备工作:

申请模板

准备工作完成后,按照 TuyaOS 移植申请模板,发送邮件联系您在涂鸦的接口人。

TuyaOS 移植申请模板

标题:三方平台自主接入申请 - 蓝牙

  • 申请人:<涂鸦 IoT 开发平台账号>

  • 企业:<申请人所属企业>

  • 联系方式:<申请人的联系方式,手机号码>

  • 申请原因:<提供详细的申请原因和用途,有效地提高审批效率>

  • 开发类型:<联网单品/网关/中控/IPC/Zigbee/蓝牙/NB-IoT>

  • 备注:<其他一些特别需求,需要详细描述>

芯片详情:

  • 名称:<芯片名称,英文,例如 nRF52832 >

  • 厂商:<芯片生产厂商简写,英文,例如 Nordic >

  • 型号:<芯片型号,英文,例如 nRF52832 >

  • 架构:<芯片架构,例如 ARM Cortex-M4 >

  • 芯片类型:<芯片分类:Wireless SoC/MCU>

  • 通信类型:<芯片的通信类型,仅 Wireless SoC 需要选择,包括 Ethernet/Wi-Fi/Wi-Fi& Bluetooth LE/Bluetooth/Zigbee/Cellular/NB-IoT>

  • bit 位宽:<芯片总线位宽,16 位/32 位/64 位>

  • 操作系统:<芯片操作系统类型:Linux/RTOS/Non-OS>

  • 大小端:<小端/大端>

开发环境:

  • 开发工具,例如 Keil
  • 开发工具版本,例如 V5.28.0.0,可添加截图
  • 电脑系统要求,例如 Windows 10 及以上,写您已知的要求即可
  • 开发环境搭建步骤,详细且具备实操性,需要在新电脑上面验证过(十分重要,需要写清楚安装什么路径下的什么软件,点击什么位置)
  • 编译并生成 C 语言库文件的详细步骤及示例程序(十分重要,需要写清楚点击什么位置,配置什么信息,有可能遇到什么异常,需要怎么处理)
  • (上述两步骤的目的:涂鸦需要基于开发者提供的教程,将涂鸦 SDK 中的一部分源代码生成库文件,然后将库文件加入到涂鸦 SDK 中并释放给开发者。涂鸦对于开发者的开发环境并不熟悉,所以需要开发者提供生成 C 语言库的详细教程,这是三方芯片导入的前提。更多信息,参考 教程模版
  • 相关资料压缩包,压缩包名称要求:TuyaOS_SDK_公司名称\_芯片型号,例如 TuyaOS_SDK_xxxx_nRF52832

开发环境资料及使用说明详见附件:TuyaOS_SDK_xxxx_nRF52832

收件人:详询涂鸦对接人(包含对接的涂鸦商务、PM 等

邮件发送完成后,等待审批结果。

如果审批通过,则可以通过 Tuya Wind IDE,选择 TuyaOS SDK 模式,以及对应的开发框架、类型开发包、芯片平台来下载所需开发框架。更多信息,查看教程

注意:SDK 中存在一些安全相关的 C 语言库文件,涂鸦根据您提供的芯片开发环境,对这些文件进行编译生成库文件。因此,您提供的开发环境相关信息以实用性为主,以便提供一个生成库文件的环境及相关信息,帮助涂鸦对接人员快速了解环境,以期更好地为您服务。

步骤 2:涂鸦准备并提供 SDK 和测试用例

涂鸦准备并提供 SDK,完成三方芯片自主对接的完整流程。

完成IDE审批流程
后台新增芯片型号及资料
生成安全库
打包SDK
以白名单形式发布SDK
  1. IDE 审批流程,目前由人工完成,后续会由 IDE 接管。

  2. 后台新增芯片型号及资料,目前由人工完成,后续会由自动化工具生成。

    涂鸦对接人员会根据 步骤 1 中收到的相关资料生成库文件,目前蓝牙开发包核心组件库只有 3 个。已导入芯片平台位于 .\software\TuyaOS\libs 文件夹,自主接入芯片平台将位于 .\software\TuyaOS\vendor\nrf52832_ble\sdk\lib 文件夹。

  3. 安全库生成,人工操作。

  4. SDK 打包流程,人工操作。将库文件、源文件及其他相关资料打包后形成 SDK。

  5. SDK 以白名单形式发布到 Tuya Wind IDE 平台,人工操作。关于如何获取 SDK,参考 TuyaOS 开发蓝牙产品之环境搭建

步骤 3:您移植 SDK

体验

在开始移植之前,强烈建议您先体验 已导入的芯片平台,再开始移植您自己的芯片平台。很多问题都可以参考已导入的芯片平台。

体验步骤一般为:

按顺序阅读 涂鸦开发者论坛TuyaOS 快速入门 相关资料,根据资料获取相关开发包并体验。

移植一般分为三个阶段性目标:

  1. 将相关文件放置到指定位置。

  2. 添加源文件/头文件并编译通过。

  3. 实现接口并测试通过。

移植的所有工作都位于 .\software\TuyaOS\vendor 文件夹内,请勿修改其他位置的文件及代码。

移植

准备工作完成后,就可以开始移植。详细的移植步骤如下:

  1. 打开 步骤 2 获取的 SDK。

  2. 将芯片原厂的 SDK 放置到 .\software\TuyaOS\vendor\xxxx_ble\sdk 目录下。

  3. 将以下文件夹内的所有源文件和库文件添加到芯片原厂提供的示例工程中。

    .\software\TuyaOS\apps\tuyaos_demo_ble_peripheral //tuyaos_demo_ble_peripheral 可能是其他的名字
    .\software\TuyaOS\components\……\src //"\software\TuyaOS\components"文件夹下的所有子文件夹
    .\software\TuyaOS\libs //为空则不添加
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\bluetooth
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\drivers
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\include
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\system
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\utilities
    .\software\TuyaOS\vendor\nrf52832_ble\sdk\lib
    
  4. 将以下头文件目录添加到芯片原厂提供的示例工程中。

    .\software\TuyaOS\apps\tuyaos_demo_ble_peripheral
    .\software\TuyaOS\apps\tuyaos_demo_ble_peripheral\include
    .\software\TuyaOS\components\……\include //"\software\TuyaOS\components"文件夹下的所有子文件夹
    .\software\TuyaOS\include //"\software\TuyaOS\include"文件夹下的所有含头文件的子文件夹
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\include
    .\software\TuyaOS\vendor\nrf52832_ble\sdk\lib //".\software\TuyaOS\vendor\nrf52832_ble\sdk\lib"文件夹下的所有含头文件的子文件夹
    
  5. 尝试修改代码,直到编译通过。

  6. 根据 .\software\TuyaOS\include\vendor\adapter 里的头文件和 \software\TuyaOS\vendor\ats2835x_bt_le\tuyaos_doc 里的 API 文档说明,实现涂鸦 Tuya Kernel Layer(TKL)层接口,所有接口位于以下文件夹的源文件中:

    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\bluetooth
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\drivers
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\include
    .\software\TuyaOS\vendor\nrf52832_ble\tuyaos\system
    

    不需要实现所有的接口,可参考 已导入的芯片平台,实现相同的接口即可。

    如果在移植过程中遇到任何问题,请在 TuyaOS 开发者论坛 TuyaOS-蓝牙设备开发 版块通过发帖的方式寻求帮助。涂鸦有机器人实时关注论坛上帖子的情况,实时为您解决问题。

步骤 4:您自测并提供结果

您结合涂鸦提供的测试用例和 已导入的芯片平台 进行自测,通过所有测试用例,实现 已导入的芯片平台 的同等功能或其他高级功能,并将测试结果发送给对接人。

测试过程中出现问题的排查方法:

步骤 5:您进行产品开发

在完成 TuyaOS 移植工作并自测完成后,您根据需要进行产品业务开发,也可以将 SDK 提供给第三方开发者进行产品开发。

为了方便其他开发者的使用,您在移植工作完成后,建议仿照已导入的芯片平台完成《平台功能说明》文档,例如 nRF52832 平台功能说明

步骤 6:涂鸦将测试结果归档

涂鸦对接人将测试结果和《平台功能说明》文档进行归档。

支持 RTOS 的芯片注意事项

大部分常用的蓝牙芯片不支持 RTOS,所以上述流程是针对非 RTOS 芯片进行介绍的。

如果要基于 TuyaOS 蓝牙 LE SDK V3.9.0 版本接入支持 RTOS 的蓝牙芯片,按照以下步骤进行操作。单击此处下载 涉及到的文件。

  1. 替换 \software\TuyaOS\apps 路径下的 tuyaos_demo_ble_peripheral 文件夹。

  2. 替换 \software\TuyaOS\components\tal_ble_protocol\src 路径下的 tuya_ble_port.ctuya_ble_main.c 文件。

  3. \software\TuyaOS\vendor\xxxx_ble\tuyaos\system 路径(其中 xxxx_ble 是由您要接入的芯片平台决定)下,新增 tkl_thread.ctkl_queue.c 文件。

  4. 根据芯片平台,重新实现 tkl_thread.ctkl_queue.c 文件中的接口。当前内容为 FR801x 平台的接口实现,供您参考。

  5. 如果芯片 RAM 不足,可使用 OS 相关接口重新实现 tkl_memory.c 中的接口,否则不建议改动。

  6. 其他内容与 NO-OS(不支持 RTOS)的移植过程相同,参考上文中的 步骤 1~步骤 6

除了 fr801x_ble_os 以外,涂鸦已导入的芯片平台都是非 RTOS 芯片。fr801x_ble_os 下载方式如下:

  • 开发模式:TuyaOS OS 开发

  • 类型开发包:子设备开发/蓝牙设备开发包

  • 开发平台:Wireless SoC/FREQCHIP/Bluetooth/FR8018HA

  • TuyaOS 版本:TuyaOS-3.9.4

下载之前,联系产品经理添加白名单。