This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640:移植项目

Guru**** 1810550 points
Other Parts Discussed in Thread: BLE-STACK, CC2640, CC2650RC, CC2650
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/961870/cc2640-porting-projects

器件型号:CC2640
Thread 中讨论的其他部件:BLE-STACKCC2650RCCC2650

本页介绍了将旧版本的 TI Bluetooth (R)低耗能软件堆栈(BLE-Stack) v2.x SDK 安装程序中的项目移植到新版本所需的步骤。 与往常一样、建议在移植项目之前备份所有更改。 除了备份项目外、TI 建议在开发蓝牙智能应用之前对 BLE-Stack SDK 进行备份(zip)、该 SDK 通常安装在 C:\ti\simplelink\ble_cc26xx_2_0x_0y_nnnnn 中。
下面列出的过程假定开发人员熟悉《CC2640 BLE 软件开发人员指南》(SWRU393)中描述的 IDE 和构建环境概念。 开发人员指南的副本可在 BLE-Stack SDK 安装程序的"Documents"文件夹中找到。

从 BLEv2.2.1移植到 BLEv3.x

请参阅软件开发人员指南的"移植"一章。

LE Secure Connections 推荐参数

用于生成公钥/私钥对和 DH 密钥检查的底层 ECC 软件将锁定 BLE-Stack 任务约160ms。 在安全连接配对期间、此锁定将发生两次。 使用 LE Secure Connections 配对方法时、建议配置至少165ms 的监控超时、以防止在 ECDH 密钥操作期间链路断开。 此外、在这段时间内、应用程序应该被抢先/阻止。

注意:这仅影响使用 LE Secure Connections 功能的堆栈

将 BLEv2.2.1项目移植到 BLEv2.2.2

本节将介绍如何从 BLEv2.2.1更新到 BLE v2.2.2。 先前开发或更新为 BLE 2.2.1的应用源代码可轻松移植到 BLE 2.2.2、因为在这些版本之间未修改 BLE API。 显著的差异包括:

  • 更新了以使用 TI-RTOS SDK 2.21.01.08 (包含在 BLE-Stack SDK 安装程序中)。 建议使用此 TI-RTOS 版本的更新板级配置文件
  • 更新了 BLE 库并支持堆栈源代码。 这包括 GAPBondMgr、OAD、ECCROMCC26XX 驱动程序和 BLE_USER_CONFIG.c、后者是更新的射频覆盖和 ROM 补丁参数。 有关更改的完整列表、请参阅 BLE-Stack 发布说明
  • 更新了示例应用源文件(例如 simple_peripheral.c)、以便在*_processStackMsg 处理程序中处理 HCI_BLE_hardware_error_event_code 并将其置为有效。 这是可选的。

移植步骤

1.将项目文件、源文件和任何修改后的 BLE Stack 源文件从2.2.1安装程序复制到2.2.2安装程序、确保将任何更改与通用(非应用) SDK 文件合并。
2.验证应用程序的.customargvars (IAR)/.cproject 或.projectspec (CCS)指向 TI-RTOS 2.21.01.08和 XDCTools 默认安装路径中的资源。 可通过从 BLE 2.2.2 SDK 导入未修改的示例应用来检查这些应用。 这些是相同的参数、但值不同、如下所示针对 BLE 2.2.1。
3.在 IAR 7.80.4或 CCS v7.4中打开/导入您的项目。 请注意、CCS 项目现在使用 TI ARM 编译器16.9.4.LTS、RTSC 选项需要指定新的 TI-RTOS 版本。
=将 BLEv2.2.0项目移植到 BLEv2.2.1 =本节将介绍将项目从 BLEv2.2.0移植到 BLE v2.2.1的单向方法。 它假定您的项目的构造与默认堆栈项目相似。 也就是说、项目文件位于$install$/examples/cc2650em 下、源文件位于$install$/src/.中的相应文件夹下 它还假设您使用的是默认的.customargvars (IAR)/.cproject 或.projectspec (CCS)、它们使用 IAR/CCS 项目文件的相对位置来指向 BLE Stack 组件。 如果您的项目位于源安装程序的标准目录结构之外,并且使用这些变量的绝对路径,则需要手动修改这些路径以指向2.2.1安装程序中的相应目录。 在这种情况下、还需要手动修改应用程序项目中的.cfg 文件以指向2.2.1 .cfg ($install$/src/common/cc26xx/kernel/cc2640/config/cc2640.cfg)

移植步骤

1.将项目文件、源文件和任何修改后的 BLE Stack 源文件从2.2.0安装程序复制到2.2.1安装程序、确保将任何更改与通用文件合并。
由于.customargvars/.project 或.projectspec 中定义的许多环境变量使用项目文件的相对位置、因此应从步骤1成功更新这些变量。 但是、与新 RTOS 相关的路径需要手动更新。 应根据项目类型使用以下内容:

  • IAR .custom_argvars:

 用于2.2.1安装程序的 Argvars

  • CCS .project_spec:

 2.2.1 CCS 的环境变量

  • CCS:.project:


3.在新的 IAR (7.70.2)/CCS (6.2.0内部版本50或更高版本)中打开
在应用项目中、在 Drivers -> RF…下删除 rf.c 并添加$TI_RTOS_DRIVERS_BASE$\ti\DRIVERS\RF\RFCC26XX_Singlemode.c

5.在应用程序项目中,在 Drivers 下添加 TRNG 文件夹并添加以下文件:

  • $SRC_COMGN$\hal\src\target\_common\TRNGCC26XX.c
  • $SRC_common$\hal\src\target\_common\TRNGCC26XX.h



6.在堆栈项目中,将$SRC_BLE_CORE$/ROM 添加到预处理器搜索路径中
7.从 Startup 文件夹中删除 common_rom_init.c 和 rom_init.c、并添加$rom$\rom_jt.c

8.如果使用定义的“安全连接”功能(-dble_v42_features =secure_conns_CFG 或类似)进行构建,请将$SRC_EX$\host\sm_ecc.c 添加到“配置文件”文件夹:

优化闪存

以下有关最大限度增加应用闪存容量的提示是对 BLE 软件开发人员指南(docID SWRU393修订版 D)中第10.4节"优化低功耗蓝牙堆栈内存使用"的补充。

  • 如果未在堆栈 build_config.opt 中通过 GAP 绑定管理器(GAP_BUK_Mgr)启用配对/绑定支持、请在堆栈项目中设置以下预定义符号:
    • NO_BLE_SECURITY
    • 如果 OSAL_SNV=x 被定义、设定 OSAL_SNV=0、否则、定义 NO_OSAL_SNV。 这将删除 SNV 存储的闪存页分配
  • GATT 不需要使用 BT4.1 L2CAP_COC_CFG、并且智能手机兼容性有限或不兼容。 启用 BLE_V41_features = V41_CTRL_CFG 是外设+中央配置或需要多个从器件连接时所需的最低配置。
  • 如果不需要 GAP_BUK_Mgr 或应用程序不需要发送服务更改指示、则可以禁用对此功能的支持以节省闪存空间。 服务已更改需要使用 L2CAP 堆栈 build_config.opt 功能。 在堆栈预定义符号中设置以下内容以禁用对服务更改的支持:GATT_NO_SERVICE_CHANGEED

BLEv2.2.1的已知问题/变通办法

  • CCS 无法找到 simple_peripheral_cc2650em_app 项目的目标配置文件。 打开项目属性并选择"General"。 选中标记为"自动管理项目的目标配置"的复选框、并将"连接"更改为德州仪器 XDS100V3 USB 调试。
  • Host Test 不会自动响应 Connection 参数更新请求,而是允许应用程序指定响应参数。 必须在收到 GAP_LinkParamUpdateRequest 事件0x0612后40秒内使用 HCI_LERemoteConnectionParameterRequestReply 或 HCI_LEConnectionRemoteParameterRequestNegativeReply 手动发送响应。 有关使用 BTool 处理此请求的示例,请参见以下日志:

 处理连接参数更新请求的 BTool 过程

  • 由于 BLE-Stack v2.2.0和 v2.2.1使用的 TI-RTOS 射频驱动器中存在异常、因此在执行持续广播的更长时间(即超过1小时)时、广播(ADV)可能会停止。 权变措施是使用 TI-RTOS 时钟实例定期停止和重新启动 ADV。 请参阅随附 的 e2e.ti.com/.../Simple_5F00_peripheral_5F00_ble_5F00_221_5F00_advRestart.zip 、其中的修改由"ADV-Restart"代码注释表示。 请使用该补丁的修订版1.1。 建议的重启周期为30分钟、但可以通过更改 ADV_REST_EVT_PERIOD #define 来调整。 此文件与 BLE-Stack v2.2.1兼容、并且相同的过程可应用于 SDK 中的其他示例应用。 注意:TI 强烈建议使用 BLE 2.2.2、其中包含此问题的修复程序。
  • 由于 TI-RTOS 工程配置不正确、CCS 中的 CC2650远程控制(CC2650RC)"hid_adv_remote_cc2650rc_app"应用项目将无法链接。 打开项目属性 General -> RTSC 选项卡、在"TI-RTOS for CC13XX and CC26XX"下选择2.20.1.08。 重建项目。
  • 堆栈工程编译时出错:符号"ecc_initialize"重新声明为不兼容的类型。 当使用安全连接的项目使用 TI ARM 编译器 v5.2.6以外的 TI ARM 编译器构建在 CCS 中时、会发生此错误。 若要安装尚未安装的 TI ARM 编译器 v5.2.6、请参阅 TI BLE 软件开发人员指南的第2.6.3.2节。
  • CC2650 LaunchPad 示例应用的睡眠时钟精度(SCA)设置与此开发套件的实际32kHz 晶体精度不匹配。 这可能会导致意外的连接中断、尤其是连接间隔较长时。 要设置正确的 SCA、请在应用程序初始化函数中的 iCall_registerApp 之后调用以下 API:HCI_EXT_SetSCACmd (100);

将 BLEv2.1.1项目移植到 BLEv2.2

BLE 堆栈更改

BLE Stack 2.2是一个主要版本、它包含多个错误修复以及 BLE 2.2规范中的新功能。 有关更多详细信息、请参阅软件开发人员指南(SDG) v2.2。 新功能包括:

  • LE 安全连接
  • LE 数据长度扩展
  • LE 隐私1.2.

SDG 中描述了与其各自 API 关联的新 API。 以下 API 已从2.1更改为2.2:

iCall_API.c

void GAPBondMgr_SlaveReqSecurity(uint16 connHandle, uint8 authReq)
bStatus_t GAP_Bond(uint16 connectionHandle, uint8 authenticated,
                   uint8 secureConnections, smSecurityInfo_t *pParams, 
                   uint8 startEncryption)

外设.c

// Connection parameter update parameters.
static gapRole_updateConnParams_t gapRole_updateConnParams =
{
  .paramUpdateEnable = FALSE,
  .minConnInterval = DEFAULT_MIN_CONN_INTERVAL,
  .maxConnInterval = DEFAULT_MAX_CONN_INTERVAL,
  .slaveLatency = MIN_SLAVE_LATENCY,
  .timeoutMultiplier = DEFAULT_TIMEOUT_MULTIPLIER
};

static bStatus_t gapRole_startConnUpdate(uint8_t handleFailure, 
                                       gapRole_updateConnParams_t *pConnParams);

中央.c

uint8_t authReq = ((gapSlaveSecurityReqEvent_t *)pMsg)->authReq;
        
GAPBondMgr_SlaveReqSecurity(connHandle, authReq);

这些 API 中的大多数更改都是由于添加了其他参数以支持新功能。

除了新功能之外、BLE SDK 2.2的主要变化是新的目录结构。 此外、文件和文件夹名称的通用命名标准也采用了新的命名约定。 有关更多信息,请参见《软件开发人员指南 v2.2》中的第2.4节目录结构。


注意:要从 BLE v2.1.1之前的版本进行移植、我们建议按照移植指南逐步升级到该版本。

要从基于2.1到2.2的项目移植、我们建议手动将更改添加到2.2目录文件中、因为2.2版本中包含了大量更改。

main.c

复制复位矢量已从 main.c 中删除、因为它现在已在 RTOS 配置文件中进行配置。 这些选项在预编译命令选项中设置:"-cfgArgs NO_ROM=1、OAD_IMG_E=1、以使 RTOS 自动将复位矢量复制到 OAD 项目的 main.c 之前的 RAM 中。

TI-RTOS 更改

从 BLE SDK v2.1中使用的 TI-RTOS 到 v2.2有很大变化。 本 指南中详细介绍了一些 RTOS 更改

请参阅以下看门狗注意事项: https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/543091/1984008#1984008

显示驱动程序

已添加新的显示驱动程序。 例如、要将 UART 显示添加到 Launchpad、请在预处理器设置中定义/修改这些内容:

xDisplay_disable_all
xBOARD_DISPLAY_EXCLUDE_UART
Board_display_exclude_LCD

并打开显示屏以在 simple_peripheral.c 中使用 UART:

dispHandle = Display_open (Display_Type_UART、NULL);

要完全不使用显示、请定义

DISPLAY_DISABLE_ALL
Display_print()宏可以在项目中重新定义,以便输出到另一个调试模块。 例如、在 SPP BLE 项目中、它通过调试宏路由到 UART:

#  define Display_print0(handle, line, col, fmt) DEBUG(fmt); \
    DEBUG_NEWLINE()
#  define Display_print1(handle, line, col, fmt, a0) DEBUG(fmt); \
    DEBUG_NEWLINE()

将 BLE Bridge 项目移植到 LaunchPad

本节展示了将现有工程从 v2.1移植到 v2.2所需的一些更改示例。

需要添加以下文件:

  • 在项目中添加 SDI 文件夹
  • 在项目中排除简单 GATT 配置文件并添加串行端口配置文件

注意:确保禁用所有显示、因为 Launchpad 不包含显示、并且 SDI 使用 UART 发送数据。

必须进行以下修改:

  • 更改 MRDY_PIN 和 SRDY_PIN 的定义以匹配 SDI_CONFIG.h 中的板级文件:
#  elif defined(SDI_USE_UART)
#    define MRDY_PIN Board_BUTTON0
#    define SRDY_PIN Board_BUTTON1
#  endif
  • 添加新的电源驱动器:
#include <ti/drivers/Power.h>
#include <ti/drivers/power/PowerCC26XX.h>
  • 更改电源限制的定义名称:
// set constraints for Standby and idle mode
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
  • 更改 UART 结构名称的定义:
if (!UARTCharsAvail(((UARTCC26XX_HWAttrsV1 const *)(uartHandle->hwAttrs))->baseAddr))

BLEv2.2.0的已知问题/解决方法

  • 使用 TI 编译器 v15.12.2.LTS 在 CCS 中编译协议栈项目会导致链接器错误/编译失败。 在 v15.12.3.LTS 编译器更新中或通过更新工程以使用 TI 编译器 v5.2.7修复了这一问题。 软件开发人员指南(SWRU393)中提供了有关如何更新到 TI 编译器 v5.2.7的详细信息。
  • 当项目被复制到工作区时、SensorTag 应用项目无法在 CCS 上构建。 解决方法:导入工程时不要将工程复制到工作区-或使用此 E2E 帖子中的步骤更新工程
  • CCS v6.1.x 工程中的链接顺序可能不正确、这可能会导致链接错误的应用工程。 这可能会导致运行时出现未定义的行为。 若要解决此问题、可以对应用程序工程应用以下过程:
  1. 在应用项目中、展开 tools 文件夹、右键点击'ccs_linker_define.cmd'并选择 Exclude from Build
  2. 将链接器搜索路径${ORG_PROJ_DIR}/../../ccs/config 添加到项目属性-> ARM 链接器->文件搜索路径、如下所示
  3. 打开链接器文件(通常为'cc26xx_app.cmd')、并在文件顶部附近、但在存储器定义之前添加行"-l ccs_linker_defins.cmd"(无引号、小写破折号 L)。 请参阅下面的参考。
  • 当使用 OSAL_SNV=1 (堆栈项目的缺省设置)时、在首次加电后、SNV 数据可能会在复位后丢失。 要应用此修复程序、请在 ble_sdk_2_02_00_31\src\components \services\src\nv\cc26xx 中编辑 nspoop.c、并将{FF}添加到 中、如下所示 、这样 NV_FLASH 阵列定义如下:

const uint8 nv_flash[flash_page_size]={0xFF};

  • 使用 util.c 中不安全线程的非原子队列 API 可能导致内存泄漏 要应用修复程序、请按 此帖子所示编辑 ble_sdk_2_02_00_31\src\con\cc26xx 中的 util.c
  • 在 CCS 中使用"#pragma FUNCTION_OPTIONS (、"opt_level=X")选择性地对函数进行去优化以进行调试,可能会导致应用程序代码不起作用。 解决方法是将整个项目的优化级别设置为所需级别。 请注意、如果出现其他问题、请升级到更新的 TI 编译器以进行调试。 TI 不建议在未进行优化的情况下发布生产代码。

将 BLEv2.1.0项目移植到 BLEv2.1.1


BLE-Stack v2.1.1版本是现有 v2.1.0版本的维护版本。 大多数 v2.1.1更改都合并在库格式中、因此从 v2.1.0移植使用一个简化的过程。 要移植早期的 v2.0项目、建议首先移植到 v2.1.0、然后按照以下说明整合 v2.1.1更改。 有关 v2.1.1中的更改的详细列表、请参阅 BLE-Stack v2.1.1 SDK 安装程序中包含的版本说明。
=IAR & CCS 项目移植方向=
1.将项目文件从$2.1.0_install$\projects\ble\$project$移动(或复制)到$install\projects\ble\$project$,其中$2.1.0_install$是 v2.1.0堆栈的顶级安装目录,$install$是2.1.1堆栈的顶级安装目录,$project$是您的项目文件夹。
2.从 v2.1.0移植时,唯一需要合并到基于 v2.1.1的项目的源文件是$INSTALL$\PROJECes\ble\iCall\Application\bleUserConfig.c. 可从 ICallBLE 虚拟文件夹下的应用项目中的 IDE 访问该文件。 在正常情况下、在项目开发期间不会修改此文件。 但是、如果您对 bleUserConfig.c 进行了更改、请合并对 v2.1.1 bleUserConfig.c 版本的更改。
3A。 对于 IAR:从$project$\CC26xx\IAR 打开更新的 v2.1.1工程工作区。
3b. 对于 CCS:使用 Project->Import CCS Projects 将$PROJECT$\CC26xx\ccs 中的应用程序和堆栈项目导入您的工作区。
4.重建并保存项目。

将 BLEv2.0.0项目移植到 BLEv2.1.0

IAR 项目移植方向


1.将项目文件从$2.0.0_install$\projects\ble\$project$移动(或复制)到$install\projects\ble\$project$,其中$2.0.0_install$是2.0.0堆栈的顶级安装目录,$install$是2.1.0堆栈的顶级安装目录,$project$是您的项目文件夹。
2.如果您从应用程序文件夹之外的任何位置修改了任何文件,例如在配置文件$2.1.0_install$\projects\Profiles 中,则需要将更改与新的2.1.0版本合并。
3.使用 IAR >=7.40.2打开项目(现在位于2.1.0文件夹中)
4.出现提示时、选择 yes 进行转换以与新的 IAR 版本配合使用。
5.设备信息配置文件路径已更改。 如果这是项目的一部分、请从项目中删除旧文件(devinfoservice.c)(它将位于配置文件组中)。 然后从正确的路径($install\projects\ble\Profiles\DevInfo\CC26xx\devinfoservice.c)添加文件
6.$PROJECT$\Config 文件夹中有多个文件需要更新为2.1.0。 最简单的方法是删除此文件夹并从 SimpleBLEPeripheral 示例项目($install$\projects\ble\SimpleBLEPeripheral\CC26xx\IAR\Config)复制 Config 文件夹以供使用。 然后、如果在原始2.0.0项目中对这些文件中的任何一个进行了任何修改、请在此处复制这些修改。
7.同样、需要更新堆栈配置文件。 最简单的方法是将$PROJECE$\Stack\CC2640\buildConfig.opt 文件替换为$install\projects\ble\SimpleBLEPeripheral\CC26xx\IAR\Stack\CC2640\buildConfig.opt 文件。 然后进行任何所需的修改。
8.必须更新自定义参数变量才能使用新的 RTOS。 最简单的方法是将$project$中的2.0.0 .custom_argvars 文件替换为 simpleBLEPeripheral 工程中的.custom_argvars 文件:$install\projects\ble\SimpleBLEPeripheral\CC26xx\IAR\SimpleBLEPeripheral.custom_argvars)。 更改这些变量后、关闭并重新打开 IAR 工作区。
9.删除$PROJECT$\Application\CC2640\configPkg 和$PROJECT$\CC26xx\IAR\Config\src 文件夹以删除旧 RTOS 的任何残余。
10.编译并保存您的项目。

CCSProject 移植说明

导入旧项目

1.将项目文件从$2.0.0_install$\projects\ble\$project$移动(或复制)到$install\projects\ble\$project$,其中$2.0.0_install$是2.0.0堆栈的顶级安装目录,$install$是2.1.0堆栈的顶级安装目录,$project$是您的项目文件夹。
2.如果您从应用程序文件夹之外的任何位置修改了任何文件,例如在配置文件$2.1.0_install$\projects\Profiles 中,则需要将更改与新的2.1.0版本合并。
3.使用 CCS 6.1.0,使用 Project->Import CCS Projects 将$PROJECT$\CC26xx\ccs 中的应用程序和堆栈项目导入您的工作区。 您文件夹中的相关项目文件夹将被称为$workspace$。

应用程序项目修改

1.器件信息配置文件路径已更改。 如果这是项目的一部分、请从项目中删除旧文件(devinfoservice.c)(它将位于配置文件组中)。 然后从正确的路径($install\projects\ble\Profiles\DevInfo\CC26xx\devinfoservice.c)添加文件
2.$PROJECT$\CC6xx\ccs\Config 文件夹中有多个文件需要更新为2.1.0。 最简单的方法是删除此文件夹并从 SimpleBLEPeripheral 示例项目($install$\projects\ble\SimpleBLEPeripheral\CC26xx\ccs\Config)复制 Config 文件夹以供使用。 然后、如果在原始2.0.0项目中对这些文件中的任何一个进行了任何修改、请在此处复制这些修改。
3.在项目属性中,在“路径变量”选项卡的“资源->链接资源”下,更新以下名称:

CC26XXWARE = C:\ti\tirtos_simplelink_2_13_00_06\products\cc26xxware_2_21_01_15600
TI_RTOS_DRIVERS_BASE = C:\ti\tirtos_simplelink_2_13_00_06\packages

4.在 Main 选项卡的 General 下、选择 TI v5.2.4编译器
5.在 RTSC 标签页的常规下、选择2.13.0.06 TI-RTOS 并从下拉菜单中选择3.31.1.33版的 XDCTools。 然后从"Platforms"下拉菜单中重新选择 ti.platforms.simplelink:CC2640F128。
6.在 Build->ARM Compiler->Advanced Options->Predefined Symbols 下,删除__TI_Compiler_version=1定义
7.通过删除$project$\CC25xx\ccs\Config\src 和$workspace$\FlashROM\configPkg 文件夹(如果存在)来清理旧 RTOS。
8.从 ccsLinkerDefinites.cmd 和 ccsCompilerDefinites.bcfg 文件中删除所有未注释的行。 它们位于工具文件夹下。
9.尚未编译。

堆栈项目修改

需要更新堆栈配置文件。 最简单的方法是将$project$\CC26xx\IAR\Stack\CC2640\buildConfig.opt 文件替换为$install\projects\ble\SimpleBLEPeripheral\CC26xx\IAR\Stack\CC2640\buildConfig.opt 文件。 然后进行任何所需的修改。
2.在项目属性中,在“路径变量”选项卡中的“资源”->“链接资源”下,更新以下名称:

CC26XXWARE = C:\ti\tirtos_simplelink_2_13_00_06\products\cc26xxware_2_21_01_15600

3.从项目中删除 pwrmon.c 和 pwrmon.h 文件。 它们可在 HAL\Target\CC2650\Drivers 中找到
4.在 Main 选项卡的 General 下、选择 TI v5.2.4编译器
5.在 Build->ARM Compiler->Advanced Options->Predefined Symbols 下,删除__TI_Compiler_version=1定义
8.从 ccsLinkerDefinites.cmd 和 ccsCompilerDefinites.bcfg 文件中删除所有未注释的行。 它们位于工具文件夹下。

编译步骤

1.编译堆栈项目。 如果首次编译后出现边界错误、请再次编译。 如需更多信息、请参阅软件开发人员指南中的边界工具。
2.编译应用程序项目。
3.加载应用程序项目。
4.加载堆栈项目。

API 更改


att.h 中定义的结构的以下数组元素已从 uint8更改为 uint16:

  • 数字信息
  • 长度
  • 数字
  • NumHandles
  • NumGrps

GAP_RegisterForHCIMsgs()命令已更改为 GAP_RegisterForMsgs()。


3. gattService_t 结构有一个额外的 encKeySize 字段:

typedef struct
{
  uint16 numAttrs; //!< Number of attributes in attrs
  uint8 encKeySize;//!< Minimum encryption key size required by service (7-16 bytes)
  
  /** Array of attribute records. 
   *  NOTE: The list must start with a Service attribute followed by
   *        all attributes associated with this Service attribute. 
   */
  gattAttribute_t *attrs;
} gattService_t;

因此,GATTServApp_RegisterService()命令具有附加的加密密钥大小参数:

bStatus_t GATTServApp_RegisterService( gattAttribute_t *pAttrs,
                                       uint16 numAttrs, uint8 encKeySize,
                                       CONST gattServiceCBs_t *pServiceCBs )

4.连接事件回调命令现在可用于多个连接。 因此添加了 connHandle 参数:

hciStatus_t HCI_EXT_ConnEventNoticeCmd( uint16 connHandle, uint8 taskID, uint16 taskEvent );

5. HCI_EXT_GetNumConnCmd()命令已替换为 HCI_EXT_GetConnInfoCmd()命令。 更多信息、请参阅软件开发人员指南。
6.连接句柄参数已添加到 ggsAttrValueChange_t 函数类型:

typedef void (*ggsAttrValueChange_t)( uint16 connHandle, uint8 attrId );

7.已修改读写配置文件回调函数类型:PLEN 和 maxlen 参数已从 uint8更改为 uint16:

typedef bStatus_t (*pfnGATTReadAttrCB_t)( uint16 connHandle, gattAttribute_t *pAttr,
                                          uint8 *pValue, uint16 *pLen, uint16 offset,
                                          uint16 maxLen, uint8 method );
typedef bStatus_t (*pfnGATTWriteAttrCB_t)( uint16 connHandle, gattAttribute_t *pAttr,
                                           uint8 *pValue, uint16 len, uint16 offset,
                                           uint8 method );

8. RSSI 功能已从 GAPRole 转移到应用程序。 有关示例、请参见 simpleBLEcentral 项目(和中央 GAPRole)。

将驱动程序从 TI-RTOS 2.20或更高版本移植到 TI-RTOS 2.18


BLE-Stack v2.2附带 tirtos_cc13xx_cc26xx_2_18_00_03、所有软件测试都是使用该组合完成的。 因此、如果您想使用 BLE-Stack、不建议更改 TI-RTOS 版本。 我们在此为希望使用 tirtos_cc13xx_cc26xx_2_20_00_06或更高版本中发布的附加驱动程序的用户提供了权变措施。
请注意、此处我们以 simple_peripheral launchpad 为例。 您可以使用相同的指南来移植驱动程序、以便处理不同的板级配置文件。

导入驱动程序的步骤

1.将 TI-RTOS 2.18 (C:\ti_tirtos_cc13xx_cc26xx_2_18_00_03\products\tidrivers_cc13xx_cc26xx_2_16_01_13\packages/ti\drivers)中的 PWM 文件夹、驱动程序文件和板级文件文件夹重命名为不同的内容(可选、但推荐)





C:\ti_tirtos_cc13xx_cc26xx_2_18_00_03\products\tidrivers_cc13xx_cc26xx_2_16_01_13\packages/ti\boards



2.重命名 BLE 堆栈中的板级文件(C:\ti\simplelink\ble_sdk_2_02_00_31\src\boards)


3.将所需的驱动程序和板级配置文件从 TI-RTOS 2.20复制到 TI-RTOS 2.18 (为了方便起见,我们复制了所有新的驱动程序,因此除了复制和粘贴外,我们不需要对板级配置文件进行任何其他修改)
从 C:\ti_tirtos_cc13xx_cc26xx_2_20_00_06\products\tidrivers_cc13xx_cc26xx_2_20_00_08\packages/ti\drivers 到 C:\ti\tirtos_cc13xx_cc26xx_2_18_00_03\products\tidrivers_13xx_cc13xx_cc13xx_packages












从 C:\ti_tirtos_cc13xx_cc26xx_2_20_00_06\products\tidrivers_cc13xx_cc26xx_2_20_00_08\packages/ti\boards 更改为 C:\ti\tirtos_cc13xx_cc26xx_2_18_00_03\products\tidrivers_18_00_08\boards\cc13xx_cc13xx_cc13xx_packages


4.将所需的板级配置文件从 TI-RTOS 2.20复制到 BLE 堆栈
从 C:\ti_tirtos_cc13xx_cc26xx_2_20_00_06\products\tidrivers_cc13xx_cc26xx_2_20_00_08\packages/ti\boards 更改为 C:\ti\simplelink\ble_sdk_2_02_00_31\src\boards


注释掉 CC2650_LAUNCHXL.h 中的以下行(仅 BLE 堆栈中的板级配置文件需要)

 #define CC2650_LAUNCHXL 

继续针对 CCS 用户

5.将 simple_peripheral 导入 CCS,确保栈和应用的编译器版本>=5.2.6
6.在 Drivers 文件夹下添加虚拟文件夹,然后将文件拖到您创建的新文件夹中












7.确保文件的位置相对于 TI_RTOS_DRIVERS_BASE

















8.在文件 main.c 中添加以下代码

 #include <ti/drivers/PWM.h>; 


9.在 int main()中,添加

 PWM_init(); 


10.删除应用程序中的 FlashROM 文件夹,然后构建堆栈和应用程序。

继续供 IAR 用户使用

5.在 Drivers 文件夹下添加虚拟文件夹,然后将文件拖到您创建的新文件夹中














6.确保文件的位置相对于 TI_RTOS_DRIVERS_BASE





















7.在文件 main.c 中添加以下代码

 #include <ti/drivers/PWM.h>; 


8.在 int main()中,添加

 PWM_init(); 


9.重建 cc2650lp_app

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如对此主题有任何疑问、请点击黄色按钮、在本页右上角提出相关问题。