pxGetNetworkBufferWithDescriptor()
[以太网驱动程序移植 API]
FreeRTOS_IP_Private.h
NetworkBufferManagement.h
NetworkBufferDescriptor_t *pxGetNetworkBufferWithDescriptor( size_t xRequestedSizeBytes,
TickType_t xBlockTimeTicks );
发送到网络或从网络接收的数据
存储在网络缓冲区中。 网络缓冲区基本上只是一个
RAM 块(实际是源代码中的 uint8_t 数组)。
嵌入式 TCP/IP 堆栈需要首先定位网络缓冲区,
一旦定位就能知道网络缓冲区的大小。 网络缓冲区
描述符即用于此目的。
pucPayloadBuffer 指向网络缓冲区的起点。
xDataLength 保存缓冲区的大小(以字节为单位),不包括以太网 CRC 字节。
更多信息请参阅
网络缓冲区描述符描述如何移植
FreeRTOS-Plus-TCP 到新设备。
pxGetNetworkBufferWithDescriptor() 获取网络缓冲区和关联的网络缓冲区描述符。 如果
xRequestedSizeBytes 为 0,则自行获取网络缓冲区描述符,
而没有网络缓冲区。
不能从中断服务程序 (ISR) 调用 pxGetNetworkBufferWithDescriptor()。
网络缓冲区描述符的总数由
ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS 设置。
参数:
xRequestedSizeBytes
|
要从返回的网络缓冲区描述符中获取和引用的
以太网缓冲区的大小。 指定大小时,
以字节为单位。
如果 xRequestedSizeBytes 为 0,则返回的网络
缓冲区描述符将不会引用以太网缓冲区
(引用设置为 NULL)。
|
xBlockTimeTicks
|
如果网络缓冲区不可用,则调用的 任务RTOS
将保持为阻塞状态(以便可以执行
其他任务),直到网络缓冲区可用
或指定的阻塞时间到期。
指定阻塞时间时,以 RTOS tick 为单位。 要将
以毫秒为单位指定的时间转换为
以 RTOS tick 为单位指定的时间,请将以毫秒为单位指定的时间除以
portTICK_PERIOD_MS 转换为 tick。
|
返回:
若调用成功,则返回指向已获取的网络缓冲区描述符的指针
。 若调用失败,则返回 NULL。
用法示例:
有关示例,请参阅
将 FreeRTOS 移植到不同的微控制器
页面。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.