当前位置:文档之家› CycloneTCP协议栈移植与使用简介

CycloneTCP协议栈移植与使用简介

Arda Technology

Arda Tech P.F.FU 2014-12-19 Ver 0.1

#elif defined(USE_XXXXXX)

#include "os_port_xxxxxx.h"

NicType type;//控制器类型。0:以太网接口,1:PPP接口,2:6LowPan接口

NicInit init;//控制器初始化函数指针

NicTick tick;//控制器周期性事务处理函数指针

NicEnableIrq enableIrq;//打开控制器中断函数指针

NicDisableIrq disableIrq;//关闭控制器中断函数指针

NicEventHandler eventHandler;//控制器中断响应函数指针,这个是下半段的中断处理部分。

NicSetMacFilter setMacFilter;//配置多播MAC地址过滤函数指针

NicSendPacket sendPacket;//发送包函数指针

NicWritePhyReg writePhyReg;//写PHY寄存器函数指针

NicReadPhyReg readPhyReg;//读PHY寄存器函数指针

bool_t autoPadding;//是否支持自动填充

bool_t autoCrcGen;//是否支持自动生成CRC校验码

bool_t autoCrcCheck;//是否支持自动检查CRC错误

NicSendControlFrame sendControlFrame;//发送控制帧函数指针

NicReceiveControlFrame receiveControlFrame;//接收控制帧函数指针

NicPurgeTxBuffer purgeTxBuffer;//清除发送缓冲函数指针

NicPurgeRxBuffer purgeRxBuffer;//清除接受缓存函数指针

xxxxEthInitGpio(...)//用于在init中初始化GPIO。

xxxxEthInitDmaDesc(...)//用于在init中初始化DMA任务描述符列表。

XXXX_Handler(...)//用于MAC中断的上半段处理。

xxxxEthReceivePacket(...)//用于在eventHandler中收包,把数据从dma的缓冲复制到外部缓冲。xxxxEthCalcCrc(...)//计算CRC值,这个函数基本上是固定的。

xxxxEthDumpPhyReg(...)//用于调试的打印PHY寄存器列表值。

PhyInit init ;//物理层初始化函数指针

PhyTick tick ;//周期性事务处理函数指针 PhyEnableIrq enableIrq ;//打开物理层中断 PhyDisableIrq disableIrq ;//关闭物理层中断 PhyEventHandler eventHandler ;//物理层中断处理函数

#include"core/tcp_ip_stack.h"//必须要有的协议栈头文件

#include"drivers/tm4c129x_eth.h"//MAC驱动头文件,如果用了片外PHY,还要包含PHY的驱动头文件#include"dhcp/dhcp_client.h"//使用DHCP的话需要此头文件

#include"ipv6/slaac.h"//使用IPV6本地短地址的话需要此头文件

#include"common/debug.h"//如果你用了CycloneTCP的调试输出函数,则需要包含此头文件

//Application configuration

#define APP_MAC_ADDR"00-11-22-33-44-55"//定义MAC地址

#define APP_USE_DHCP ENABLED//DHCP开关,使用DHCP

#define APP_IPV4_HOST_ADDR"192.168.1.20"//静态地址时的IPV4 IP

#define APP_IPV4_SUBNET_MASK"255.255.255.0"//静态地址时的IPV4 子网掩码

#define APP_IPV4_DEFAULT_GATEWAY"192.168.1.1"//静态地址时的IPV4 网关IP

#define APP_IPV4_PRIMARY_DNS"8.8.8.8"//静态地址时的IPV4 主DNS IP

#define APP_IPV4_SECONDARY_DNS"8.8.4.4"//静态地址时的IPV4 从DNS IP

#define APP_USE_SLAAC DISABLED//SLAAC开关,禁用SLAAC

#define APP_IPV6_LINK_LOCAL_ADDR"fe80::407"

#define APP_IPV6_PREFIX"2001:db8::"

#define APP_IPV6_PREFIX_LENGTH 64

#define APP_IPV6_GLOBAL_ADDR"2001:db8::407"

#define APP_IPV6_ROUTER"fe80::1"

#define APP_IPV6_PRIMARY_DNS"2001:4860:4860::8888"

#define APP_IPV6_SECONDARY_DNS"2001:4860:4860::8844"

//Constant definitions

#define APP_SERVER_NAME""//应用层访问的地址

#define APP_SERVER_PORT 80//应用层访问的端口

#define APP_REQUEST_URI"/test.php"//应用层访问的远端文件路径

DhcpClientSettings dhcpClientSettings;//DHCP客户端配置DhcpClientCtx dhcpClientContext;//DHCP客户端上下文,运行时变量SlaacSettings slaacSettings;//短地址配置

SlaacContext slaacContext;//短地址上下文,运行时变量

error_t error;

NetInterface *interface;//网络接口结构指针

MacAddr macAddr;//MAC地址变量

#if (APP_USE_DHCP == DISABLED)

Ipv4Addr ipv4Addr;//IPV4地址变量

#endif

#if (APP_USE_SLAAC == DISABLED)

Ipv6Addr ipv6Addr;//IPV6地址变量

#endif

//Start-up message

TRACE_INFO("\r\n");

TRACE_INFO("***********************************\r\n");

TRACE_INFO("*** CycloneTCP HTTP Client Demo ***\r\n");

相关主题