工具与软件:
我对 Multibuffer 的使用有一些问题。
1)在文件 IEEE-rxtx_handler.html (RX 多缓冲区的内部数据包格式)中、它将时间戳列为4字节。 "IEEE 802.15.4 Rx 帧条目示例"图中时间戳的具体顺序是什么?
2)时间戳是否使用与 RCL_Scheduler_getCurrentTime ()和 RCL_Scheduler_delta ()相同的格式? (SYSTIM、使用0.25us 阶跃)
3)在文件 rcl_buffer_management.html 中、Rx 的示例为多个数据包声明一个多缓冲区。
#define MULTI_BUF_SZ 2048 uint32_t multiBufferArray[MULTI_BUF_SZ / 4]; List_List multiBuffers = { 0 }; RCL_MultiBuffer *multiBuffer; RCL_MultiBuffer *multiBuffer = (RCL_MultiBuffer *) multiBufferArray;
但是、清除已消耗缓冲区的示例似乎依赖于声明的多个 Multibuffers。
List_List finishedBuffers; /* Prepare list of RX buffers that are done */ List_clearList(&finishedBuffers); /* Read out received packet */ RCL_Buffer_DataEntry *rxPkt = RCL_MultiBuffer_RxEntry_get(&rxCmd->rxBuffers, &finishedBuffers); /* Make finished buffers available to RCL command */ while ((multiBuffer = RCL_MultiBuffer_get(&finishedBuffers)) != NULL) { RCL_MultiBuffer_clear(multiBuffer); RCL_MultiBuffer_put(&multiBuffers, multiBuffer); }
我尝试了单缓冲区方法、并收到了多个数据包。 但是、我从未进入 while 循环以清除缓冲区。 我没有填满单个多缓冲器。 为了让 while 循环获取/清除缓冲区、它是否假设"multibuffers"列表中有多个 Multibuffer? 例如、声明要放置在"多缓冲区"中的64个32字节多缓冲区对象、而不是单个2048字节多缓冲区中。
4) 4)假设我创建了多个32字节的 MultiBuffer、如果数据包对于单个缓冲区来说太大、会发生什么情况? 它是否自动跨越多个 MultiBuffer?
5)在文件 rcl_buffer_management.html 的 transmit buffers 部分中、它引用宏 rcl_TxBuffer_len_u32。 如果将其与非通用 PHY 一起使用、SDK 中定义的 NUM_PAD 和 HDR_LEN 的相应值是否为(例如、与 ieee.h 或 ble5.h 相关的文件)?