注意: 自 FreeRTOS V4.0.0 起,这些堆栈初始化 API 已被弃用
。请参阅
FreeRTOS_IPInit_Multi()
了解支持 IPv6、多个端点和多个接口的新 API。如需使用已弃用的 API ,请将
FreeRTOSIPConfig.h 头文件中的 ipconfigIPv4_BACKWARD_COMPATIBLE 设置为 1。
FreeRTOS_sockets.h
BaseType_t FreeRTOS_IPInit( const uint8_t ucIPAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
const uint8_t ucNetMask[ ipIP_ADDRESS_LENGTH_BYTES ],
const uint8_t ucGatewayAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
const uint8_t ucDNSServerAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
const uint8_t ucMACAddress[ ipMAC_ADDRESS_LENGTH_BYTES ] );
初始化 FreeRTOS -Plus- TCP 堆栈。 FreeRTOS_IPInit() 必须在
任何其他 FreeRTOS-Plus-TCP 函数之前调用。
ipip_ADDRESS_LENGTH_BYTES 定义为 4。 ipMAC_ADDRESS_LENGTH_BYTES
定义为 6。
参数:
ucIPAddress
|
如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOSIPConfig.h 中),
那么网络节点的 IP 地址是静态的,
并根据 ucIPAddress 的值配置。
如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP
将尝试从 DHCP 服务器获取 IP 地址。 如果
无法获取 IP 地址,那么网络节点
将恢复为使用根据 ucIPAddress 的值配置的静态 IP 地址
。
IP 地址表示为四字节数组,
其中索引 0 处保存 IP 地址的第一个八位字节,
索引 3 处保存 IP 地址的最后一个八位字节。 请参阅
下方示例。
|
ucNetmask
|
如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOS IPConfig.h 中),
那么网络节点的网络掩码是静态的,
并根据 ucNetmask 的值配置。
如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP
将尝试从 DHCP 服务器获取网络掩码。 如果
无法获取网络掩码,那么网络节点
将恢复为使用根据 ucNetMask 的值配置的静态网络掩码
。
网络掩码表示为四字节数组,
其中索引 0 处保存网络掩码的第一个八位字节,
索引 3 处保存网络掩码的最后一个八位字节。 请参阅
下方示例。
|
ucGatewayAddress
|
如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOSIPConfig.h 中)
那么网络网关的 IP 地址是静态的,
并根据 ucGatewayAddress 的值配置。
如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP
将尝试从 DHCP 服务器获取网络网关的 IP 地址
。 如果无法获取网络网关的 IP 地址,
那么网络节点将恢复为使用
根据
ucGatewayAddress 的值配置的静态 IP 地址。
IP 地址表示为四字节数组,
其中索引 0 处保存 IP 地址的第一个八位字节,
索引 3 处保存 IP 地址的最后一个八位字节。 请参阅
下方示例。
|
ucDNSServerAddress
|
如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOSIPConfig.h 中),
那么 DNS 服务器的 IP 地址是静态的,
并根据 ucDNSServerAddress 的值配置。
如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP
将尝试从 DHCP 服务器获取 DNS 服务器的 IP 地址
。 如果无法获取 DNS 服务器的 IP 地址,
那么网络节点将恢复为使用
根据
ucDNSServerAddress 的值配置的静态 IP 地址作为 DNS 服务器的地址。
IP 地址表示为四字节数组,
其中索引 0 处保存 IP 地址的第一个八位字节,
索引 3 处保存 IP 地址的最后一个八位字节。 请参阅
下方示例。
|
ucMACAddress
|
网络节点的 MAC 地址。
MAC IP 地址表示为六字节数组
其中索引 0 处保存 MAC 地址的第一个八位字节,
索引 5 处保存 MAC 地址的最后一个八位字节。 请参阅
下方示例。
|
返回:
如果TCP/IP 堆栈初始化成功,则返回 pdPASS。
如果 TCP/IP 堆栈因为以下原因未初始化,则返回 pdFAIL:
FreeRTOS_IPInit() 之前已调用过,
或无法创建网络缓冲区或 IP 任务。RTOS
用法示例:
#include "FreeRTOS_sockets.h"
static const uint8_t ucIPAddress[ 4 ] = { 192, 168, 0, 200 };
static const uint8_t ucNetMask[ 4 ] = { 255, 255, 255, 255 };
static const uint8_t ucGatewayAddress[ 4 ] = { 192, 168, 0, 1 };
static const uint8_t ucDNSServerAddress[ 4 ] = { 208, 67, 222, 222 };
static uint8_t ucMACAddress[ 6 ] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 };
void aFunction( void )
{
FreeRTOS_IPInit( ucIPAddress,
ucNetMask,
ucGatewayAddress,
ucDNSServerAddress,
ucMACAddress );
}
Example use of the FreeRTOS_IPInit() API function
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.