下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

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.