用户工具

站点工具


cc2640r2f:ble_throughput

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
cc2640r2f:ble_throughput [2017/08/31 16:30]
127.0.0.1 外部编辑
cc2640r2f:ble_throughput [2021/06/22 23:14] (当前版本)
行 3: 行 3:
  
 ## 介绍 ## ## 介绍 ##
-本章分别测试了TI CC2640R2F LuanchPad和<a href="..\..\..\leconiot\cc13x0_cc26x0_evaluation_board\cc13x0_cc26x0_evaluation_board.html">LECONIOT CC2640R2F Evaluation Board</a>开发板吞吐量。我们提供了两个例程供大家参考测试,分别是`ble5_throughput_peripheral`和`ble5_throughput_central`。最后提供了测试程序下载链接。+本章分别测试了 TI CC2640R2F LaunchPad 和 <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:leconiot:cc13x0_cc26x0_evaluation_board:cc13x0_cc26x0_evaluation_board"> LECONIOT CC2640R2F Evaluation Board</a>开发板吞吐量,并提供了两个例程供大家参考测试,分别是 `ble5_throughput_peripheral` 和 `ble5_throughput_central` 。文末附对应测试程序下载链接。
  
 该工程中进行了一些修改以方便进行吞吐量测试: 该工程中进行了一些修改以方便进行吞吐量测试:
  
-- 改变项目MTU大小+- 改变项目 MTU 大小
 - 通过消息计数器发送通知 - 通过消息计数器发送通知
-- 增加Throughput配置文件+- 增加 Throughput 配置文件
 - 增加按键菜单 - 增加按键菜单
  
 ## 硬件环境 ## ## 硬件环境 ##
-使用USB连接<a href="..\..\..\leconiot\cc13x0_cc26x0_evaluation_board\cc13x0_cc26x0_evaluation_board.html">CC2640R2F Evaluation Board</a>确保跳线帽正确连接,如下图所示+使用 USB 连接 <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:leconiot:cc13x0_cc26x0_evaluation_board:cc13x0_cc26x0_evaluation_board">CC2640R2F Evaluation Board</a> 确保跳线帽正确连接,如下图所示
  
 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/ble_throughput/image/picture.jpg) ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/ble_throughput/image/picture.jpg)
  
 ## 参数修改 ## ## 参数修改 ##
-基本思想是不断发送GATT通知,尽可能减少开销,尽可能减少停机时间。以下参数在增加吞吐量时必须加以考虑+基本思想是不断发送 GATT 通知,尽可能减少开销,尽可能减少停机时间。 
 +以下参数在增加吞吐量时必须加以考虑
  
 ### ATT_MTU大小 ### ### ATT_MTU大小 ###
-有关最大传输单元(ATT_MTU)的说明,请参见<a href="..\..\..\ble_stack_app\stack\le_data_length_extension\le_data_length_extension.html">LE Data Length Extension</a>和 <a href="..\..\..\ble_stack_app\stack\l2cap\l2cap.html">Logical Link Control and Adaptation Layer Protocol (L2CAP)</a>+有关最大传输单元(ATT_MTU)的说明,请参见 <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:le_data_length_extension:le_data_length_extension">LE Data Length Extension</a> 和  <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:l2cap:l2cap"> Logical Link Control and Adaptation Layer Protocol (L2CAP)</a>
  
-这里定义6个Tx缓冲区,每个缓冲区251字节。用户应用程序应根据自身堆栈情况进行分配。如果没有足够的堆栈,可以通过减少`MAX_NUM_PDU`,这样可能导致吞吐量的损失。实际使用中的最坏情况是`MAX_NUM_PDU`和`MAX_PDU_SIZE`的乘积。设计人员应该根据设备的可用内存来平衡这些参数。+这里定义 6 个Tx缓冲区,每个缓冲区 251 字节。用户应用程序应根据自身堆栈情况进行分配。如果没有足够的堆栈,可以减少 `MAX_NUM_PDU` ,这样可能导致吞吐量的损失。实际使用中的最坏情况是 `MAX_NUM_PDU` 和 `MAX_PDU_SIZE` 的乘积,即缺乏堆栈时能减少的最大值。设计人员应该根据设备的可用内存来平衡这些参数。
 ````C ````C
 #define MAX_NUM_PDU                   6 #define MAX_NUM_PDU                   6
 #define MAX_PDU_SIZE                  251 #define MAX_PDU_SIZE                  251
 ```` ````
-> 注意:最好在options->C/C++ Compiler->Defined symbols里进行修改。+> 注意:最好在 options->C/C++ Compiler->Defined symbols 里进行修改。
  
-> 注意:MTU更新过程在连接之后主机自动发起和从机进行协商。选择双方支持最大MTU。+> 注意:MTU 更新过程在连接之后主机自动发起和从机进行协商。选择双方支持最大 MTU。
  
  
 ### LE 2M PHY ### ### LE 2M PHY ###
-这里使用2M PHY,使每个连接事件期间从PHY发送的数据增加一倍(需要连接之后通过按键菜单自行选择)。+这里使用 2M PHY,使每个连接事件期间从 PHY 发送的数据增加一倍(需要连接之后通过按键菜单自行选择)。
  
-### LE数据长度拓展 ### +### LE 数据长度拓展 ### 
-在蓝牙4.2规范中允许控制器发送最多251个字节的单个数据包这与以前的27个字节相比大大增加了吞吐量此功能称为数据长度拓展。有关这方面详细介绍请参考<a href="..\..\..\ble_stack_app\stack\le_data_length_extension\le_data_length_extension.html">LE Data Length Extension</a>以及 <a href="..\..\..\ble_stack_app\app_examples\exchange_mtu\exchange_mtu.html">BLE一次能传多少数据(ATT_MTU设置/LE Data扩展)</a>。 +在蓝牙 4.2 规范中允许控制器发送最多 251 个字节的单个数据包这与以前的 27 个字节相比大大增加了吞吐量此功能称为数据长度拓展。有关这方面详细介绍请参考 <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:le_data_length_extension:le_data_length_extension"> LE Data Length Extension</a> 以及 <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:app_examples:exchange_mtu:exchange_mtu"> BLE 一次能传多少数据( ATT_MTU 设置/LE Data 扩展)</a>。 
-下面的PDU更新过程的代码片段可以在`throughput_peripheral.c`文件中找到+下面的 PDU 更新过程的代码片段可以在 `throughput_peripheral.c` 文件中找到
 ````C ````C
 //examples\rtos\CC2640R2_LAUNCHXL\ble5apps\throughput_peripheral\src\app\throughput_peripheral.c SimpleBLEPeripheral_doSetDLEPDU line 1213 //examples\rtos\CC2640R2_LAUNCHXL\ble5apps\throughput_peripheral\src\app\throughput_peripheral.c SimpleBLEPeripheral_doSetDLEPDU line 1213
行 59: 行 60:
  
 ### 连接间隔 ### ### 连接间隔 ###
-根据前后处理数量,控制器需要2-3ms来准备下一个连接事件因此更长的连接间隔可以提高吞吐量。由于使用notify方式传输,更高的连接间隔意味着连接事件减少。此示例将使用100ms的连接间隔,请注意,在实际情况下更高的连接间隔有着明显的缺点:由于射频干扰导致的连接事件将大大降低吞吐量。因此用户需要根据所需吞吐量进行权衡当连接间隔大于100ms后,吞吐量将不会增加。+根据前后处理数量,控制器需要 2-3ms 来准备下一个连接事件因此更长的连接间隔可以提高吞吐量。由于使用 notify 方式传输,增加连接间隔意味着连接事件减少。此示例将使用 100ms 的连接间隔,在实际情况下增加连接间隔有着明显的缺点:由于射频干扰导致的连接事件将大大降低吞吐量。因此用户需要根据所需吞吐量进行权衡当连接间隔大于 100ms 后,吞吐量将不会增加。
  
  
 ### 通知排队 ### ### 通知排队 ###
-这段代码设计能保证队列中始终有需要发送的数据,以便在通知开始时不会处于饥饿状态。+这段代码设计能保证队列中始终有需要发送的数据,避免在通知开始时处于饥饿状态。
 ````C ````C
 //examples\rtos\CC2640R2_LAUNCHXL\ble5apps\throughput_peripheral\src\app\throughput_peripheral.c SimpleBLEPeripheral_blastData line 1329 //examples\rtos\CC2640R2_LAUNCHXL\ble5apps\throughput_peripheral\src\app\throughput_peripheral.c SimpleBLEPeripheral_blastData line 1329
行 104: 行 105:
 } }
 ```` ````
-本代码仅为最大吞吐量测试,在实际应用中,由于其他处理需求,应用程序可能无法维持此吞吐量(例如必须通过串口传输有效数据负载)。此外`blastData`函数最大限度的增加了数据的排队,因此`GATT_Notification`会返回非SUCCESS状态,例如队列已满时的`blePending`。Tx队列的深度由上面定义的`MAX_NUM_PDU`决定。+本代码仅为最大吞吐量测试,在实际应用中,由于其他处理需求,应用程序可能无法维持此吞吐量(例如必须通过串口传输有效数据负载)。此外 `blastData` 函数最大限度的增加了数据的排队,因此 `GATT_Notification` 会返回非 SUCCESS 状态,例如队列已满时的 `blePending`。Tx 队列的深度由 `MAX_NUM_PDU` 决定。
  
 ## 分组开销 ## ## 分组开销 ##
-主机和从机的有效数据载荷已经被优化为251字节这是吞吐量的最大值。然后,由于ATT和L2CAP级别的开销,并不是所有251个字节都可以用作应用程序数据这是蓝牙规范必须的的简要说明如下: +主机和从机的有效数据载荷已经被优化为 251 字节这是吞吐量的最大值。由于 ATT 和 L2CAP 级别的开销,并不是所有 251 个字节都可以用作应用程序数据这是蓝牙规范必须的对 ATT 和 L2CAP 的简要说明如下: 
-### ATT通知头 ### +### ATT 通知头 ### 
-所有ATT通知包具有标识 +所有 ATT 通知包具有标识 
-发送通知的属性的操作码和句柄所需的3字节头。 +发送通知的属性的操作码和句柄所需的 3 字节头。 
-发送ATT通知有3字节开销。+发送 ATT 通知有 3 字节开销。
  
 ### L2CAP头 ### ### L2CAP头 ###
-在L2CAP层,需要类似的开销来设置分组的长度+在 L2CAP 层,需要类似的开销来设置分组的长度
 和适当的信道标识符(CID)。 和适当的信道标识符(CID)。
-这些字段中的每一个都是16位(2字节),导致4个字节的L2CAP 开销。 +这些字段中的每一个都是 16 位( 2 字节),导致 4 个字节的 L2CAP 开销。 
-结合L2CAP和ATT数据包开销产生:+结合 L2CAP 和 ATT 数据包开销产生:
 ````C ````C
 TOTAL_PACKET_OVERHEAD = 7 bytes TOTAL_PACKET_OVERHEAD = 7 bytes
 ```` ````
 ## 测试结果 ## ## 测试结果 ##
-分别对PDU为27 Bytes和251 Bytes以及PHY为1 Mbps、2 Mbps、Coded:S2、Coded:S8.模式进行测试。下面给出表格方便查阅。+分别对 PDU 为 27 Bytes 和 251 Bytes 以及 PHY 为 1 Mbps、2 Mbps、Coded:S2、Coded:S8.模式进行测试。下面给出表格方便查阅。
  
 **TI CC2640R2F LaunchPad** **TI CC2640R2F LaunchPad**
行 132: 行 133:
 |251 Bytes|780.800 (kb/s)|1366.400 (kb/s)|175.680 (kb/s)|58.560 (kb/s)| |251 Bytes|780.800 (kb/s)|1366.400 (kb/s)|175.680 (kb/s)|58.560 (kb/s)|
  
-**<a href="..\..\..\leconiot\cc13x0_cc26x0_evaluation_board\cc13x0_cc26x0_evaluation_board.html">CC2640R2F Evaluation Board</a>**+**<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:leconiot:cc13x0_cc26x0_evaluation_board:cc13x0_cc26x0_evaluation_board"> CC2640R2F Evaluation Board</a>**
  
 |||||| ||||||
行 140: 行 141:
 |251 Bytes|780.800 (kb/s)|1366.400 (kb/s)|175.680 (kb/s)|58.560 (kb/s)| |251 Bytes|780.800 (kb/s)|1366.400 (kb/s)|175.680 (kb/s)|58.560 (kb/s)|
  
-可以看出我们的开发板和TI CC2640R2F LaunchPad在不同模式下速率是一致的。读者可以自行下载例程测试。下图展示了在2 Mbps/251bytes模式下的传输速率。+可以看出我们的开发板和 TI CC2640R2F LaunchPad在不同模式下速率是一致的。读者可以自行下载例程测试。下图展示了在 2 Mbps/251bytes 模式下的传输速率。
  
 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/ble_throughput/image/TI_PHY2Mbps_251B.jpg) ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/ble_throughput/image/TI_PHY2Mbps_251B.jpg)
行 148: 行 149:
 ## 测试用例下载 ## ## 测试用例下载 ##
  
-[](ble_throughput.zip)+[](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/ble_throughput/files/ble_throughput.zip)
  
-<p>下载 <a href="ble_throughput.zip" title="Title">+<p>下载 <a href="http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/ble_throughput/files/ble_throughput.zip" title="Title">
 BLE Throughput</a> 测试例程.</p> BLE Throughput</a> 测试例程.</p>
  
-> 注意:需要配合CC2640RF SDK使用,笔者目前使用的是`simplelink_cc2640r2_sdk_1_35_00_33`。文件解压后放在该SDK同级目录,即C:\ti。+> 注意:需要配合 CC2640RF SDK使用,本文使用的是 `simplelink_cc2640r2_sdk_1_35_00_33` 。文件解压后放在该 SDK 同级目录,即 C:\ti。
  
  
行 164: 行 165:
 </p> </p>
 </div> </div>
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
  
  
 </markdown> </markdown>
  
cc2640r2f/ble_throughput.1504168239.txt.gz · 最后更改: 2021/06/22 23:14 (外部编辑)