下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。
自 FreeRTOS V10.1.0 开始,FreeRTOS+UDP 已从 (自 FreeRTOS V10.1.0 开始)。请参阅替代方案:FreeRTOS+TCP 堆栈 (此堆栈可配置为仅供 UDP 使用)。

FreeRTOS-Plus-UDP 配置
FreeRTOSIPConfig.h 头文件


FreeRTOS-Plus-UDP 应用程序必须提供一个 FreeRTOSIPConfig.h 头文件, 用于定义此页面上描述的参数。


硬件特定设置

ipconfigBYTE_ORDER

如果运行 FreeRTOS-Plus-UDP 的微控制器是大端, 则 ipconfigBYTE_ORDER 必须设置为 FREERTOS_BIG_ENDIAN。 如果微控制器 采用小 Endian,则 ipconfigBYTE_ORDER 必须设置为 FREERTOS_LITTLE_ENDIAN。 嵌入式网络基础和术语表页面的字节顺序和 Endian 部分 部分解释了 IP 网络中的字节顺序注意事项。


影响堆栈执行行为的常量

ipconfigUDP_TASK_PRIORITY

IP 堆栈执行自己的任务(尽管任何应用程序任务都可以 通过已发布的套接字 API 使用其服务)。 ipconfigUDP_TASK_PRIORITY 设置执行 IP 堆栈的任务的优先级。

优先级是 标准 FreeRTOS 任务优先级 因此,可采用从 0(最低优先级) 到 (configMAX_PRIORITIES - 1)(最高优先级)的任何值。 configMAX_PRIORITIES 是 在 FreeRTOSConfig.h 中定义的标准 FreeRTOS 配置参数(不是在 FreeRTOSIPConfig.h 中定义。)

相对于分配给使用 IP 堆栈的任务的优先级, 需要考虑分配给执行 IP 堆栈的任务的优先级。


ipconfigUDP_TASK_STACK_SIZE_WORDS

分配给 FreeRTOS-Plus-UDP 任务的堆栈的大小, 以字表示(而非字节数)。 FreeRTOS 包括可选堆栈溢出检测


ipconfigUSE_NETWORK_EVENT_HOOK

如果 ipconfigUSE_NETWORK_EVENT_HOOK 设置为 1 ,则 FreeRTOS-Plus-UDP 将在适当的时间调用网络事件钩子。 如果 ipconfigUSE_NETWORK_EVENT_HOOK 未设置为 1 ,则永远不会调用网络事件钩子。


ipconfigEVENT_QUEUE_LENGTH

使用 FreeRTOS 队列将事件从应用程序任务发送到 IP 堆栈。 ipconfigEVENT_QUEUE_LENGTH 设置可以 同时排队等待处理的最大事件数。 事件队列必须至少 比网络缓冲区的总数大 5。


影响套接字 API 行为的常量

ipconfigMAX_SEND_BLOCK_TIME_TICKS

套接字具有发送阻塞时间属性。 如果调用 FreeRTOS_sendto(), 但无法获取网络缓冲区,则调用任务将保持在阻塞 状态(以便其他任务可以继续执行) ,直到网络缓冲区 变为可用或发送阻塞时间到期。 如果发送阻塞时间过期, 则发送操作中止。

允许的最大发送阻塞时间 上限为 ipconfigMAX_SEND_BLOCK_TIME_TICKS 设置的值。 如果所有网络缓冲区都在使用中, 并且处理(并随后释放)网络缓冲区的任务本身在等待网络缓冲区时被阻塞, 设置最大允许发送阻塞时间的上限, 可防止死锁发生。

ipconfigMAX_SEND_BLOCK_TIME_TICKS 以 RTOS 滴答表示。 通过将以毫秒 为单位的时间除以 portTICK_PERIOD_MS, 可将以毫秒为单位的时间转换为以滴答为单位的时间。


ipconfigINCLUDE_FULL_INET_ADDR

实现 FreeRTOS_inet_addr() 需要使用相对较大的 字符串处理例程。 为节省代码空间,可选择是否进行完整的 FreeRTOS_inet_addr() 实现, 并提供了一个更小、更快的替代方案,称为 FreeRTOS_inet_addr_quick()。 FreeRTOS_inet_addr() 采用 点分十进制 IP(例如,“192.168.0.1”)作为其参数。 FreeRTOS_inet_addr_quick() 采用四个单独的数字八位字节 IP 地址 (例如,192、168、0、1)作为其参数。 如果 ipconfigINCLUDE_FULL_INET_ADDR 设置为 1,则 FreeRTOS_inet_addr() 和 FreeRTOS_indet_addr_quick() 均可用。 如果 ipconfigINCLUDE_FULL_INET_ADDR 未设置为 1,则仅 FreeRTOS_indet_addr_quick() 可用。


ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND

套接字的地址是其 IP 地址和端口号的 组合。 FreeRTOS_bind() 用于手动将端口号分配给套接字 (将套接字“绑定”到端口),但客户端套接字 通常不需要手动绑定(那些启动传出连接而不是 等待已知端口号上的传入连接的套接字)。 如果 ipconfigALLOW_SOCKET_SEND_WITH_BIND 设置为 1,则 对尚未绑定的套接字调用 FreeRTOS_sendto() 将导致 IP 堆栈自动将套接字绑定到 端口号(范围: socketAUTO_PORT_ALLOCATION_START_NUMBER 到 0xffff)。 如果 ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 设置为 0 ,则对尚未绑定的套接字调用 FreeRTOS_sendto() 将导致发送操作 中止。


影响 ARP 行为的常量

ipconfigARP_CACHE_ENTRIES

ARP 缓存是一个将 IP 地址映射到 MAC 地址的表。

如果 IP 堆栈 知道与 IP 地址关联的 MAC 地址或用于联系远程 IP 地址的路由器的 MAC 地址,则 IP 堆栈只能将 UDP 消息 发送到 地址。 从远程 IP 地址接收到 UDP 消息时, 会将 MAC 地址和 IP 地址添加到 ARP 缓存中。 如果 UDP 消息发送到 尚未出现在 ARP 缓存中的远程 IP 地址, UDP消息会被请求所需 MAC 地址信息的 ARP 消息 替换。

ipconfig ARP_CACHE_ENTRIES 定义 ARP 表中可同时存在的最大条目数。


ipconfigMAX_ARP_RETRANSMISSIONS

未引起 ARP 响应的 ARP 请求将被重新传输, 在中止该 ARP 请求之前,会重新传输 ipconfigMAX_ARP_RETRANSMISSIONS 最大次数。


ipconfigMAX_ARP_AGE

ipconfigMAX_ARP_AGE 定义从创建或刷新 ARP 表中的条目到 与由于过时而移除该条目之间的最大时间间隔。 已为接近最大存在时间的 ARP 缓存条目发送新的 ARP 请求 。

ipconfigMAX_ARP_AGE 的指定时间为几十秒, 因此 150 的值等于 1500 秒 (或 25 分钟)。*/


影响 DHCP 和 DNS 行为的常量

ipconfigUSE_DNS

将 ipconfigUSE_DNS 设置为 1 以包括基本的 DNS 客户端/解析器。 使用 DNS FreeRTOS_gethostbyname() API 函数使用。


ipconfigUSE_DHCP

如果 ipconfigUSE_DHCP 为1 ,则 FreeRTOS-Plus-UDP 将尝试检索 IP 地址、掩码、DNS 服务器地址和来自 DHCP 服务器的网关地址, 如果无法获取 IP 地址,则恢复为使用定义的静态地址。

如果 ipconfigUSE_DHCP 为 0 ,则 FreeRTOS-Plus-UDP 将不会 尝试从 DHCP 服务器获取其地址信息,而是立即使用定义的静态地址 信息。


ipconfigMAXIMUM_DISCOVER_TX_PERIOD

当 ipconfigUSE_DHCP 设置为 1 时,DHCP 请求将在 增加的时间间隔发送,直到从 DHCP 服务器接收到任何一个响应 并且被接受,或者传输间隔达到 ipconfigMAXIMUM_DISCOVER_TX_PERIOD。 如果重新传输时间间隔达到 ipconfigMAXIMUM_DISCOVER_TX_PERIOD,而未收到 DHCP 回复, 则 IP 堆栈将恢复使用作为参数传递给 FreeRTOS_IPInit(),如果 重新传输时间间隔达到 ipconfigMAXIMUM_DISCOVER_TX_PERIOD 且没有 。


ipconfigRAND32()

IP 堆栈调用 ipconfigRAND32() 以生成一个随机数, 然后将其用作 DHCP 事务号。 随机数生成 通过此宏执行,以使应用程序可以使用自己的随机数生成 方法。 例如,可能可以通过以下方式生成随机数: 来生成随机数。


影响 IP 和 ICMP 行为的常量

updconfigIP_TIME_TO_LIVE

定义传出 UDP 数据包中使用的生存时间 (TTL) 值。


ipconfigCAN_FRAGMENT_OUTGOING_PACKETS

如果 ipconfigCAN_FRAGMENT_OUTSOMING_PACKETS 设置为 1,则包含超过单个网络帧所能容纳的数据的 UDP 数据包 将被分割为多个 IP 数据包 。 另请参阅 ipconfigNETWORK_MTU 设置。 如果 ipconfigCAN_FRAGMENT_OUTSOMING_PACKETS 必须为 1,则 (ipconfigNETWORK_MTU - 28) 必须能被 8 整除。 将 ipconfigCAN_FRAGMENT_OUTSOMING_PACKETS 设置为 1 会 增加代码大小和执行时间。


ipconfigNETWORK_MTU

MTU 是网络帧的有效负载可以包含的最大 字节数。 对于普通以太网 V2 帧,最大 MTU 为 1500。 设置 较低的值可节省 RAM,具体取决于所使用的缓冲区管理方案。 如果 ipconfigCAN_FRAGMENT_OUTSOMING_PACKETS 必须为 1,则 (ipconfigNETWORK_MTU - 28) 必须能被 8 整除。


ipconfigREPLY_TO_INCOMMING_PINGS

如果 ipconfigREPLY_TO_INCOMMING_PINGS 设置为 1,则 IP 堆栈将 生成对传入 ICMP 回应 (ping) 请求的响应。


ipconfigSUPPORT_OUTGOING_PINGS

如果 ipconfigSUPPORT_OUTGOING_PINGS 设置为 1 ,则可使用 FreeRTOS_SendPingRequest() API 函数。


影响网络驱动因素行为的常量

ipconfigNUM_NETWORK_BUFFERS

ipconfigNUM_NETWORK_BUFFERS 定义 定义可用于 IP 堆栈的网络缓冲区总数。 网络缓冲区的总数是有限的, 以确保可由 IP 栈消耗的 RAM 总量限制为 预定值。 实际给网络缓冲区结构体分配存储区域的方式 不是固定的,而是可移植层的一部分。 最简单的 就是根据需要分配确切的存储量。


ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES

如果 ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES 设置为 1,则将丢弃 将丢弃不属于以太网 II 格式的以太网帧。 此选项包含在 未来潜在的 IP 堆栈开发中。


ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES

如果 ipconfigETHERNET_DRIVER_FILTERS_F RAM E_TYPES 设置为 1, 则以太网接口负责过滤掉 不需要的数据包。 如果以太网接口未实现此功能,则 将 ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES 设置为 0,以使 IP 堆栈 执行过滤(堆栈执行此操作的效率要低得多, 因为数据包已传递到堆栈中)。 如果 以太网驱动程序在硬件中进行了所有必要的过滤, 则可以通过使用 1 或 0 以外的值来删除软件过滤。


特定于 FreeRTOS-Plus-Nabto 的常量

ipconfigFREERTOS_PLUS_NABTO

将 ipconfigFREERTOS_PLUS_NABTO 设置为 1 以支持 Nabto 协议,或设置为 0 以 排除对 Nabto 协议的支持。 如果 ipconfigFREERTOS_PLUS_NABTO 设置为 1, 则项目必须包含 FreeRTOS-Plus-Nabto 源代码(或引用 预建的 FreeRTOS-Plus-Nabto 库)。







Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.